Bạn có thể sử dụng MySQL với C không?

MySQL là một hệ quản trị cơ sở dữ liệu mã nguồn mở [DBMS]. Nó rất phổ biến đối với các nhà phát triển web vì nó là một phần của ngăn xếp LAMP [Linux, Apache, MySQL, PHP/Perl/Python]. Nhiều trang web quy mô lớn phổ biến như WikiPedia, Facebook, Youtube sử dụng cơ sở dữ liệu này. Nhiều khi chúng ta cần sử dụng truy cập cơ sở dữ liệu MySQL từ chương trình C. Ở đây chúng ta sẽ xem cách truy cập cơ sở dữ liệu MySQL từ chương trình C

Ghi chú. CentOS 7. 2 được sử dụng ở đây để cài đặt cơ sở dữ liệu và biên dịch mã. Các bản phân phối Linux này phải giống nhau đối với tất cả các bản phân phối Linux dựa trên RedHat

Cài đặt MySql

Nếu bạn đã cài đặt MySQL trên hệ thống của mình, thì bạn có thể bỏ qua phần này và sử dụng cơ sở dữ liệu hiện có, nếu không, hãy đưa ra các lệnh sau để cài đặt cơ sở dữ liệu MySQL

Xin lưu ý rằng bạn phải là siêu người dùng [root] và cần có kết nối internet khi thực hiện các lệnh này

wget //repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server

MySQL chạy dưới dạng dịch vụ trên hệ thống Linux. Để bắt đầu dịch vụ MySQL, hãy đưa ra lệnh này với tư cách là siêu người dùng [root]

systemctl start mysqld

Bạn cũng có thể kiểm tra xem dịch vụ có thực sự chạy hay không bằng lệnh này

systemctl status mysqld

Nếu dịch vụ đang chạy thì lệnh này sẽ hiện active [đang chạy] như hình bên dưới

Tạo bảng trong cơ sở dữ liệu

Trong phần này, chúng ta sẽ tạo một bảng mẫu trong cơ sở dữ liệu MySQL theo cách thủ công ngay trong máy chủ cơ sở dữ liệu. Chúng ta sẽ truy cập bảng đó từ chương trình C sau.
Đăng nhập vào cơ sở dữ liệu.

mysql -u root -p

Trong MySQL, bạn có thể có nhiều cơ sở dữ liệu. Các bảng sẽ được tạo trong cơ sở dữ liệu. Bạn có thể tạo một cơ sở dữ liệu mới bằng cách ban hành lệnh này

CREATE DATABASE mydb;

Bây giờ bạn phải vào bên trong cơ sở dữ liệu bằng lệnh

USE mydb;

Tạo bảng my_table trong cơ sở dữ liệu mydb bằng câu lệnh SQL này

CREATE TABLE my_table [table_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, first_name TEXT, last_name TEXT];

Chèn một số mục vào bảng my_table

INSERT INTO my_table[first_name, last_name] VALUES['Cristiano', 'Ronaldo'];
INSERT INTO my_table[first_name, last_name] values['Lionel', 'Messi'];

Bạn có thể kiểm tra các mục của bảng bằng truy vấn SQL này

________số 8

Truy cập cơ sở dữ liệu MySQL từ Chương trình C

Để truy cập cơ sở dữ liệu MySQL, bạn cần có gói mysql-devel trên hệ thống của mình. Gói này cung cấp các thư viện chia sẻ và tệp tiêu đề cần thiết để phát triển chương trình máy khách MySQL. Các tệp tiêu đề được yêu cầu để biên dịch chương trình và các thư viện dùng chung được sử dụng trong thời gian chạy. Để kiểm tra xem gói đã được cài đặt chưa bằng lệnh này

yum info mysql-devel

Nếu chưa cài đặt, hãy ra lệnh này để cài đặt mysql-devel

systemctl start mysqld
0

Đây là chương trình máy khách MySQL để truy cập các thực thể cơ sở dữ liệu như bảng, hàng của bảng

systemctl start mysqld
1

Trong chương trình ví dụ của chúng tôi ở trên, chúng tôi hiển thị tất cả các bảng trong cơ sở dữ liệu mydb của chúng tôi và tất cả các hàng từ bảng my_table

Trước khi thực hiện bất kỳ thao tác nào với cơ sở dữ liệu, chúng ta cần kết nối với máy chủ cơ sở dữ liệu. Phần này của mã làm điều đó

systemctl start mysqld
2

API mysql_init[] khởi tạo một đối tượng MYSQL và trả về địa chỉ [con trỏ] của đối tượng đó trong trường hợp cấp phát thành công. Nếu hàm không phân bổ đối tượng MYSQL, thì nó sẽ trả về NULL. Con trỏ được trả về sẽ được sử dụng làm tay cầm cho các hoạt động cơ sở dữ liệu tiếp theo. Để truy cập bất kỳ phần tử cơ sở dữ liệu nào như bảng hoặc bất kỳ trường nào của bảng, trước tiên chúng ta phải kết nối với máy chủ cơ sở dữ liệu. Hàm mysql_real_connect[] được sử dụng để kết nối với máy chủ cơ sở dữ liệu MySQL. Nó lấy địa chỉ IP hoặc tên miền của hệ thống mà máy chủ MySQL đang chạy. Vì máy chủ của chúng tôi đang chạy trên cùng một hệ thống mà chương trình sẽ chạy, nên  “localhost”
được sử dụng làm tên miền của máy chủ. Nếu bạn muốn truy cập cơ sở dữ liệu đang chạy trên máy từ xa, bạn có thể chỉ định tên miền hoặc Địa chỉ IP của máy từ xa. Ngoài ra, chúng tôi phải chỉ định id người dùng, mật khẩu và tên cơ sở dữ liệu. Trong trường hợp của chúng tôi, id người dùng là “root” và tên cơ sở dữ liệu là “mydb”.

 

systemctl start mysqld
3

Đoạn mã trên lấy tất cả các tên bảng từ cơ sở dữ liệu MySQL được kết nối. Để làm điều đó, chúng tôi phải chạy một truy vấn SQL mà chúng tôi có thể thực hiện bằng cách sử dụng API mysql_query[]. Để có được kết quả của truy vấn đã thực hiện, chúng ta phải sử dụng API mysql_use_result[] hoặc mysql_store_result[]. Ở đây, chúng tôi đã sử dụng mysql_use_result[] không mang lại toàn bộ kết quả cho
phía máy khách. Vì vậy, chúng tôi phải gọi mysql_fetch_row[] để tìm nạp từng hàng một từ máy chủ. Nếu mysql_fetch_row[] trả về NULL, thì không còn hàng nào được tìm nạp nữa. Truy vấn “hiển thị bảng” sẽ trả về tất cả tên bảng trong một bảng. Vì vậy, vòng lặp while này sẽ trả về tất cả các bảng có sẵn và in chúng. Giá trị được trả về từ mysql_use_result[] cần được giải phóng bằng API mysql_free_result[].

Phần sau của mã tìm nạp tất cả hàng của bảng my_table

systemctl start mysqld
4

Ở đây chúng ta cũng đã sử dụng API mysql_query[] để thực thi truy vấn SQL CHỌN. Ở đây chúng tôi sử dụng mysql_store_result[] để tìm nạp tất cả các hàng đã trả về cho máy khách.
Trong trường hợp này, mysql_fetch_row[] sẽ không mang hàng từ máy chủ, thay vào đó, nó sẽ trả về từ độ phân giải có sẵn trong bộ nhớ của máy khách [chương trình của chúng ta]

Mã bên dưới sẽ duyệt qua tất cả các hàng và in chúng

systemctl start mysqld
5

API mysql_num_fields[] trả về số cột của các bảng được trả về. Vòng lặp while bên ngoài lặp qua các hàng và vòng lặp
for bên trong in tất cả các cột của một hàng.

Và cuối cùng là độ phân giải nếu được giải phóng bằng mysql_free_result[]

Biên dịch mã máy khách MySQL

Việc biên dịch mã máy khách MySQL rất phức tạp. Trước hết, bạn cần cài đặt GCC trên hệ thống của mình. Bạn phải đặt cờ biên dịch thích hợp và các thư viện để liên kết. Để làm điều đó, chúng tôi sẽ sử dụng tiện ích mysql_config để nhận các tùy chọn trình biên dịch. “mysql_config –cflags” trả về các cờ Trình biên dịch C để tìm các tệp bao gồm và các cờ trình biên dịch quan trọng cũng như định nghĩa được sử dụng khi biên dịch thư viện libmysqlclient. Và “mysql_config –libs” Thư viện và các tùy chọn cần thiết để liên kết với thư viện máy khách MySQL.
Nếu mã của bạn được lưu trong bản kiểm tra. c C, sau đó sử dụng lệnh này để biên dịch mã.

systemctl start mysqld
6

Đầu ra nhị phân sẽ được lưu trữ dưới dạng mysqlc

Nếu chúng ta chạy chương trình, đầu ra sẽ như thế này

systemctl start mysqld
7

Tác giả. Srikanta

Tôi viết ở đây để giúp người đọc tìm hiểu và hiểu về lập trình máy tính, thuật toán, mạng, khái niệm hệ điều hành, v.v. một cách đơn giản. Tôi có 20 năm kinh nghiệm làm việc trong lĩnh vực mạng máy tính và tự động hóa công nghiệp. Xem tất cả các bài viết bằng Srikanta

Làm cách nào để kết nối với MySQL trong C?

Làm cách nào để truy cập cơ sở dữ liệu MySQL từ chương trình C? .
Cài đặt MySql. .
Tạo bảng trong cơ sở dữ liệu. .
Truy cập cơ sở dữ liệu MySQL từ Chương trình C. .
Biên dịch mã máy khách MySQL

C có thể kết nối với cơ sở dữ liệu nào?

Kết nối cơ sở dữ liệu bằng C/C++ . SQLAPI++ là một thư viện C++ [về cơ bản là một tập hợp các tệp tiêu đề] để truy cập nhiều cơ sở dữ liệu SQL [ Oracle, SQL Server, DB2, Sybase, Informix, InterBase, SQLBase, MySQL, PostgreSQL, SQLite, SQL . ].

Những ngôn ngữ nào có thể chạy trong MySQL?

Ngôn ngữ lập trình. Có khá nhiều API [giao diện lập trình ứng dụng] và thư viện để phát triển ứng dụng MySQL. Đối với lập trình máy khách, bạn có thể sử dụng, trong số những ngôn ngữ khác, C, C++, Java, Perl, PHP, Python và Tcl . ODBC. MySQL hỗ trợ giao diện ODBC Trình kết nối/ODBC.

Làm cách nào để liên kết cơ sở dữ liệu với chương trình C?

Lưu ý duy nhất ở đây là ODBC sử dụng API kiểu C cũ. .
Bước 1. Tạo cơ sở dữ liệu Azure SQL của bạn. .
Bước 2. Nhận chuỗi kết nối. .
Bước 3. Thêm IP của bạn vào tường lửa. .
Bước 4. Kết nối từ ứng dụng Windows C/C++. .
Bước 5. Kết nối từ ứng dụng Linux C/C++

Chủ Đề