想知道到CentOS MySQL系统的真相么,想知道CentOS MySQL系统中藏有的内在奥义么,只有我来给大家全面讲解介绍CentOS MySQL系统CentOS MySQL CAPI的一次调用体验CentOS MySQL提供了标准的CAPI。
要引用进去,需要安装mysql-devel包,在centos下,我直接yum install mysql-devel,结果恰好应为重新设置过yum源,下载过程中总是提示GPG key error;google的结果是:如果你的YUM是透过代理来访问CentOS的更新源的话,有可能出现如下错误:GPG key retrieval failed 原因可能是GPG key文件中有一些http协议中的控制字符。其实,你可以在某一个更新源上下载一个RPM-GPG-KEY-CentOS # wget http://centos.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-5 # rpm --import RPM-GPG-KEY-CentOS-5
运行后,果然非常OK了,安装完CentOS MySQL-devel后,在/usr/include/mysql下可发现CentOS MySQL的头文件,/usr/lib/mysql下可以发现CentOS MySQL的库文件;这是我们编译和连接所需要的。用CentOS MySQL数据库自带的test数据库来测试一下吧:首先我在CentOS MySQL的test库中创建了一个table T1 ;create table T1(id int(11) default NULL, name varchar(100) default NULL);
插入两条临时数据:insert into T1 (id,name) values(“1001”,“the grade is good!”);insert into T1 (id,name) values(“1002”, “the grade is good also!”);
查看表结构:
desc T1;或者show columns from t1;接下来我们来使用轮子吧,大概是嘲讽吧,大家都喜欢把类库称为轮子,这个轮子真有点大,我们来看下吧!
#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; }
期间当然出来不少问题了,比如CentOS MySQL的实例是一个引用变量,常常会忽略,或者误写为%,还有,strlen函数从属于string.h的头文件,我一直误认为是在stdio.h中,呵呵,手生的很呢最重要的时候到了,呵呵,自然是要CentOS MySQL的库文件和头文件了;gcc testsql.c -I/usr/include/mysql -L/usr/lib/mysql –lmysqlclient如果不出意外,当然,我是指天塌下来,应该是能顺利编译通过的;运行的话,当然会打印记录喽;
【编辑推荐】