操作系統是Linux,需要mysql客戶端軟件開發庫libmysqlclient,這個函數庫是mysql的組成部分之一。 一般頭文件都在/usr/include/mysql路徑下,庫文件都在/usr/lib/mysql路徑下。 如果沒有需要安裝mysql-devel包(mysql-devel-5.1.47-4.el6.i686.rpm) [**@**]# rpm -ivh mysql-devel-5.1.47-4.el6.i686.rpm 安裝完成後可以去那兩個路徑下看看有沒有,如果沒有就查找一下 [**@**]# find / -name mysql.h [**@**]# find / -name mysqlclient 看一下路徑在哪裡。 安裝完成後,就可以編譯連接C源程序了。 [**@**]# gcc -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient *.c 編譯成功即可運行。 解釋下: gcc GNU C/C++編譯器 -I指定頭文件所在路徑(大寫i) -L 指定庫文件所在路徑 -l 與所需要的動態鏈接庫鏈接起來(小寫L) 這麼長的編譯命令一般都在make文件裡面寫了 關於動態鏈接庫可以添加一個環境變量 [**@**]# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usrlib/mysql 不過一勞永逸的辦法是:將這句話LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usrlib/mysql添加在.bashrc裡面 最後源碼: [cpp] #include <stdio.h> #include <mysql.h> int main(int argc, char *argv[]) { int i; MYSQL *conn; // connection to MySQL server MYSQL_RES *result; // result of SELECT query MYSQL_ROW row; // one record (row) of SELECT query // connect to MySQL conn = mysql_init(NULL); // mysql_options(conn, MYSQL_READ_DEFAULT_GROUP, "myclient"); if(mysql_real_connect( conn, "localhost", "root", "uranus", //此處更改用戶名密碼 "mylibrary", 0, NULL, 0) == NULL) { fprintf(stderr, "sorry, no database connection ...\n"); return 1; } // only if utf8 output is needed mysql_query(conn, "SET NAMES 'utf8'"); // retrieve list of all publishers in mylibrary const char *sql="SELECT COUNT(titleID), publName \ FROM publishers, titles \ WHERE publishers.publID = titles.publID \ GROUP BY publishers.publID \ ORDER BY publName"; if(mysql_query(conn, sql)) { fprintf(stderr, "%s\n", mysql_error(conn)); fprintf(stderr, "Fehlernummer %i\n", mysql_errno(conn)); fprintf(stderr, "%s\n", sql); return 1; } // process results result = mysql_store_result(conn); if(result==NULL) { if(mysql_error(conn)) fprintf(stderr, "%s\n", mysql_error(conn)); else fprintf(stderr, "%s\n", "unknown error\n"); return 1; } printf("%i records found\n", (int)mysql_num_rows(result)); // loop through all found rows while((row = mysql_fetch_row(result)) != NULL) { for(i=0; i < mysql_num_fields(result); i++) { if(row[i] == NULL) printf("[NULL]\t"); else printf("%s\t", row[i]); } printf("\n"); } // de-allocate memory of result, close connection mysql_free_result(result); mysql_close(conn); return 0; }