Mysql c api事务多次交互_MySQL C API的一次调用体验

Mysql提供了标准的c API,

要引用进去,需要安装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了,安装完mysql-devel后,在/usr/include/mysql下可发现mysql的头文件,/usr/lib/mysql下可以发现mysql的库文件;这是我们编译和连接所需要的。

用mysql数据库自带的test数据库来测试一下吧:

首先我在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

#include

#include

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

{

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;

}

期间当然出来不少问题了,比如mysql的实例是一个引用变量,常常会忽略,或者误写为%,还有,strlen函数从属于string.h的头文件,我一直误认为是在stdio.h中,呵呵,手生的很呢

最重要的时候到了,呵呵,自然是要mysql的库文件和头文件了;

gcc testsql.c -I/usr/include/mysql -L/usr/lib/mysql –lmysqlclient

如果不出意外,当然,我是指天塌下来,应该是能顺利编译通过的;

运行的话,当然会打印记录喽;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值