linux 下c语言连接mysql
初接触mysql并且连接c语言的时候,在网上找了很多资料,实际用到的很少,所以在成功之后做个总结。
c语言连接mysql必须下载数据库连接器,这里是mysql-connecter-c
1. 安装mysql_server 和 mysql_client,linux下一般不用源码安装而直接apt-get 或 yum安装的话,这两个都会自动安装。
2. 下载mysql-connecter-c源码,可以去本人上传的资源下载,本人是64位linux系统,不确定其它是否可用。
3. 安装cmake
要安装此连接器必须安装cmake
1)apt-get install cmake 安装cmake
2)下载cmake源码包安装
3)不同linux安装命令不同
4. tar zxvf ... 解压此文件
1)cd 进入此目录2)cmake -G "Unix Makefiles"
3)make
4)make install
5. 在此目录下
1)1)cp -r /usr/local/mysql/bin/ /usr/bin
2)cp -r /usr/local/mysql/lib/ /usr/lib
3) cp -r /usr/local/mysql/include/ /usr/include
这样在包含头文件时,就可以直接写成#include<mysql.h>
6. 编写*.c连接数据库程序
例如:test.c
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include "mysql.h"
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include "mysql.h"
int main(void)
{
MYSQL *conn_ptr;
MYSQL_RES *res;
MYSQL_ROW row;
{
MYSQL *conn_ptr;
MYSQL_RES *res;
MYSQL_ROW row;
char *host = "127.0.0.1";
char *user = "root";
char *password = "";
char *db = "mysql";
unsigned int port = 0;
char *unix_socket = NULL;
unsigned long client_flag = 0;
char *user = "root";
char *password = "";
char *db = "mysql";
unsigned int port = 0;
char *unix_socket = NULL;
unsigned long client_flag = 0;
conn_ptr = mysql_init(NULL);
if(!conn_ptr)
{
fprintf(stderr, "init mysql failed\n");
return(-1);
}
if(!conn_ptr)
{
fprintf(stderr, "init mysql failed\n");
return(-1);
}
conn_ptr = mysql_real_connect(conn_ptr, host, user, password, db, port, unix_socket, client_flag);
if(conn_ptr)
{
printf("Connection success......\n");
}
else
{
fprintf(stderr, "Connection failed......%d:%s\n", errno, strerror(errno));
}
if(conn_ptr)
{
printf("Connection success......\n");
}
else
{
fprintf(stderr, "Connection failed......%d:%s\n", errno, strerror(errno));
}
if( mysql_query(conn_ptr, "select host,user from user"))
{
fprintf(stderr, "call mysql_query failed......%d:%s\n",errno, strerror(errno));
}
{
fprintf(stderr, "call mysql_query failed......%d:%s\n",errno, strerror(errno));
}
res = mysql_use_result(conn_ptr);
fprintf(stdout, "select host, user from user talbe in the mysql database:\n");
while((row = mysql_fetch_row(res)))
{
fprintf(stdout, "%s\t%s\n", row[0], row[1]);
}
{
fprintf(stdout, "%s\t%s\n", row[0], row[1]);
}
mysql_free_result(res);
mysql_close(conn_ptr);
return 0;
}
mysql_close(conn_ptr);
return 0;
}
7. 编译连接test.c
gcc test.c -o test -Wall -L /usr/lib/lib -lmysqlclient
在运行程序之前,一定要开启mysql服务
/etc/init.c/mysql start //开启mysql
/etc/init.c/mysql start //开启mysql
#./test 运行结果
Connection success......
select host, user from user talbe in the mysql database:
127.0.0.1 root
localhost
localhost root
select host, user from user talbe in the mysql database:
127.0.0.1 root
localhost
localhost root
自己实践,已经在使用中
部分参考http://blog.chinaunix.net/uid-26758020-id-3289515.html