CentOS MySQL系統(tǒng)是編譯和連接所需要的
想知道到CentOS MySQL系統(tǒng)的真相么,想知道CentOS MySQL系統(tǒng)中藏有的內(nèi)在奧義么,只有我來給大家全面講解介紹CentOS MySQL系統(tǒng)CentOS MySQL CAPI的一次調(diào)用體驗(yàn)CentOS MySQL提供了標(biāo)準(zhǔn)的CAPI。
要引用進(jìn)去,需要安裝mysql-devel包,在centos下,我直接yum install mysql-devel,結(jié)果恰好應(yīng)為重新設(shè)置過yum源,下載過程中總是提示GPG key error;google的結(jié)果是:如果你的YUM是透過代理來訪問CentOS的更新源的話,有可能出現(xiàn)如下錯(cuò)誤:GPG key retrieval failed 原因可能是GPG key文件中有一些http協(xié)議中的控制字符。其實(shí),你可以在某一個(gè)更新源上下載一個(gè)RPM-GPG-KEY-CentOS # wget http://centos.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-5 # rpm --import RPM-GPG-KEY-CentOS-5
運(yùn)行后,果然非常OK了,安裝完CentOS MySQL-devel后,在/usr/include/mysql下可發(fā)現(xiàn)CentOS MySQL的頭文件,/usr/lib/mysql下可以發(fā)現(xiàn)CentOS MySQL的庫文件;這是我們編譯和連接所需要的。用CentOS MySQL數(shù)據(jù)庫自帶的test數(shù)據(jù)庫來測試一下吧:首先我在CentOS MySQL的test庫中創(chuàng)建了一個(gè)table T1 ;create table T1(id int(11) default NULL, name varchar(100) default NULL);
插入兩條臨時(shí)數(shù)據(jù):insert into T1 (id,name) values(“1001”,“the grade is good!”);insert into T1 (id,name) values(“1002”, “the grade is good also!”);
查看表結(jié)構(gòu):
desc T1;或者show columns from t1;接下來我們來使用輪子吧,大概是嘲諷吧,大家都喜歡把類庫稱為輪子,這個(gè)輪子真有點(diǎn)大,我們來看下吧!
#include <mysql.h>
#include <stdio.h>
#include <string.h>
int main() { MYSQL mysql; //need a instance to init MYSQL_RES *res; MYSQL_ROW row; char *query; int t,r; //connect the database mysql_init_($mysql);
if(!mysql_real_connect(&mysql,"localhost","","","test",0,NULL,0)) {printf("Error connecting to database:%s\n", mysql_error($mysql)); } else printf("Connected ..\n"); //get the result from the executing select query query = "select * from t1"; t = mysql_real_query(&mysql,query,(unsigned int)strlen(query)); if(t)
{printf("Error making query:%s\n",mysql_error(&mysql);} else printf("[%s] made..\n",query); res = mysql_store_result(&mysql); while(row = mysql_fetch_row(res)) {for(t=0;t<mysql_num_fields(res);t++) { printf("%s",row[t]); } printf("\n");} printf("mysql_free_result...\n"); mysql_free_result(res);//free result after you get the result sleep(1); mysql_close(&mysql); return 0; }
期間當(dāng)然出來不少問題了,比如CentOS MySQL的實(shí)例是一個(gè)引用變量,常常會(huì)忽略,或者誤寫為%,還有,strlen函數(shù)從屬于string.h的頭文件,我一直誤認(rèn)為是在stdio.h中,呵呵,手生的很呢最重要的時(shí)候到了,呵呵,自然是要CentOS MySQL的庫文件和頭文件了;gcc testsql.c -I/usr/include/mysql -L/usr/lib/mysql –lmysqlclient如果不出意外,當(dāng)然,我是指天塌下來,應(yīng)該是能順利編譯通過的;運(yùn)行的話,當(dāng)然會(huì)打印記錄嘍;
【編輯推薦】