Chức năng của api mysql là gì?

Đâ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

Về cơ sở dữ liệu MySQL

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

MySQL C ví dụ đầu tiên

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

printf("MySQL client version: %s\n", mysql_get_client_info());

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

exit(0);

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

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

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

$ ./version
MySQL client version: 10.3.24

Đâ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
MYSQL *con = mysql_init(NULL);
0

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
$ ./version
MySQL client version: 10.3.24
0. Hãy nhớ rằng đây là C99

MYSQL *con = mysql_init(NULL);
0

Chúng tôi kiểm tra giá trị trả về. 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

$ ./version
MySQL client version: 10.3.24
0 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

$ ./version
MySQL client version: 10.3.24
3 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

MySQL C tạo và điền vào bảng

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

$ ./version
MySQL client version: 10.3.24
4

MYSQL *con = mysql_init(NULL);
6

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

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

$ ./version
MySQL client version: 10.3.24
3 để 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

$ ./version
MySQL client version: 10.3.24
8 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à
$ ./version
MySQL client version: 10.3.24
4 và mật khẩu là
MYSQL *con = mysql_init(NULL);
01. 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à

MYSQL *con = mysql_init(NULL);
02. 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

MYSQL *con = mysql_init(NULL);
02

#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

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ô

#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

MYSQL *con = mysql_init(NULL);
04.
MYSQL *con = mysql_init(NULL);
05 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

Id hàng được chèn lần cuối của MySQL C

Đô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

MYSQL *con = mysql_init(NULL);
06. Hàm này chỉ hoạt động nếu chúng ta đã xác định một cột
MYSQL *con = mysql_init(NULL);
07 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

#include 
#include 
#include 
2

Cột

MYSQL *con = mysql_init(NULL);
08 có loại
MYSQL *con = mysql_init(NULL);
07

#include 
#include 
#include 
3

Hàm

MYSQL *con = mysql_init(NULL);
06 trả về giá trị được tạo cho cột
MYSQL *con = mysql_init(NULL);
07 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

MYSQL *con = mysql_init(NULL);
02. Chúng tôi cũng bao gồm các tiêu đề cột

#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

Nhiều câu lệnh MySQL C

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

printf("MySQL client version: %s\n", mysql_get_client_info());
0

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

$ ./version
MySQL client version: 10.3.24
0 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

printf("MySQL client version: %s\n", mysql_get_client_info());
1

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ố

printf("MySQL client version: %s\n", mysql_get_client_info());
2

Đ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 riêng biệt

printf("MySQL client version: %s\n", mysql_get_client_info());
3

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

printf("MySQL client version: %s\n", mysql_get_client_info());
4

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

printf("MySQL client version: %s\n", mysql_get_client_info());
5

đầu ra ví dụ

Hình ảnh chèn MySQL C

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)

printf("MySQL client version: %s\n", mysql_get_client_info());
6

Đố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

printf("MySQL client version: %s\n", mysql_get_client_info());
7

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

printf("MySQL client version: %s\n", mysql_get_client_info());
8

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

MYSQL *con = mysql_init(NULL);
12

printf("MySQL client version: %s\n", mysql_get_client_info());
9

Ở đâ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

exit(0);
0

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 chức năng
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ở

exit(0);
1

Đố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

exit(0);
2

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

exit(0);
3

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ề

exit(0);
4

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

exit(0);
5

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

exit(0);
6

Ở đâ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

exit(0);
7

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

exit(0);
8

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
$ ./version
MySQL client version: 10.3.24
3 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

exit(0);
9

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

$ 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
MYSQL *con = mysql_init(NULL);
08 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

$ 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

exit(0);
4

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

Điều nào sau đây là một chức năng của MySQL APIs Mcq?

API MySQL là thư viện để kết nối ứng dụng với máy chủ cơ sở dữ liệu .

MySQL có phải là API REST không?

MySQL đã là tiêu chuẩn cho điều này trong nhiều thập kỷ. Một nhược điểm là cơ sở dữ liệu chỉ lưu trữ dữ liệu. Nếu bạn muốn làm gì đó với dữ liệu đó, API REST của MySQL sẽ giúp bạn . Đây là những gì bạn cần biết để sử dụng MySQL REST API trong các dự án của mình.