两个月前,也就是9月份,心血来潮在windows下实现了用C连接数据库,当时很是有把linux下一并给实现了。但是没有想得那么简单。这个任务一直推迟到了现在才完成,究其原因:1.我直接用eclipse开发工具,对于环境变量的设置不是很熟。2.linux系统库文件结构不熟悉,对于mysql提供的库文件没有放对位置。3.当时比较烦躁,没有沉下心来好好的学习。
两个月后的今天终于不经意的弄好了,虽然不是什么大的突破,但是对于一个初学C语言的人来说,这可是一个突破。代码如下:#include "include/mysql.h"
#include "include/errmsg.h"
#include
/**
* Define the QUERY STATUS
* */
#define QUERY_SUCCESS 1
int main(int argc, char* argv[])
{
MYSQL mysql;
MYSQL_ROW row;
MYSQL_FIELD *field;
mysql_init(&mysql);
mysql_options(&mysql,MYSQL_SET_CHARSET_NAME,"gb2312");
if(mysql_real_connect(&mysql,"localhost","root","root","test",3306,0,0))
{
mysql_select_db(&mysql,"test");
//insert
mysql_query(&mysql,"insert into ids values(2);");
//query
mysql_query(&mysql,"select id from ids");
MYSQL_RES* mysql_res = mysql_store_result(&mysql);
while((row = mysql_fetch_row(mysql_res)) != NULL){
for(unsigned int j = 0; j < mysql_num_fields(mysql_res); j++){
field = mysql_fetch_field_direct(mysql_res, j);
printf("%s %s ",field->table,field->name);
}
}
//update
mysql_query(&mysql,"update ids set id = 123");
//delete
mysql_query(&mysql,"delete from ids where id = 1");
return QUERY_SUCCESS;
}
else
{
int err = mysql_errno(&mysql);
printf("错误:%d",err);
}
mysql_close(&mysql);
return 0;
}对于
其实在linux和windows下mysql的操作是一样的,只是mysql的库文件放置的位置不同而已。
在linux下把libmysql.so.16拷贝到/usr/lib目录下,一切正常。别忘了开mysql数据库服务。