您的位置:首页 > 运维架构 > Linux

linux下C语言操作mysql数据库(系统自带版本3.23.54)

2011-04-12 23:58 531 查看
我的上一篇blog介绍了在linux环境下如何安装配置系统自带的mysql数据库,并列举了mysql的一些简单的操作。接下来我将介绍一下如何利用mysql提供给我们的API来访问并操作mysql数据库(C语言)。

首先,我们需要安装mysql-devel-3.23.54a-11.i386.rpm包,这样我们才能使用mysql提供的API和类库。mysql-devel-3.23.54a-11.i386.rpm的下载地址:http://d.download.csdn.net/down/3185399/piaojun_pj。下载之后将安装包放到/usr/local/mysql目录下(个人习惯),你也可以放在别的目录下,然后在终端输入指令,安装devel包,如下所示。



接着我们先建立一个数据库(mydb)和一个表(myuser)。



然后我们编写一个小的测试程序。

mysql_test.c

#include <mysql/mysql.h>
#include <stdlib.h>

#define HOST "localhost"
#define USERNAME "root"
#define PASSWD "123456"
#define DATABASE "mydb"

int main()
{
// connect to mysql database
MYSQL* connection;
connection = mysql_init(NULL);
if(!mysql_real_connect(connection,HOST,USERNAME,PASSWD,DATABASE,0,NULL,0))
{
perror("mysql connection failed");
mysql_close(connection);
exit(EXIT_FAILURE);
}
// exec sql query
MYSQL_RES* res_ptr;
MYSQL_FIELD* field;
MYSQL_ROW row;
char* sql = "SELECT * FROM myuser";
if(mysql_query(connection,sql) != 0)
{
perror("mysql query failed");
exit(EXIT_FAILURE);
}
// get the query result
if((res_ptr = mysql_store_result(connection)) != NULL)
{
int col_num = mysql_num_fields(res_ptr);
int row_num = mysql_num_rows(res_ptr);
// print the fields name
int i;
for(i = 0;i < col_num;i++)
{
field = mysql_fetch_field(res_ptr);
printf("%s  ",field->name);
}
printf("/n");
// print query result
for(i = 0;i < row_num;i++)
{
row = mysql_fetch_row(res_ptr);
int j;
for(j = 0;j < col_num;j++)
{
printf("%s   ",row[j]);
}
printf("/n");
}
}
// disconnect mysql
mysql_close(connection);

return 0;
}


makefile

#makefile for mysql_test

mysql_test:mysql_test.c
gcc mysql_test.c -o mysql_test -L/usr/lib/mysql -lmysqlclient


程序运行结果如下。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: