Truy cập MySQL bằng C

Với hướng dẫn này, tôi trình bày cho cộng đồng cách truy cập cơ sở dữ liệu MySQL từ ngôn ngữ lập trình C và không sử dụng quá nhiều phụ thuộc, chỉ với

libmysqlclient

Tôi hy vọng nó sẽ hữu ích cho những người cần loại tài liệu này và do đó tiếp tục đóng góp cho cộng đồng SL và giúp những người chưa có INTERNET.

cấu hình

Đầu tiên, chúng ta phải kiểm tra xem chúng ta đã cài đặt các thư viện thiết kế chưa *-dev để có thể truy cập từ C / C ++ sang MySQL.

mysql_config --libs

Nó sẽ xuất hiện như sau:

-Wl, -Bsymbolic-functions –L / usr / lib / mysql -lmysqlclient rdynamic

Trong trường hợp bạn kiểm tra thấy thư viện chưa được cài đặt, chúng tôi cài đặt nó bằng lệnh sau:

sudo apt-get install libmysqlclient-dev mysql_config --cflags -I / usr / include / mysql -DBIG_JOINS = 1 -fno-precision-aliasing -DUNIV_LINUX -DUNIV_LINUX

Vì chúng tôi xác minh và cài đặt những gì chúng tôi cần cho liên kết giữa MySQL và C, chúng tôi tiến hành tạo cơ sở dữ liệu:

KIỂM TRA TẠO CƠ SỞ DỮ LIỆU; Kiểm tra SỬ DỤNG; TẠO dữ liệu BẢNG (id int AUTO_INCREMENT NOT NULL PRIMARY KEY, name varchar (40), age int); CHÈN VÀO CÁC GIÁ TRỊ dữ liệu (NULL, 'Alma Hernandez', 28), (NULL, 'Jose Sanchez', 39), (NULL, 'Martin loera', 25), (NULL, 'Leonardo Cortez', 26), (NULL , 'Gustavo Romero', 25 tuổi);

Lập trình và biên dịch

Chúng tôi tiếp tục tạo mã:

Query.c

/ * các thư viện để sử dụng * / #include / * thư viện cho phép chúng tôi sử dụng các kết nối và truy vấn với MySQL * / #include / * Để sử dụng printf, v.v. * / int main () {MYSQL * conn; / * biến kết nối cho MySQL * / MYSQL_RES * res; / * biến sẽ chứa kết quả của hàng truy vấn * / MYSQL_ROW; / * biến sẽ chứa các trường cho mỗi bản ghi được tham khảo * / char * server = "localhost"; / * địa chỉ máy chủ 127.0.0.1, localhost hoặc địa chỉ ip * / char * user = "root"; / * người dùng để truy vấn cơ sở dữ liệu * / char * password = "root"; / * mật khẩu cho người dùng trong câu hỏi * / char * database = "test"; / * tên cơ sở dữ liệu cần truy vấn * / conn = mysql_init (NULL); / * khởi tạo để vô hiệu kết nối * / / * kết nối với cơ sở dữ liệu * / if (! mysql_real_connect (conn, server, user, password, database, 0, NULL, 0)) {/ * xác định các tham số kết nối đã đặt trước đó * / fprintf (stderr, "% s \ n", mysql_error (conn)); / * nếu có lỗi xác định lỗi nào là * / exit (1); } / * gửi truy vấn SQL * / if (mysql_query (conn, "select * from data")) {/ * định nghĩa của truy vấn và nguồn gốc của kết nối * / fprintf (stderr, "% s \ n", mysql_error ( conn)); thoát ra (1); } res = mysql_use_result (conn);
	printf("ID \ tName \ t \ age \ n"); while ((row = mysql_fetch_row (res))! = NULL) / * lặp qua biến res với tất cả các bản ghi thu được để sử dụng * /
		printf("% s \ t% s \ t% s \ n", row [0], row [1], row [2]); / * biến hàng trở thành một mảng cho số trường trong bảng * / / * biến res được giải phóng và kết nối bị đóng * / mysql_free_result (res); mysql_close (conn); }

Chúng tôi biên dịch với:

gcc -o Truy vấn $ (mysql_config --cflags) Query.c $ (mysql_config -–libs)

xác minh

Chúng tôi thực hiện:

./Truy vấn

Fuente: Hugo4295's Blog


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   koratsuki dijo

    Tốt, được lưu trong kho tập lệnh và hướng dẫn của tôi trên bảng điều khiển! +1 cho đối tác của bạn ...

  2.   rodrigo dijo

    Xin chào, rất nhiều lời chúc mừng về mọi thứ trên web liên quan đến vấn đề này, giải pháp của bạn là gần nhất với giải pháp. chỉ là một chút nghi ngờ, tại sao tôi không nhận được thực thi ??

    tại thời điểm khởi động, nó không đánh dấu bất kỳ lỗi nào nhưng nó không tạo ra ./ser4

  3.   Andrélo dijo

    Bất kỳ ý tưởng làm thế nào để làm điều đó trong Fedora?

  4.   người chiến thắng o dijo

    Tôi không đồng ý với việc chia sẻ thông tin nhưng nếu bản quyền không được đặt vì ví dụ này được tôi thực hiện từ năm 2011 và đây là địa chỉ của nguồn gốc

    http://hugo4295.blogspot.mx/search?q=MYSQL

    1.    sống động dijo

      Không sao đâu Victor, nhưng nếu bạn để ý tôi không lấy bài từ trang của bạn mà lấy từ nơi khác rất tiếc là họ không ghi nguồn. Tuy nhiên, hiện tại tôi đang chỉnh sửa bài viết .. 😉

  5.   alfonso ovidio lópez đạo đức dijo

    chia sẻ kiến ​​thức tuyệt vời tự do tuyệt vời

  6.   DANIELA FERNANDEZ dijo

    Và làm thế nào có thể chèn được ???