#include<mysql.h>
#include<stdio.h>
#include<string.h>
char* host = "*********";
char* user = "**********";
char* password = "******";
char* name = "*********";
short port = 3306;
int main()
{
char* select = "SELECT nick,love,beautiful,wisdom FROM XHX_80.t_xhx_2 where userid=6102480";
MYSQL* conn;
MYSQL_RES* res;
conn = mysql_init(NULL);
if(mysql_real_connect(conn, host, user, password, name, port,NULL ,0 ) )
{
printf("conncet_success\n");
}
else
{
printf("connect_failed!\n");
}
if(0 == mysql_real_query(conn, select, strlen(select) ) )
{
printf("select success!\n");
}
res = mysql_store_result(conn);
if (res)
{
int lines = mysql_num_rows(res);
int cols = mysql_num_fields(res);
printf("line:%d,cols:%d\n",lines,cols);
MYSQL_FIELD* _fn = NULL;
for(;_fn = mysql_fetch_field(res);)
{
printf("%s\t",_fn->name);
}
printf("\n");
int i = 0;
for(; i< lines; i++)
{
MYSQL_ROW row =mysql_fetch_row(res);
int j = 0;
for( ; j < cols; j++)
{
printf("%s\t",row[j]);
}
printf("\n");
}
}
mysql_free_result(res);
mysql_close(conn);
return 0;
}
这里主要展示了select语句;insert等不需要返回内容的语句就更加简单了。
这里连接的是公司的数据库,小伙伴要测试的话请自行修改参数。
Mysq API:主要就是那么几个
MYSQL* conn 这个conn是一个数据库链接句柄,以后的操作实际上就是操作这个句柄;
so : conn = mysql_init(NULL);
初始化获得一个mysql句柄; 失败返回null
mysql的连接函数有两个:
mysql_connect 但是在mysql 官方手册中这么说的:
This function is deprecated. Use mysql_real_connect() instead.
这个函数是弃用。使用mysql_real_connect()。
so 大家尽量使用mysql_real_connect() 。当然某些低版本 mysql应该是可以用的。
函数mysql_real_connect建立一个到mysql数据库的链接。调用这个函数要提供 链接句柄、主机名、用户、密码等参数,最后四个参数依次是数据库名、端口、unix套接字和客户端标志。
if (mysql_real_connect(conn, "localhost", "user",
"passwd", NULL, 0, NULL, 0) == NULL) {
printf("Error %u: %s\n", mysql_errno(conn), mysql_error(conn));
exit(1);
}
用户和密码参数使用任何字符集为MYSQL配置对象;
如果端口不是0,该值用于TCP / IP连接的端口号。
如果unix_socket不是NULL,字符串指定套接字或命名管道使用。
client_flag的价值通常是0,但可以设置为下列标志的组合,使某些特性。
flag详细说明有一张表,大家可以去下面这个网址去看。
https://dev.mysql.com/doc/refman/5.5/en/mysql-real-connect.html
int mysql_real_query(MYSQL *mysql, const char *query, unsigned int length)
参数三个,第一个就是那个mysql句柄,第二个就是一个字符串,也就是相应的sql语句;第三个长度,一般strlen(mysql)就ok;你不应该在语句后增加一个终止的分号(“;”)或\g。
对于mysql查询结果 有一个专门的数据类型:
MYSQL_RES 查询结果会存在这个文件句柄里,操作这个句柄即可得到相应的内容;
RES = MYSQL_RES *mysql_store_result(MYSQL *mysql);
这个大家请看上面代码吧,基本写法差不多。
最好说道编译,要加头文件 mysql.h;并且要链接库;
-I/usr/include/mysql/ -L/usr/lib/mysql -lmysqlclient
例如 gcc -o test test.c -I/usr/include/mysql/ -L/usr/lib/mysql -lmysqlclient 最后面这个东西是要安装的;