1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu MySQL & C doc

16 160 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 233,33 KB

Nội dung

MySQL & C 1 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Giới thiệu  MySQL cung cấp một thư viện viết bằng C để làm việc với DBMS  Các tính năng:  Kết nối với máy chủ (sử dụng SSL – secured socket layer)  Gửi các câu truy vấn, nhận và xử lý kết quả  Kiểm tra và xử lý lỗi 2 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Thiết lập thư viện  Include (cần khi biên dịch):  #include <winsock.h> #include <mysql.h>  Thư viện (cần khi biên dịch):  #pragma comment(lib, "libmysql.lib")  Hoặc thêm vào danh sách các thư viện dịch (xem trang sau)  Thư viện động (cần khi chạy chương trình):  libmysql.dll  Khởi tạo thư viện:  int mysql_library_init(int argc, char** argv, char **groups)  Có thể bỏ qua, không cần gọi hàm này nếu chương trình chỉ có một tiến trình chạy (mono-thread)  Kết thúc sử dụng thư viện: mysql_library_end() 3 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Thêm thư viện để liên kết 4 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Ví dụ  #include <winsock.h> #include <mysql.h> #include <stdlib.h> int main() { if (mysql_library_init(0, NULL, NULL)) { fprintf(stderr, "could not initialize MySQL library\n"); exit(1); } /* */ mysql_library_end(); return 0; } 5 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Các kiểu dữ liệu  MYSQL: chứa thông tin về kết nối tới DBMS  MYSQL_RES: chứa kết quả trả về của các câu truy vấn có trả về kết quả là các hàng (các câu lệnh: select, show, explain)  MYSQL_ROW: dữ liệu của một hàng trong kết quả  MYSQL_FIELD: dữ liệu của một trường trong một hàng của kết quả 6 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Thiết lập và đóng kết nối  Tạo kết nối:  MYSQL* conn = mysql_init(NULL); mysql_real_connect(conn, server_addr, username, password, database_name, 0, NULL, 0);  Đóng kết nối:  mysql_close(conn); 7 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Ví dụ  int main (int argc, char *argv[]) { MYSQL* conn = mysql_init (NULL); if (conn == NULL) return 1; if (mysql_real_connect (conn, opt_host_name, opt_user_name, opt_password, opt_db_name, opt_port_num, opt_socket_name, opt_flags) == NULL) { fprintf (stderr, "failed\n"); mysql_close (conn); } mysql_close (conn); return 0; } 8 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Kiểm tra lỗi  MySQL cung cấp các hàm sau để lấy thông tin về lỗi khi xảy ra:  unsigned int mysql_errno(MYSQL* conn) Trả về mã lỗi  const char *mysql_error(MYSQL* conn) Trả về thông điệp lỗi  Thông tin thêm về mã và các thông điệp lỗi (bản 5.0):  http://dev.mysql.com/doc/refman/5.0/en/error-handling.html 9 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Thực hiện câu truy vấn  Để gửi và thực hiện câu truy vấn, dùng hàm:  int mysql_query(MYSQL* conn, const char* stmt) int mysql_real_query(MYSQL* conn, const char* stmt, unsigned long len)  Các tham số:  stmt: chuỗi chứa câu truy vấn len: độ dài của chuỗi chứa câu truy vấn  Trả về 0 nếu thành công, khác 0 nếu có lỗi 10 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội [...]... Sau khi th c hiện c u truy vấn, gọi hàm:   Tiếp theo gọi hàm sau để lấy từng hàng kết quả:    MYSQL_ ROW mysql_ fetch_row (MYSQL_ RES* result) Trả về NULL nếu kết th c kết quả Cuối c ng, kết th c và giải phóng bộ nhớ đệm chứa kết quả:   MYSQL_ RES* mysql_ store_result (MYSQL* conn) void mysql_ free_result (MYSQL_ RES* result) Di chuyển con trỏ đ c kết quả:   11 MYSQL_ ROW_OFFSET mysql_ row_seek (MYSQL_ RES*... mysql_ insert_id (MYSQL *mysql) ID phải đư c định nghĩa với thu c tính AUTO_INCREMENT Số hàng đã bị thay đổi (c u lệnh INSERT, UPDATE,…)  12 my_ulonglong mysql_ affected_rows (MYSQL *mysql) EE4509, EE6133 – HK2 2011/2012 TS Đào Trung Kiên – ĐH Bách khoa Hà Nội Ví dụ - select  if (mysql_ query(conn, "select * from USER") != 0) handle_error(conn); else { MYSQL_ RES* result = mysql_ store_result(conn); printf("Number... result, MYSQL_ ROW_OFFSET offset) MYSQL_ ROW_OFFSET mysql_ row_tell (MYSQL_ RES* result) EE4509, EE6133 – HK2 2011/2012 TS Đào Trung Kiên – ĐH Bách khoa Hà Nội C c thông tin về kết quả trả về  Số thu c tính (trường) c a kết quả:  Số hàng:    my_ulonglong mysql_ num_rows (MYSQL_ RES* result) ID c a dữ liệu mới đư c thêm (c u lệnh INSERT):    unsigned int mysql_ num_fields (MYSQL_ RES* result) my_ulonglong mysql_ insert_id (MYSQL. .. 2011/2012 TS Đào Trung Kiên – ĐH Bách khoa Hà Nội Bài tập 1 2 3 16 Định nghĩa một quan hệ SinhVien, sau đó viết một chương trình C nhập thông tin sinh viên, thêm vào CSDL và in ra ID c a sinh viên vừa đư c thêm Viết chương trình C nhập ID c a một sinh viên và in ra thông tin c a sinh viên đó Viết chương trình C nhập tên c a sinh viên và in ra thông tin những người c tên như đã nhập EE4509, EE6133 –... else { printf("%d rows added\n", mysql_ affected_rows(conn)); printf("ID of inserted user: %d\n", mysql_ insert_id(conn)); } 14 EE4509, EE6133 – HK2 2011/2012 TS Đào Trung Kiên – ĐH Bách khoa Hà Nội Ví dụ - update  if (mysql_ query(conn, "update User set level = 5 where id in (2, 3, 4)") != 0) handle_error(conn); else { printf("%d rows updated\n", mysql_ affected_rows(conn)); } 15 EE4509, EE6133 – HK2... rows: %d\n", mysql_ num_rows(result); MYSQL_ ROW row; while (row = mysql_ fetch_row(result)) { printf("%s, %s, %s, %s\n", row[0], row[1], row[2], row[3]); } mysql_ free_result(result); } 13 EE4509, EE6133 – HK2 2011/2012 TS Đào Trung Kiên – ĐH Bách khoa Hà Nội Ví dụ - insert  if (mysql_ query(conn, "insert into User(username, password, level) values('superhero', 'chipchip', 3)") != 0) handle_error(conn); else... c a một sinh viên và in ra thông tin c a sinh viên đó Viết chương trình C nhập tên c a sinh viên và in ra thông tin những người c tên như đã nhập EE4509, EE6133 – HK2 2011/2012 TS Đào Trung Kiên – ĐH Bách khoa Hà Nội . – ĐH Bách khoa Hà Nội Thiết lập thư viện  Include (c n khi biên dịch):  #include <winsock.h> #include < ;mysql. h>  Thư viện (c n khi. dịch):  #pragma comment(lib, "libmysql.lib")  Ho c thêm vào danh sách c c thư viện dịch (xem trang sau)  Thư viện động (c n khi chạy chương

Ngày đăng: 18/02/2014, 23:20

TỪ KHÓA LIÊN QUAN

w