banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành Windows Kết nối tới MySQL database bằng ngôn ngữ C  XML
  [Question]   Kết nối tới MySQL database bằng ngôn ngữ C 02/01/2008 07:41:03 (+0700) | #1 | 107611
[Avatar]
onlinehack
Member

[Minus]    0    [Plus]
Joined: 04/12/2007 23:07:12
Messages: 116
Location: Ma maison
Offline
[Profile] [PM]
MySQL database cũng hỗ trợ các C program API giống như PHP và Perl
Các C API code được phân phối với MySQL. Nó được bao gồm trong thư việc mysqlclient và cho phép chương trình C truy cập database

Nhiều client trong các bản phân phối source MySQL được viết bằng C. Nếu bạn muốn tìm kiếm ví dụ minh hoạ cách sử dụng C API, hãy tham khảo các client này. Bạn có thể tìm thấy chúng trong các thư mục client của bản phân phối source MySQL.

Yêu cầu :
Bạn phải chắc chắn là đã có môi trường phát triển được cài đặt chẳng hạn như gcc, mysql development package.. . Danh sách sau tóm tắc các package để biên dịch chương trình :

* mysql: Chương trình và thư viện chia sẻ MySQL client
* mysqlclient: Thư việc chia sẻ MySQL backlevel
* mysql-devel: Files để phát triển ứng dụng MySQL
* mysql-server: Mysql server
* gcc, make and other development libs: trình dịch GNU C

Một chương trình C đơn giản

Các chỉ dẫn sau nên làm trên các Linux distro hay UNIX. Đây là một chương trình nhỏ kết nối đến mysql server và liệt kê các table từ mysql database :

Code:
/* Simple C program that connects to MySQL Database server*/
#include <mysql.h>
#include <stdio.h>

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

   char *server = “localhost”;
   char *user = “root”;
   char *password = “PASSWORD”; /* set me first */
   char *database = “mysql”;

   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));
      exit(1);
   }

   /* send SQL query */
   if (mysql_query(conn, “show tables”)) {
      fprintf(stderr, “%s\n“, mysql_error(conn));
      exit(1);
   }

   res = mysql_use_result(conn);

   /* output table name */
   printf(“MySQL Tables in mysql database:\n“);
   while ((row = mysql_fetch_row(res)) != NULL)
      printf(“%s \n“, row[0]);

   /* close connection */
   mysql_free_result(res);
   mysql_close(conn);
}


Làm thế nào để biên dịch chương trình sử dụng MySQL libs?

MySQL đi kèm với script đặc biệt gọi là mysql_config. Nó cung cấp cho bạn các thông tin hữu ích để biên dịch MySQL client và kết nối đến MySQL database server. Bạn cần làm theo các chỉ dẫn sau :

Tuỳ chọn –libs - Thư viện và tuỳ chọn đòi hỏi để kết nối với MySQL client library.

Code:
$ mysql_config --libs


Kết quả:

Code:
-L/usr/lib64/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib64 -lssl -lcrypto


Tuỳ chọn –cflags - Compiler flag để tìm kiếm các include file và critical compiler flag sử dụng khi biên dịch thư viện libmysqlclient.

Code:
$ mysql_config --cflags
:

Kết quả

Code:
-I/usr/include/mysql -g -pipe -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing


Bạn gần phải sử dụng các option trên cho trình dịch GNU C . Do đó để biên dịch chương trình trên, nhập:

Code:
$ gcc -o output-file $(mysql_config –cflags) mysql-c-api.c $(mysql_config –libs)


Thực thi chương trình :
Code:
$ ./output-file
Kêt quả:

[code]
MySQL Tables in mysql database:
columns_priv
db
func
help_category
help_keyword
help_relation
help_topic
host
tables_priv
time_zone
time_zone_leap_second
time_zone_name
time_zone_transition
time_zone_transition_type
user


Tham khảo:
http://dev.mysql.com/doc/refman/5.0/en/c.html

Bài viết tham khảo từ nixCraft
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|