您的位置:首页 > 编程语言 > C语言/C++

mysql c语言操作

2015-07-21 15:26 232 查看
在 c 语言中调用 mysql 的 api 函数实现:

连接数据库

查询数据库

修改数据库中某一项的值

#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include "mysql.h"  //我的机器上该文件在/usr/include/mysql下

#define SELECT_QUERY "select * from mytable where name like '%s'"
//#define ALL_QUERY "select * from mytable;"

MYSQL mysql, *sock; //定义数据连接句柄

/*******************************************
函数名:    service_sql_init
功能:     服务器数据库初始化
*********************************************/

int service_sql_init(void)
{
mysql_init(&mysql);
/* 连接上数据库 */
//  if(!(sock = mysql_real_connect(&mysql, "localhost", "root", "my-name-is?lza1205", "rt5350_user_list", 0, NULL, 0))){
if(!(sock = mysql_real_connect(&mysql, "localhost", "root", "123456", "agent_user_list", 0, NULL, 0))){
fprintf(stderr, "Couldn't connect to engine!\n%s\n\n", mysql_error(&mysql));
perror("");
exit(1);
}

app_printf("mysql init is ok \r\n");
return 0;
}

/*******************************************
函数名:    service_sql_select
功能:     根据name 从服务器中找出passwd
*********************************************/

int service_sql_select(char *name, char *passwd)
{
MYSQL_RES   *res;   //查询结果集
//  MYSQL_FIELD *fd;    //包含字段信息
MYSQL_ROW   row;    //存放一行查询结果的字符串数组
char qbuf[160];     //存放查询 sql 语句字符串

sprintf(qbuf, SELECT_QUERY, name);
printf("qbuf is %s\n", qbuf);
/* 查询数据库 */
if(mysql_query(sock, qbuf)){
fprintf(stderr, "Query failed (%s)\n", mysql_error(sock));
return -1;
}

if(!(res = mysql_store_result(sock))){
fprintf(stderr, "Couldn't get result from %s\n", mysql_error(sock));
return -1;
}

printf("number of fields returned : %d\n", mysql_num_fields(res));
while((row = mysql_fetch_row(res))){
printf("Ther name #%s 's passwd is: %s\n", (((row[0]==NULL)&&(!strlen(row[0]))) ? "NULL" : row[0]),
(((row[1]==NULL)&&(!strlen(row[1]))) ? "NULL" : row[1]));
puts( "query ok !\n" ) ;
strcpy(passwd, (((row[1]==NULL)&&(!strlen(row[1]))) ? "NULL" : row[1]));
mysql_free_result(res);
return 0;
}

mysql_free_result(res);
return -1;
//    mysql_close(sock);
}

#define UPDATE_STRING_QUERY "update mytable set %s=\'%s\' where name=\'%s\'"
#define UPDATE_INT_QUERY "update mytable set %s=%d where name=\'%s\'"

/* 根据名字修改数据库中的某项 */
int server_sql_update_string(char *name, char *key, char *val)
{
char qbuf[160];     //存放查询 sql 语句字符串

sprintf(qbuf, UPDATE_STRING_QUERY, key, val, name);
printf("qbuf is %s\n", qbuf);
/* 查询数据库 */
if(mysql_query(sock, qbuf)){
fprintf(stderr, "Query failed (%s)\n", mysql_error(sock));
return -1;
}
return 0;
}

int server_sql_update_int(char *name, char *key, unsigned int val)
{
char qbuf[160];     //存放查询 sql 语句字符串

sprintf(qbuf, UPDATE_INT_QUERY, key, val, name);
printf("qbuf is %s\n", qbuf);
/* 查询数据库 */
if(mysql_query(sock, qbuf)){
fprintf(stderr, "Query failed (%s)\n", mysql_error(sock));
return -1;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: