Hôm nay, chúng tôi đã thông báo về tính khả dụng chung của Trình kết nối MariaDB / C ++. Ngôn ngữ C ++ được biết đến với tính hiệu quả, tính linh hoạt và khả năng mở rộng. Trên thực tế, nó thường được sử dụng trong các ngành như fintech và trò chơi, nơi các ứng dụng yêu cầu độ trễ và đồng thời có thể dự đoán được. Với MariaDB Connector / C ++, các nhà phát triển có thể sử dụng trình kết nối mới trong ứng dụng của họ để kết nối nguyên bản với Máy chủ MariaDB tại chỗ và trong đám mây trên MariaDB SkySQL.
Trong bài viết này, tôi sẽ giới thiệu với bạn về Trình kết nối MariaDB / C ++ với các ví dụ đơn giản chứng minh các tương tác tạo, đọc, cập nhật và xóa (CRUD) với dữ liệu được lưu trữ trong MariaDB. Cụ thể hơn, tôi sẽ hướng dẫn chi tiết quá trình tạo ứng dụng bảng điều khiển C ++ cho phép bạn thực hiện các thao tác đơn giản để quản lý các tác vụ. Nhưng nói đủ rồi, hãy bắt đầu!
Tải xuống và cài đặt
Để sử dụng MariaDB Connector / C ++, bạn cần có quyền truy cập vào một phiên bản của MariaDB Server. Có nhiều cách khác nhau để bạn có thể bắt đầu với MariaDB trên máy cục bộ, tại chỗ hoặc thậm chí trên đám mây.
- Tải xuống và cài đặt Máy chủ Cộng đồng MariaDB
- Trực tiếp
- Sử dụng hình ảnh Docker
- Tải xuống và cài đặt Máy chủ Doanh nghiệp MariaDB
- Triển khai với MariaDB SkySQL, cơ sở dữ liệu đám mây MariaDB tối tân
Sau khi thiết lập phiên bản Máy chủ MariaDB, bạn có thể làm theo các bước được cung cấp trong tài liệu MariaDB Enterprise để biết hướng dẫn về cách tải xuống và cài đặt MariaDB Connector / C ++.
Chuẩn bị máy chủ MariaDB
Trong ví dụ này, trước khi bạn có thể sử dụng trình kết nối MariaDB C ++ mới, bạn sẽ cần phải có cơ sở dữ liệu và bảng. Sử dụng ứng dụng khách bạn chọn, kết nối với phiên bản cơ sở dữ liệu MariaDB của bạn và:
1. Tạo một cơ sở dữ liệu mới và một bảng duy nhất sẽ chịu trách nhiệm lưu trữ các bản ghi nhiệm vụ.
TẠO CƠ SỞ DỮ LIỆU NẾU KHÔNG TỒN TẠI; TẠO TABLE todo.tasks (id INT (11) unsigned NOT NULL AUTO_INCREMENT, mô tả VARCHAR (500) NOT NULL, hoàn thành BOOLEAN NOT NULL DEFAULT 0, PRIMARY KEY (id));2. Tạo một người dùng cơ sở dữ liệu mới mà Connector / C ++ sẽ sử dụng để kết nối với MariaDB.
TẠO NGƯỜI DÙNG NẾU KHÔNG TỒN TẠI app_user @ localhost ĐƯỢC XÁC NHẬN BỞI 'Password123!'; CẤP TẤT CẢ CÁC QUYỀN RIÊNG TƯ CHO việc làm. * CHO app_user @ localhost;Kết nối với Máy chủ MariaDB
Bây giờ bạn đã thiết lập phiên bản cơ sở dữ liệu, lược đồ và người dùng của mình, đã đến lúc chuyển sang C ++. Tất cả bắt đầu bằng cách thiết lập kết nối với MariaDB. Tất nhiên, để làm điều đó, bạn cần phải bao gồm các tệp tiêu đề trình kết nối MariaDB, cụ thể là conncpp.hpp, ở đầu tệp mà bạn đang thêm mã C ++ của mình vào.
#includeĐể thiết lập kết nối, hãy bắt đầu bằng cách truy xuất
Driver
đối tượng sau đó có thể được sử dụng, kết hợp với thông tin cấu hình Kết nối cơ sở dữ liệu Java (JDBC), để lấyConnection
đối tượng.// Instantiate Driversql ::Driver * driver =sql ::mariadb ::get_driver_instance (); // Định cấu hình url Connectionsql ::SQLString ("jdbc:mariadb:// localhost:3306 / todo"); sql ::Thuộc tính Properties ({{"user", "app_user"}, {"password", "Password123!"}}); // Thiết lập Connectionstd ::unique_ptrconn (driver-> connect (url, properties )); Để biết thêm thông tin về chức năng kết nối của MariaDB’s Connector / C ++, hãy nhớ xem tài liệu chính thức dành cho doanh nghiệp của chúng tôi.
Thêm công việc
Khi bạn đã lấy được
Connection
đối tượng, bạn đang tham gia cuộc đua! Sử dụng conn, từ phần trước, giờ đây bạn có thể thực thi SQL thông qua việc sử dụng một câu lệnh đã chuẩn bị để chèn dữ liệu vào MariaDB.// Tạo một PreparedStatementstd ::unique_ptrstmnt (conn-> readyStatement ("chèn vào nhiệm vụ (mô tả) giá trị (?)"))); // Liên kết giá trị với câu lệnh SQL (1, description); // Thực thi querystmnt-> executeQuery (); Truy xuất Công việc
Sử dụng cách tiếp cận tương tự, như trong phần cuối cùng, bạn cũng có thể tạo
Statement
đối tượng để truy xuất và in ra tất cả các bản ghi nhiệm vụ trong bảng nhiệm vụ.// Tạo một Statementstd mới ::unique_ptr stmnt (conn-> createStatement ()); // Thực thi querysql ::ResultSet * res =stmnt-> executeQuery ("select * from task"); // Lặp lại và in kết quả trong khi (res-> next ()) {std ::cout <<"id =" <getInt (1); std ::cout <<", description =" < getString (2); std ::cout <<", complete =" < getBoolean (3) <<"\ n";} Cập nhật công việc
Bạn cũng có thể sử dụng
PreparedStatement
và chỉ định các tham số (và giá trị) để định vị và sửa đổi bản ghi tác vụ hiện có.// Tạo một PreparedStatementstd ::unique_ptr stmnt (conn-> readyStatement ("cập nhật bộ nhiệm vụ đã hoàn thành =? where id =?")); // Liên kết các giá trị với SQL statementstmnt-> setBoolean (1, hoàn thành); stmnt-> setInt (2, id); // Thực thi querystmnt-> executeQuery ();Xóa nhiệm vụ
Và tất nhiên, bạn cũng có khả năng xóa dữ liệu khỏi MariaDB bằng cách sử dụng
DELETE SQL
câu lệnh vớiPreparedStatement
, để nhắm mục tiêu một bản ghi cụ thể.// Tạo một PreparedStatementstd mới ::unique_ptr stmnt (conn-> readyStatement ("xóa khỏi các nhiệm vụ mà id =?")); // Liên kết các giá trị với câu lệnh SQLstmnt-> setInt (1, id); // Thực thi querystmnt-> executeQuery ();Gắn kết tất cả lại với nhau
Cuối cùng, bạn có thể tập hợp mọi thứ lại với nhau trong một ví dụ độc lập bằng cách sao chép và dán mã bên dưới vào một tệp mới có tên là task.cpp . Mẫu bên dưới kết hợp tất cả các hoạt động CRUD mà tôi đã trải qua thành một bộ sưu tập các chức năng có thể được thực thi từ main phương pháp.
#include#include #include // Xóa bản ghi công việc (được chỉ ra bởi id) void deleteTask (std ::unique_ptr &conn, int id) {try {// Tạo một PreparedStatement mới std ::unique_ptr stmnt (conn-> startedStatement ("xóa khỏi nhiệm vụ mà id =?")); // Liên kết các giá trị với câu lệnh SQL stmnt-> setInt (1, id); // Thực thi truy vấn stmnt-> executeQuery (); } catch (sql ::SQLException &e) {std ::cerr <<"Lỗi khi xóa tác vụ:" < Chuẩn bị sẵn sàng ("cập nhật bộ nhiệm vụ đã hoàn thành =? where id =?")); // Liên kết các giá trị với câu lệnh SQL stmnt-> setBoolean (1, hoàn thành); stmnt-> setInt (2, id); // Thực thi truy vấn stmnt-> executeQuery (); } catch (sql ::SQLException &e) {std ::cerr <<"Lỗi khi cập nhật trạng thái nhiệm vụ:" < readyStatement ("chèn vào nhiệm vụ (mô tả) giá trị (?) ")); // Liên kết các giá trị với câu lệnh SQL stmnt-> setString (1, description); // Thực thi truy vấn stmnt-> executeQuery (); } catch (sql ::SQLException &e) {std ::cerr <<"Lỗi khi chèn tác vụ mới:" < createStatement ()); // Thực thi truy vấn sql ::ResultSet * res =stmnt-> executeQuery ("select * from task"); // Lặp lại và in kết quả while (res-> next ()) {std ::cout <<"id =" < getInt (1); std ::cout <<", description =" < getString (2); std ::cout <<", complete =" < getBoolean (3) <<"\ n"; }} catch (sql ::SQLException &e) {std ::cerr <<"Lỗi khi chọn tác vụ:" < connect (url, thuộc tính)); // Sử dụng các đối số để xác định việc thực thi các bước tiếp theo if (! Strcmp (argv [1], "showTasks")) {showTasks (conn); } else if (! strcmp (argv [1], "addTask")) {if (argc! =3) {std ::cout <<"Các đối số không hợp lệ"; trả về 1; } addTask (conn, argv [2]); } else if (! strcmp (argv [1], "updateTaskStatus")) {if (argc! =4) {std ::cout <<"Các đối số không hợp lệ"; trả về 1; } updateTaskStatus (conn, atoi (argv [2]), argv [3]); } else if (! strcmp (argv [1], "deleteTask")) {if (argc! =3) {std ::cout <<"Các đối số không hợp lệ"; trả về 1; } deleteTask (conn, atoi (argv [2])); } // Đóng kết nối conn-> close (); } catch (sql ::SQLException &e) {std ::cerr <<"Lỗi Kết nối với Nền tảng MariaDB:" < Bạn cũng có thể tìm thấy nguồn đầy đủ của ứng dụng mẫu này tại đây. Nguồn cho ví dụ C ++ này được chứa trong một kho lưu trữ cho một ứng dụng có tên là “TODO”, cũng bao gồm giao diện người dùng web và một số ứng dụng mẫu tích hợp trình kết nối MariaDB khác mở rộng vô số ngôn ngữ.
Chạy ứng dụng
Trong môi trường Linux, sau khi bạn đã tạo task.cpp , bạn có thể tạo một tệp thực thi, được gọi là tác vụ, bằng trình biên dịch C ++.
$ g ++ -o task task.cpp -std =c ++ 11 -lmariadbcppSử dụng tệp thực thi, bạn có thể cung cấp các giá trị đối số khác nhau để kiểm tra các hoạt động CRUD.
- Chèn một bản ghi nhiệm vụ mới bằng cách cung cấp một giá trị cho mô tả.
./tasks addTask 'A New Task'
- In tất cả các bản ghi công việc.
./tasks showTasks
- Cập nhật giá trị đã hoàn thành của bản ghi nhiệm vụ. Chỉ cần cung cấp các giá trị cho id và hoàn thành.
./tasks updateTaskStatus 1 1
- Xóa bản ghi công việc bằng cách cung cấp giá trị id.
./tasks deleteTask 1Mới bắt đầu
Hy vọng rằng bạn thích thú khi bắt đầu sử dụng C ++ với MariaDB dễ dàng như thế nào. Mặc dù đây là phần giới thiệu tuyệt vời về lập trình C ++ với MariaDB, nhưng chúng tôi mới chỉ bắt đầu sơ lược về những gì có thể!
Bạn muốn tìm hiểu sâu hơn về MariaDB Connector / C ++? Hãy nhớ xem Trung tâm nhà phát triển MariaDB để biết thêm nội dung về trình kết nối C ++ mới cũng như nhiều tính năng và khả năng khác của MariaDB.
Tìm tài liệu doanh nghiệp MariaDB Connector / C ++.