mysql api编程(五) 预处理的实现
来源:互联网 发布:自学c语言要多久 编辑:程序博客网 时间:2024/06/01 08:56
最近有小伙伴问我有没有mysql api编程的参考文档或手册,我前几天已经上传,下载地址
(1)本此所实现的sub表是在api 编程(四)的表的基础上面实现;未执行代码前该表的详细内容如下:
(2)代码:
/************************************************************************* * File Name: pretreatment.c * Author: The answer * Function: Other * Mail: 2412799512@qq.com * Created Time: 2017年07月01日 星期六 10时33分19秒 ************************************************************************/#include<stdio.h>#include<stdlib.h>#include<string.h>#include<mysql.h>#include<errno.h>#define LEN 1024void sys_err(const char *ptr,int num){ perror(ptr); exit(num);}int main(int argc,char **argv){ MYSQL *mysql = mysql_init(NULL); int i; mysql = mysql_real_connect(mysql,"127.0.0.1","root","lxg","date",3306,NULL,0); if(!mysql) { sys_err("mysql_real_connect",-1); } /* 初始化字符集 */ if(mysql_query(mysql,"set names utf8")) { sys_err("mysql_query",-1); } /* 初始化一个预处理句柄 */ MYSQL_STMT *stmt = mysql_stmt_init(mysql); char *sql = "insert into sub values(?,?,?,?,?,?)"; mysql_stmt_prepare(stmt,sql,strlen(sql)); MYSQL_BIND bind[6]; int id = 10; int age = 29; char name[LEN]; unsigned long namelen; char sex = 'm'; char subject[LEN]; unsigned long subjectlen; float salary = 6666.50; for(i=0;i<3;++i) { char *_name[] = {"小华","小刚","小明"}; char *_subject[] = {"数据结构","计算机网络","高数"}; id += i; age += i; sex = 'g'; memset(name,'\0',sizeof(name)); strncpy(name,_name[i],strlen(_name[i]) +1 ); memset(subject,'\0',sizeof(subject)); strncpy(subject,_subject[i],strlen(_subject[i]) + 1); salary += i+100; namelen = (unsigned long)strlen(name); subjectlen = (unsigned long)strlen(subject); bind[0].buffer_type = MYSQL_TYPE_LONG; bind[0].buffer = (void *)&id; bind[0].buffer_length = sizeof(id); bind[0].is_null = (my_bool *)0; bind[1].buffer_type = MYSQL_TYPE_LONG; bind[1].buffer = (void *)&age; bind[1].buffer_length = sizeof(age); bind[1].is_null = (my_bool *)0; bind[2].buffer_type = MYSQL_TYPE_STRING; bind[2].buffer = (void *)name; bind[2].buffer_length = namelen; bind[2].is_null = (my_bool*)0; /* 若为字符串类型,多一个length */ bind[2].length = &namelen; bind[3].buffer_type = MYSQL_TYPE_TINY; bind[3].buffer = (void *)&sex; bind[3].buffer_length = sizeof(sex); bind[3].is_null = (my_bool *)0; bind[4].buffer_type = MYSQL_TYPE_STRING; bind[4].buffer = (void *)subject; bind[4].buffer_length = subjectlen; bind[4].is_null = (my_bool*)0; bind[4].length = &subjectlen; bind[5].buffer_type = MYSQL_TYPE_FLOAT; bind[5].buffer = (void *)&salary; bind[5].buffer_length = sizeof(salary); bind[5].is_null = (my_bool*)0; mysql_stmt_bind_param(stmt,bind); if(mysql_stmt_execute(stmt)) { sys_err("mysql_stmt_execute",-1); } } mysql_close(mysql); return 0;}
(3) 编译并且执行代码,此时的sub表多了3条纪录,如下图:
(4)有一个bug,就是本来性别age表列应该显示的英文字母,但是现在是数字,待修复;
阅读全文
0 0
- mysql api编程(五) 预处理的实现
- MySQL 的 C API预处理语句
- MySQL 的 C API预处理语句
- 【MySQL】预处理方式api处理
- MySQL C API预处理返回结果的处理
- mysql 的capi预处理
- C++封装MySQL预处理C API
- MYSQL 预处理的经典应用
- mysql api编程(一)
- mysql api编程(二)
- 最新_MySQL 的 C API预处理语句
- iOS编程基础-OC(五)-预处理器
- mysql的C-API交互实现流程
- Mysql API 查询优化 为什么要选用预处理语句( mysql_stmt_* )
- MySQL C API预处理函数call存储过程
- 数据预处理的python实现
- 使用基于Boost的预处理器元编程实现变长类型列表的参数化
- 【MySQL】事务api实现
- 9.选择器
- LVM
- ASP.NET MVC系列:Controller/Action
- C++或者C#无限循环的实现方式
- 10.权值
- mysql api编程(五) 预处理的实现
- Lua Thread
- cocos2dx 游戏切到后台再进入游戏的处理
- ASP.NET MVC系列:UrlRouting
- 个人模板 prim 最小生成树
- 酷播云的自定义视频广告功能如何添加自己的广告
- Java中File用法的注意事项和FileInputStream和FileOutputStream的简单使用
- 使用逆向工程生成对应的Java文件
- Redis HINCRBY命令