C语言操作mysql数据库

从mysql数据库访问安全性考虑,stmt预处理更加方便,然而C语言与Java语言不同,数据绑定时需要大量重复冗余的操作.而且多表查询会变的更加繁琐,所以从解决数据绑定与简化多表查询的复杂逻辑入手,作了封装处理.
一.那么首先需要了解下mysql stmt操作数据库的几个重要步骤.
1.引入mysql的头文件,并声明需要的变量.这里不再赘述.
2.连接mysql数据库.部分代码如下
#define HOST “localhost” //主机
#define USER “root” //mysql用户,非主机
#define PASSWD “12345678” //密码
#define DBNAME “mydb” //库名
/初始化mysql句柄/
MYSQL* init_mysql()
{
return mysql_init(NULL);
}

/连接mysql数据库/
MYSQL* connect_db(MYSQL conn_prt,char host,char* user,char* pwd,char* db)
{
/假设我的云服务器IP为118.89.20.60,密码为123456,进入的数据库名字为zje/
conn_prt = mysql_real_connect(conn_prt,host,user,
pwd,db,0,NULL,0);
if(conn_prt==NULL)
{
printf(“failed to connect:%s\n”,mysql_error(conn_prt));
return NULL;
}
printf(“connect success!\n”);
return conn_prt;
}
3.stmt预处理变量声明以及准备工作
MYSQL_STMT *stmt;
MYSQL_BIND bind[4];
MYSQL_RES *prepare_meta_result;
MYSQL_TIME ts;
unsigned long length[4];
int param_count, column_count, row_count;
short small_data;
int int_data;
char str_data[STRING_SIZE];
bool is_null[4];
bool error[4];

/* Prepare a SELECT query to fetch data from test_table */
stmt = mysql_stmt_init(mysql);
if (!stmt)
{
fprintf(stderr, " mysql_stmt_init(), out of memory\n");
exit(0);
}
if (mysql_stmt_prepare(stmt, SELECT_SAMPLE, strlen(SELECT_SAMPLE)))
{
fprintf(stderr, " mysql_stmt_prepare(), SELECT failed\n");
fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
exit(0);
}
4.stmt绑定结果或者绑定参数
①绑定结果
if (mysql_stmt_execute(stmt))
{ fprintf(stderr, " mysql_stmt_execute(), failed\n"); fprintf(stderr, " %s\n", mysql_stmt_error(stmt)); exit(0);}

/* Fetch result set meta information */
prepare_meta_result = mysql_stmt_result_metadata(stmt);if (!prepare_meta_result){ fprintf(stderr, " mysql_stmt_result_metadata(), \ returned no meta information\n"); fprintf(stderr, " %s\n", mysql_stmt_error(stmt)); exit(0);}

memset(bind, 0, sizeof(bind));
/* INTEGER COLUMN */
bind[0].buffer_type= MYSQL

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值