Cách kết nối cơ sở dữ liệu mysql trong ứng dụng c# windows

Cơ sở dữ liệu MySQL có thể được sử dụng bởi các chương trình được viết bằng ngôn ngữ lập trình C trên Socrates và Plato và trên các máy trạm IS Solaris. Chi tiết đầy đủ về API C (Giao diện chương trình ứng dụng) được cung cấp trong hướng dẫn sử dụng MySQL.

Chương trình ví dụ sau (trong file prog. c) nên được biên dịch bằng lệnh Unix này.

cc -I/usr/local/include/mysql prog.c -lmysqlclient -lsocket -lnsl -lm -lz

Chương trình này hiển thị các trường thứ hai và thứ ba (được đánh số 1 và 2) của mỗi hàng của bảng người trong cơ sở dữ liệu ucabwww trong đó tuổi trường lớn hơn 30

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}

5. Bạn có thể xác minh cài đặt MySQL bằng cách đưa ra lệnh sau trong thiết bị đầu cuối. Nó sẽ đưa bạn đến MySQL Terminal

mysql -u root -p

Cài đặt các thư viện cần thiết

1. Gõ các lệnh sau trong Terminal (Ở đây chúng tôi đang cài đặt các thư viện để kết nối MySQL với C)

mysql_config --libs
mysql_config --cflags

2. Nếu tập lệnh mysql_config chưa được cài đặt thì hãy cài đặt tương tự bằng cách đưa ra lệnh sau. Tập lệnh này cung cấp cho bạn thông tin hữu ích để biên dịch máy khách MySQL của bạn và kết nối nó với máy chủ cơ sở dữ liệu MySQL

sudo apt-get install libmysqlclient-dev

Viết chương trình C của bạn

Chương trình dưới đây kết nối với cơ sở dữ liệu “mysql” và hiển thị tất cả các bảng có trong DB. Đặt logic của bạn và sử dụng nó theo cách của bạn

Đây là bài hướng dẫn lập trình C cho cơ sở dữ liệu MySQL. Nó bao gồm những điều cơ bản về lập trình MySQL với API C. Bạn cũng có thể cân nhắc xem hướng dẫn về MySQL trên ZetCode

MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở hàng đầu. Nó là một hệ thống quản lý cơ sở dữ liệu đa người dùng, đa luồng. MySQL đặc biệt phổ biến trên web. MySQL hiện thuộc sở hữu của Oracle. Cơ sở dữ liệu MySQL có sẵn trên hầu hết các nền tảng hệ điều hành quan trọng. Nó chạy trên BSD Unix, Linux, Windows hoặc Mac OS

MariaDB là một ngã ba được cộng đồng phát triển, hỗ trợ thương mại của hệ thống quản lý cơ sở dữ liệu quan hệ MySQL

$ sudo apt install default-libmysqlclient-dev

Để có thể biên dịch các ví dụ C, chúng ta cần cài đặt các thư viện phát triển MySQL C. Dòng trên cho thấy cách chúng ta có thể làm điều đó trên Linux dựa trên Debian

C99

Hướng dẫn này sử dụng C99. Đối với trình biên dịch GNU C, chúng ta cần thêm tùy chọn -std=c99. Đối với người dùng Windows, Pelles C IDE rất được khuyến khích. (MSVC không hỗ trợ C99. )

MYSQL *con = mysql_init(NULL);

Trong C99, chúng ta có thể kết hợp khai báo với mã. Trong các chương trình C cũ hơn, chúng ta cần tách dòng này thành hai dòng

Trong ví dụ đầu tiên, chúng tôi kiểm tra một lệnh gọi hàm MySQL

#include 
#include 
#include 

int main(int argc, char **argv)
{
  printf("MySQL client version: %s\n", mysql_get_client_info());

  exit(0);
}

$ c99 version.c -o version  `mysql_config --cflags --libs`
6 hiển thị phiên bản máy khách MySQL

#include 
#include 
#include 

Chúng tôi bao gồm các tệp tiêu đề cần thiết

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
0

Dòng mã này xuất phiên bản của máy khách MySQL. Đối với điều này, chúng tôi sử dụng lệnh gọi hàm

$ c99 version.c -o version  `mysql_config --cflags --libs`
6

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
2

Chúng tôi thoát khỏi kịch bản

________số 8

Đây là cách chúng tôi biên dịch ví dụ mã

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
4

Đây là đầu ra

MySQL C tạo cơ sở dữ liệu

Ví dụ mã tiếp theo sẽ tạo cơ sở dữ liệu. Ví dụ mã có thể được chia thành các phần này

  • Bắt đầu cấu trúc xử lý kết nối
  • Tạo kết nối
  • Thực hiện một truy vấn
  • Đóng kết nối
#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
5

Ví dụ code kết nối với hệ cơ sở dữ liệu MySQL và tạo cơ sở dữ liệu mới có tên là

$ c99 version.c -o version  `mysql_config --cflags --libs`
8

MYSQL *con = mysql_init(NULL);

Hàm

$ c99 version.c -o version  `mysql_config --cflags --libs`
9 phân bổ hoặc khởi tạo một đối tượng MYSQL phù hợp với hàm
#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
40. Hãy nhớ rằng đây là C99

MYSQL *con = mysql_init(NULL);
0

Chúng tôi kiểm tra giá trị trả lại. Nếu chức năng

$ c99 version.c -o version  `mysql_config --cflags --libs`
9 không thành công, chúng tôi sẽ in thông báo lỗi và chấm dứt ứng dụng

MYSQL *con = mysql_init(NULL);
1

Hàm

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
40 thiết lập kết nối tới cơ sở dữ liệu. Chúng tôi cung cấp các tham số xử lý kết nối, tên máy chủ, tên người dùng và mật khẩu cho chức năng. Bốn tham số khác là tên cơ sở dữ liệu, số cổng, ổ cắm unix và cuối cùng là cờ máy khách. Chúng tôi cần đặc quyền siêu người dùng để tạo cơ sở dữ liệu mới

MYSQL *con = mysql_init(NULL);
2

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
43 thực thi câu lệnh SQL. Trong trường hợp của chúng tôi, câu lệnh tạo cơ sở dữ liệu mới

MYSQL *con = mysql_init(NULL);
3

Cuối cùng, chúng tôi đóng kết nối cơ sở dữ liệu

MYSQL *con = mysql_init(NULL);
4

Đây là bằng chứng cho thấy cơ sở dữ liệu đã được tạo

Trước khi tạo một bảng mới, chúng ta tạo một người dùng mà chúng ta sẽ sử dụng trong phần còn lại của hướng dẫn

MYSQL *con = mysql_init(NULL);
5

Chúng tôi đã tạo một người dùng mới

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
44

MYSQL *con = mysql_init(NULL);
6

Ở đây chúng tôi cấp tất cả các đặc quyền cho ________ 144 trên cơ sở dữ liệu

$ c99 version.c -o version  `mysql_config --cflags --libs`
8

Ví dụ mã tiếp theo tạo một bảng và chèn một số dữ liệu vào đó

MYSQL *con = mysql_init(NULL);
7

Chúng tôi không sử dụng bất kỳ lệnh gọi hàm MySQL mới nào ở đây. Chúng tôi sử dụng lệnh gọi hàm

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
43 để vừa tạo bảng vừa chèn dữ liệu vào đó

MYSQL *con = mysql_init(NULL);
8

Để tránh sự lặp lại không cần thiết, chúng tôi tạo một hàm

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
48 tùy chỉnh

MYSQL *con = mysql_init(NULL);
9

Chúng tôi kết nối với cơ sở dữ liệu

$ c99 version.c -o version  `mysql_config --cflags --libs`
8. Tên người dùng là
#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
44 và mật khẩu là
#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
51. Tham số thứ năm là tên cơ sở dữ liệu

#include 
#include 
#include 

int main(int argc, char **argv)
{
  printf("MySQL client version: %s\n", mysql_get_client_info());

  exit(0);
}
0

Ở đây chúng ta tạo một bảng tên là

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
52. Nó có ba cột

#include 
#include 
#include 

int main(int argc, char **argv)
{
  printf("MySQL client version: %s\n", mysql_get_client_info());

  exit(0);
}
1

Chúng tôi chèn một hàng vào bảng

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
52

#include 
#include 
#include 

int main(int argc, char **argv)
{
  printf("MySQL client version: %s\n", mysql_get_client_info());

  exit(0);
}
2

Chúng tôi hiển thị các bảng trong cơ sở dữ liệu

#include 
#include 
#include 

int main(int argc, char **argv)
{
  printf("MySQL client version: %s\n", mysql_get_client_info());

  exit(0);
}
3

Chúng tôi chọn tất cả dữ liệu từ bảng

MySQL C lấy dữ liệu

Trong ví dụ tiếp theo, chúng tôi truy xuất dữ liệu từ một bảng

quảng cáo

Chúng ta cần làm các bước sau

  • Tạo kết nối
  • Thực hiện kiểm tra
  • Lấy tập kết quả
  • Tìm nạp tất cả các hàng có sẵn
  • Giải phóng tập kết quả
#include 
#include 
#include 

int main(int argc, char **argv)
{
  printf("MySQL client version: %s\n", mysql_get_client_info());

  exit(0);
}
4

Ví dụ hiển thị tất cả các hàng từ bảng ô tô

#include 
#include 
#include 

int main(int argc, char **argv)
{
  printf("MySQL client version: %s\n", mysql_get_client_info());

  exit(0);
}
5

Chúng tôi thực hiện truy vấn lấy tất cả dữ liệu từ bảng xe ô tô

Quảng cáo
#include 
#include 
#include 

int main(int argc, char **argv)
{
  printf("MySQL client version: %s\n", mysql_get_client_info());

  exit(0);
}
6

Chúng tôi nhận được tập kết quả bằng hàm

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
54.
#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
55 là một cấu trúc để giữ một tập kết quả

#include 
#include 
#include 

int main(int argc, char **argv)
{
  printf("MySQL client version: %s\n", mysql_get_client_info());

  exit(0);
}
7

Ta lấy số trường (cột) trong bảng

#include 
#include 
#include 

int main(int argc, char **argv)
{
  printf("MySQL client version: %s\n", mysql_get_client_info());

  exit(0);
}
8

Chúng tôi tìm nạp các hàng và in chúng ra màn hình

#include 
#include 
#include 

int main(int argc, char **argv)
{
  printf("MySQL client version: %s\n", mysql_get_client_info());

  exit(0);
}
9

Chúng tôi giải phóng tài nguyên

#include 
#include 
#include 
0

Đây là đầu ra

Đôi khi, chúng ta cần xác định id của hàng được chèn cuối cùng. Chúng ta có thể xác định id hàng được chèn cuối cùng bằng cách gọi hàm

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
56. Hàm này chỉ hoạt động nếu chúng ta đã xác định một cột
#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
57 trong bảng

#include 
#include 
#include 
1

Một bảng mới được tạo. Ba hàng được chèn vào bảng. Chúng tôi xác định id hàng được chèn cuối cùng

Quảng cáo
#include 
#include 
#include 
2

Cột

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
58 có loại
#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
57

#include 
#include 
#include 
3

Hàm

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
56 trả về giá trị được tạo cho cột
#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
57 bởi câu lệnh
MYSQL *con = mysql_init(NULL);
2 hoặc
MYSQL *con = mysql_init(NULL);
3 trước đó

#include 
#include 
#include 
4

Đây là đầu ra

Tiêu đề cột MySQL C

Trong ví dụ tiếp theo, chúng tôi truy xuất dữ liệu từ bảng và tên cột của nó

#include 
#include 
#include 
5

Chúng tôi in ba hàng đầu tiên từ bảng

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
52. Chúng tôi cũng bao gồm các tiêu đề cột

Quảng cáo
#include 
#include 
#include 
6

Cấu trúc

MYSQL *con = mysql_init(NULL);
5 chứa thông tin về một trường, chẳng hạn như tên, loại và kích thước của trường. Giá trị trường không phải là một phần của cấu trúc này;

#include 
#include 
#include 
7

Hàng đầu tiên chứa các tiêu đề cột. Cuộc gọi

MYSQL *con = mysql_init(NULL);
7 trả về cấu trúc
MYSQL *con = mysql_init(NULL);
5. Chúng tôi lấy tên tiêu đề cột từ cấu trúc này

#include 
#include 
#include 
8

Đây là đầu ra của chương trình của chúng tôi

Có thể thực thi nhiều câu lệnh SQL trong một truy vấn. Chúng ta phải đặt cờ

MYSQL *con = mysql_init(NULL);
9 trong phương thức kết nối

#include 
#include 
#include 
9

Trong ví dụ này, chúng tôi thực hiện ba câu lệnh

MYSQL *con = mysql_init(NULL);
00 trong một truy vấn

Quảng cáo
#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
00

Tùy chọn cuối cùng của phương thức

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
40 là cờ khách hàng. Nó được sử dụng để kích hoạt các tính năng nhất định.
MYSQL *con = mysql_init(NULL);
9 cho phép thực thi nhiều câu lệnh. Điều này bị tắt theo mặc định

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
01

Truy vấn bao gồm ba câu lệnh

MYSQL *con = mysql_init(NULL);
00. Chúng được phân tách bằng dấu chấm phẩy
MYSQL *con = mysql_init(NULL);
04 ký tự. Ký tự gạch chéo ngược
MYSQL *con = mysql_init(NULL);
05 được sử dụng để phân tách chuỗi thành hai dòng. Nó không có gì để làm với nhiều tuyên bố

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
02

Đoạn mã được đặt giữa các câu lệnh do/while. Việc truy xuất dữ liệu sẽ được thực hiện trong nhiều chu kỳ. Chúng tôi truy xuất dữ liệu cho từng câu lệnh

MYSQL *con = mysql_init(NULL);
00 một cách riêng biệt

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
03

Chúng tôi mong đợi nhiều bộ kết quả. Do đó, chúng tôi gọi hàm

MYSQL *con = mysql_init(NULL);
07. Nó đọc kết quả câu lệnh tiếp theo và trả về một trạng thái để cho biết liệu có tồn tại nhiều kết quả hay không. Hàm trả về 0 nếu quá trình thực thi diễn ra suôn sẻ và có nhiều kết quả hơn. Nó trả về -1, khi nó được thực thi OK và không còn kết quả nào nữa. Cuối cùng, nó trả về giá trị lớn hơn 0 nếu xảy ra lỗi

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
04

Chúng tôi kiểm tra lỗi

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
05

đầu ra ví dụ

Một số người thích đưa hình ảnh của họ vào cơ sở dữ liệu, một số thích giữ chúng trên hệ thống tệp cho các ứng dụng của họ. Khó khăn kỹ thuật phát sinh khi chúng tôi làm việc với nhiều hình ảnh. Hình ảnh là dữ liệu nhị phân. Cơ sở dữ liệu MySQL có một kiểu dữ liệu đặc biệt để lưu trữ dữ liệu nhị phân được gọi là

MYSQL *con = mysql_init(NULL);
08 (Đối tượng lớn nhị phân)

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
06

Đối với các ví dụ của chúng tôi, chúng tôi tạo một bảng

MYSQL *con = mysql_init(NULL);
09 mới. Kích thước hình ảnh có thể lên tới 16 MB. Nó được xác định bởi kiểu dữ liệu
MYSQL *con = mysql_init(NULL);
10

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
07

Trong ví dụ này, chúng tôi chèn một hình ảnh vào bảng

MYSQL *con = mysql_init(NULL);
11

Quảng cáo
#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
08

Bao gồm này là dành cho chức năng

MYSQL *con = mysql_init(NULL);
12

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
09

Ở đây chúng tôi mở tệp hình ảnh. Trong thư mục làm việc hiện tại, chúng ta nên có tệp

MYSQL *con = mysql_init(NULL);
13

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
20

Ta di chuyển con trỏ tệp về cuối tệp bằng hàm

MYSQL *con = mysql_init(NULL);
14. Chúng tôi sẽ xác định kích thước của hình ảnh. Nếu xảy ra lỗi, chỉ báo lỗi được đặt. Chúng tôi kiểm tra chỉ báo bằng hàm
MYSQL *con = mysql_init(NULL);
14. Trong trường hợp có lỗi, chúng tôi cũng đóng trình xử lý tệp đã mở

Quảng cáo
#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
21

Đối với các luồng nhị phân, hàm

MYSQL *con = mysql_init(NULL);
16 trả về số byte từ đầu tệp, e. g. kích thước của tập tin hình ảnh. Trong trường hợp có lỗi, hàm trả về -1 và errno được đặt. Hàm
MYSQL *con = mysql_init(NULL);
17 diễn giải giá trị của errno dưới dạng thông báo lỗi và in nó ra luồng đầu ra lỗi tiêu chuẩn

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
22

Trong mảng này, chúng ta sẽ lưu trữ dữ liệu hình ảnh

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
23

Ta đọc dữ liệu từ con trỏ tệp và lưu vào mảng dữ liệu. Tổng số phần tử được đọc thành công được trả về

Quảng cáo
#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
24

Sau khi dữ liệu được đọc, chúng ta có thể đóng trình xử lý tệp

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
25

Hàm

MYSQL *con = mysql_init(NULL);
18 thêm một ký tự thoát, dấu gạch chéo ngược,
MYSQL *con = mysql_init(NULL);
05, trước một số ký tự nguy hiểm tiềm ẩn nhất định trong một chuỗi được truyền vào hàm. Điều này có thể giúp ngăn chặn các cuộc tấn công SQL injection. Bộ đệm mới phải dài ít nhất
MYSQL *con = mysql_init(NULL);
20

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
26

Ở đây chúng ta bắt đầu xây dựng câu lệnh SQL. Chúng tôi xác định kích thước của chuỗi SQL bằng hàm

MYSQL *con = mysql_init(NULL);
12

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
27

Truy vấn phải đủ dài để chứa kích thước của câu lệnh chuỗi SQL và kích thước của tệp hình ảnh. Sử dụng hàm

MYSQL *con = mysql_init(NULL);
22, chúng tôi ghi đầu ra được định dạng vào bộ đệm truy vấn

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
28

Chúng tôi thực hiện truy vấn bằng hàm

MYSQL *con = mysql_init(NULL);
23. Không thể sử dụng
#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
43 cho các câu lệnh chứa dữ liệu nhị phân;

MySQL C chọn hình ảnh

Trong ví dụ trước, chúng ta đã chèn một hình ảnh vào cơ sở dữ liệu. Trong ví dụ sau, chúng tôi chọn hình ảnh được chèn từ cơ sở dữ liệu

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
29

Trong ví dụ này, chúng tôi tạo một tệp hình ảnh từ cơ sở dữ liệu

Quảng cáo
$ c99 version.c -o version  `mysql_config --cflags --libs`
0

Chúng tôi mở một trình xử lý tệp mới để viết

$ c99 version.c -o version  `mysql_config --cflags --libs`
1

Chúng tôi chọn cột

MYSQL *con = mysql_init(NULL);
26 từ bảng
MYSQL *con = mysql_init(NULL);
11 với
#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
58 1

$ c99 version.c -o version  `mysql_config --cflags --libs`
2

Hàng chứa dữ liệu thô

$ c99 version.c -o version  `mysql_config --cflags --libs`
3

Chúng tôi nhận được chiều dài của hình ảnh

Quảng cáo
$ c99 version.c -o version  `mysql_config --cflags --libs`
4

Chúng tôi ghi dữ liệu đã truy xuất vào đĩa bằng lệnh gọi hàm

MYSQL *con = mysql_init(NULL);
29. Chúng tôi kiểm tra chỉ báo lỗi bằng chức năng
MYSQL *con = mysql_init(NULL);
30

#include <mysql.h>
#include <stdio.h>

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "mysql-server.ucl.ac.uk";
   char *user = "ucabwww";
   char *password = "secret";
   char *database = "ucabwww";
   
   conn = mysql_init(NULL);
   
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM people WHERE age > 30")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      return(0);
   }

   res = mysql_use_result(conn);
   
   /* output fields 1 and 2 of each row */
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s %s\n", row[1], row[2]);

   /* Release memory used to store results and close connection */
   mysql_free_result(res);
   mysql_close(conn);
}
24

Sau khi chúng tôi ghi dữ liệu hình ảnh, chúng tôi đóng trình xử lý tệp bằng hàm

MYSQL *con = mysql_init(NULL);
31

Đây là hướng dẫn MySQL C API. Bạn cũng có thể quan tâm đến hướng dẫn PyMySQL, hướng dẫn MySQL Visual Basic hoặc hướng dẫn mysqli PHP, hướng dẫn PostgreSQL C hoặc hướng dẫn SQLite C trên ZetCode

Chúng ta có thể kết nối C với MySQL không?

Cơ sở dữ liệu MySQL có thể được sử dụng bởi các chương trình được viết bằng ngôn ngữ lập trình C trên Socrates và Plato và trên các máy trạm IS Solaris . Chi tiết đầy đủ về API C (Giao diện chương trình ứng dụng) được cung cấp trong hướng dẫn sử dụng MySQL.

Làm cách nào để liên kết cơ sở dữ liệu với 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++

Làm cách nào để kết nối với cơ sở dữ liệu MySQL từ dòng lệnh?

vào thư mục cài đặt MySQL rồi truy cập vào thư mục bin (mysql. exe phải được hiển thị trong danh sách tệp)
mở cmd ở cùng một vị trí
chạy mysql -u [tên người dùng] -p (không cần thêm -p nếu chưa đặt mật khẩu) rồi nhấn enter