用C語言操作MySQL資料庫,進行連線、插入、修改、刪除等操作
阿新 • • 發佈:2018-12-27
很多人用到MySQL來開發一些專案,有時為了效能,我們會直接用C語言來開發相關的模組,尤其在我們的web應用中,雖然PHP、JSP等指令碼均提供了MySQL的介面,但是顯然直接使用C語言具有更好的安全性和效能,Michael以前用PHP開發的多個專案中就使用了C語言編寫的這類介面,然後再編譯到php裡面,供php指令碼直接使用,這方面的話題就不多說了,下面主要說一下在Linux下如何用C語言連線MySQL資料庫,並且讀取裡面的資料返回,同時如何進行編譯。
這裡的大部分程式碼參考了MySQL發行包裡面的.c原始檔,大家也可以去裡面找找相關的程式碼,下面這段程式碼實現了連線到本地MySQL伺服器上9tmd_bbs_utf8資料庫,從資料表tbb_user中根據輸入的userid取得該使用者的使用者名稱並列印輸出到終端。
}mysql_init(&mysql);
if(!(sock = mysql_real_connect(&mysql,"localhost","dbuser","dbpwd","9tmd_bbs_utf8",0,NULL,0))){fprintf(stderr,"Couldn't connect to engine!/n%s/n/n",mysql_error(&mysql));
perror("");
exit(1);
}sprintf(qbuf,SELECT_QUERY,atoi(argv[1]));
if(mysql_query(sock,qbuf)){fprintf(stderr,"Query failed (%s)/n",mysql_error(sock));
exit(1);
}if(!(res=mysql_store_result(sock))){fprintf(stderr,"Couldn't get result from %s/n", mysql_error(sock));
exit(1);
}printf("number of fields returned: %d/n",mysql_num_fields(res));
while(row = mysql_fetch_row(res)){printf("Ther userid #%d 's username is: %s/n", atoi(argv[1]),(((row[0]==NULL)&&(!strlen(row[0]))) ? "NULL" : row[0])) ;
puts("query ok !/n") ;
}mysql_free_result(res);
mysql_close(sock);
exit(0);
return0; //. 為了相容大部分的編譯器加入此行}
編譯的時候,使用下面的命令
gcc -o mysql_select ./mysql_select.c -I/usr/local/include/mysql -L/usr/local/lib/mysql -lmysqlclient (-lz) (-lm) 後面兩個選項可選,根據您的環境情況執行的時候,執行下面的命令
./mysql_select 1將返回如下結果:
number of fields returned: 1Ther userid #1 's username is: Michael
query ok !
上面的程式碼我想大部分都能看明白,不明白的可以參考一下MySQL提供的有關C語言API部分文件,各個函式都有詳細說明,有時間我整理一份常用的API說明出來。