c语言 mysql 封装_mysql c语言接口。个人封装

本文介绍了如何使用C语言封装MySQL数据库的连接和查询操作。包括`service_sql_init`进行数据库初始化,`service_sql_select`根据姓名查询密码,以及更新和插入数据的函数。示例代码展示了如何连接到数据库并执行SQL查询。
摘要由CSDN通过智能技术生成

#include

#include

#include

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

/***********************************************************/

/*

一下操作的表。表名为 mytable

*/

/************************************************************/

#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);

}

/* 释放结果集 */

void __mysql_free_result(void)

{

MYSQL_RES *res; //查询结果集

do

{

if (!(res= mysql_store_result(sock)))

{

return;

}

mysql_free_result(res);

} while (!mysql_next_result(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;

}

/*

下面的函数可以指定某个表格

*/

#define UPDATE_TABLE_STRING_QUERY "update %s set %s=\'%s\' where code=\'%s\'"

#define UPDATE_TABLE_INT_QUERY "update %s set %s=%d where code=\'%s\'"

/*

table :表名

name: 索引

key: 修改的项

val: 修改值

*/

/* 根据索引修改数据库中的某项 */

int sql_table_update_string(char *table, char *name, char *key, char *val)

{

char qbuf[160]; //存放查询 sql 语句字符串

sprintf(qbuf, UPDATE_TABLE_STRING_QUERY, table, 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 sql_table_update_int(char *table, char *name, char *key, unsigned int val)

{

char qbuf[160]; //存放查询 sql 语句字符串

sprintf(qbuf, UPDATE_TABLE_INT_QUERY, table, 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;

}

/* 查询数据库中是否有这个元素 */

#define SELECT_STRING_QUERY "select * from %s where %s like \'%s\'"

int sql_table_select_string(char *table, char *key, char *val)

{

char qbuf[160]; //存放查询 sql 语句字符串

MYSQL_RES *res; //查询结果集

// MYSQL_FIELD *fd; //包含字段信息

MYSQL_ROW row; //存放一行查询结果的字符串数组

sprintf(qbuf, SELECT_STRING_QUERY, table, key, val);

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))){

mysql_free_result(res);

return 0;

}

mysql_free_result(res);

return -1;

}

/* 往数据库中插入元素 */

#define INSERT_STRING_QUERY "insert into %s (%s) values (\'%s\')"

int sql_table_insert(char *table, char *key, char *val)

{

char qbuf[160]; //存放查询 sql 语句字符串

sprintf(qbuf, INSERT_STRING_QUERY, table, key, val);

printf("qbuf is %s\n", qbuf);

/* 查询数据库 */

if(mysql_query(sock, qbuf)){

fprintf(stderr, "Query failed (%s)\n", mysql_error(sock));

return -1;

}

return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值