Linux下C語言學習筆記—操作MySQL
注:下面的所有例子在mandriva linux下測試通過
1,使用c語言操作mysql之前,先在mysql里頭創建一個數據庫,一個表,在表里頭添加數據如下:
創建數據庫,庫名為cusemysql:
mysql>create database cusemysql;
創建表,表名為:
mysql>use cusemysql;
mysql>create table children(childno int not null unique,fname varchar(20),age int);
添加一點數據哦:
mysql>insert into children values(5,"anny",10);
對拉,為了方便起見,把表的大致樣子給大家看看
childno fname age
1 小星 9
2 大量 15
//////////////////
/* select1.c */
#include
#include
#include
#include "/usr/include/mysql/mysql.h"
int main(int argc, char *argv[])
{
MYSQL my_connection;
MYSQL_RES *res_ptr; /*指向檢索的結果存放地址的指針*/
MYSQL_ROW sqlrow; /*返回的記錄信息*/
MYSQL_FIELD *fd; /*字段結構指針*/
char aszflds[25][25]; /*用來存放各字段名*/
int res; /*執行查詢操作后的返回標志*/
int i,j,k;
mysql_init(&my_connection);
/*mysql_real_connect(&mysql,host,user,passwd,dbname,0,NULL,0) == NULL)*/
if (mysql_real_connect(&my_connection, "127.0.0.1", "root", "你的密碼","cusemysql",0,NULL,CLIENT_FOUND_ROWS))
{
printf("Connection success\n");
res = mysql_query(&my_connection, "select childno,fname,age from children where age<20");
if (res)
{
printf("SELECT error:%s\n",mysql_error(&my_connection));
}
else
{
res_ptr=mysql_store_result(&my_connection);
if(res_ptr)
{
printf("Retrieved %lu Rows\n",(unsigned long)mysql_num_rows(res_ptr));
/*取得各字段名*/
for(i=0;fd=mysql_fetch_field(res_ptr);i++)
strcpy(aszflds[i],fd->name);
/*輸出各條記錄*/
printf("下面是檢索出的各條記錄信息:\n");
j=mysql_num_fields(res_ptr);
for(i=0;i
printf("%s\t",aszflds[i]);
printf("\n");
while((sqlrow=mysql_fetch_row(res_ptr)))
{
for(i=0;i
printf("%s\t",sqlrow[i]);
printf("\n");
}
if (mysql_errno(&my_connection))
{
fprintf(stderr,"Retrive error:s\n",mysql_error(&my_connection));
}
}
mysql_free_result(res_ptr);
}
mysql_close(&my_connection);
}
else
{
fprintf(stderr, "Connection failed\n");
if (mysql_errno(&my_connection))
{
fprintf(stderr, "Connection error %d: %s\n",
mysql_errno(&my_connection),
mysql_error(&my_connection));
}
}
return EXIT_SUCCESS;
}
//////////////////////////////////////
主要要注意的幾個地方是:
1,mysql.h的路徑,必須確定它的絕對路徑哦(這句話是錯誤的,只要在編譯是把對應庫編譯進去即可,具體操作方法請查詢本博客)
2,注意你的數據庫的用戶名和密碼是否正確
3,在編譯的時候必須包含這個庫文件mysqlclient.a[記不太清楚,不過你可以直接包含它所在的目錄下的所有庫,肯定就沒有問題,
各方意見:
一.
編譯方法有點不規范。
正確的應該是這樣:
1.在程序開頭包含頭文件應這樣寫:
#include
我的路徑是 "/usr/include/mysql“所以這里很重要
2.編譯應這樣寫:(原文)
$ gcc -o mysql mysql.c `mysql_config --cflags --libs`(我測試了,不可用,估計大的思想是對的)
我用的命令
$gcc -o select $(mysql_config --cflags) select.c $(mysql_config --libs)
關鍵字:數據庫、mysql
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解