MySQL & C
lượt xem 15
download
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 Include (cần khi biên dịch): #include #include 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...
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: MySQL & C
- MySQL & C EE4509, EE6133 – HK2 2011/2012 1 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 EE4509, EE6133 – HK2 2011/2012 2 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 #include 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() EE4509, EE6133 – HK2 2011/2012 3 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
- Thêm thư viện để liên kết EE4509, EE6133 – HK2 2011/2012 4 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
- Ví dụ #include #include #include int main() { if (mysql_library_init(0, NULL, NULL)) { fprintf(stderr, "could not initialize MySQL library\n"); exit(1); } /* ... */ mysql_library_end(); return 0; } EE4509, EE6133 – HK2 2011/2012 5 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ả EE4509, EE6133 – HK2 2011/2012 6 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); EE4509, EE6133 – HK2 2011/2012 7 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; } EE4509, EE6133 – HK2 2011/2012 8 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 EE4509, EE6133 – HK2 2011/2012 9 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 EE4509, EE6133 – HK2 2011/2012 10 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
- Lấy kết quả trả về Sau thực hiện câu truy vấn, gọi hàm: MYSQL_RES* mysql_store_result(MYSQL* conn) 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ả: void mysql_free_result(MYSQL_RES* result) Di chuyển con trỏ đọc kết quả: MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES* result, MYSQL_ROW_OFFSET offset) MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES* result) EE4509, EE6133 – HK2 2011/2012 11 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ả: unsigned int mysql_num_fields(MYSQL_RES* result) 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): my_ulonglong 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,…) my_ulonglong mysql_affected_rows(MYSQL *mysql) EE4509, EE6133 – HK2 2011/2012 12 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 of 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); } EE4509, EE6133 – HK2 2011/2012 13 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 { printf("%d rows added\n", mysql_affected_rows(conn)); printf("ID of inserted user: %d\n", mysql_insert_id(conn)); } EE4509, EE6133 – HK2 2011/2012 14 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)); } EE4509, EE6133 – HK2 2011/2012 15 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
- Bài tập Định nghĩa một quan hệ SinhVien, sau đó viết một 1. 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à 2. 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 3. thông tin những người có tên như đã nhập EE4509, EE6133 – HK2 2011/2012 16 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
CÓ THỂ BẠN MUỐN DOWNLOAD
-
LẬP TRÌNH WEB ĐỘNG VỚI PHP / MySQL
132 p | 1543 | 778
-
Hướng dẫn học lập trình PHP &MySQL
56 p | 906 | 362
-
Thủ thuật lập trình web động với PHP / MySQL
41 p | 369 | 182
-
Giáo trình PHP– MYSQL
74 p | 271 | 96
-
Lập trình Web-Chương 6: Tổng quan về MySQL
55 p | 313 | 84
-
CÁCH KẾT NỐI CSDL MYSQL TỪ CHƯƠNG TRÌNH VC# TRONG MÔI TRƯỜNG VISUAL STUDIO 2005
5 p | 217 | 54
-
MS SQL và MySQL đều có những điểm đặc thù của chúng
2 p | 228 | 44
-
Lập trình web-Chương 4: Hàm
58 p | 112 | 42
-
Ảo hóa tài khoản người dùng và tên miền
49 p | 119 | 22
-
Bài giảng Lập trình web: Chương 4 - ThS. Nguyễn Minh Vi
77 p | 133 | 18
-
ĐỀ KIỂM TRA GIỮA KÌ MÔN: LẬP TRÌNH MẠNG 2
1 p | 103 | 11
-
Thực hành tạo website hướng database bằng PHP và MySQL (Tập 2): Phần 2
107 p | 18 | 11
-
MySQL 1
3 p | 75 | 10
-
Tin Học Quản Trị - Hệ Cơ Sở Dữ Liệu phần 7
12 p | 78 | 8
-
Cài đặt PowerDNS (với MySQL Backend) và Poweradmin trên Debian Squeeze
20 p | 85 | 5
-
DỮ LIỆU DẠNG FILE
28 p | 67 | 5
-
Bài giảng Phần mềm nguồn mở: Chương 3.5 - Võ Đức Quang (Phần 3)
17 p | 51 | 4
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn