mysql c preparestatement「建议收藏」
大家好,又见面了,我是你们的朋友全栈君。
今天折腾了一个mysql的c的insert语句,与java访问oracle类似,mysql也支持这种preparestatement,使用这种语句的好处有很多,在oracle之中,这种方式在后台是sql是进行软解析,而直接拼凑insert的sql语句,则是叫硬解析,即每一个数据库都要重新分析一个sql的语法,对于大量的数据插入的情况,最好使用preparestatement,第2个好处是,如果直接拼凑sql,那么对于某些数据的字段之中包含有单引号的情况,那就是一场恶梦,因为sql的字符串也是以单引号隔号,因此,拼凑的这个sql是不合法的,所以,不能插入到数据库之中.
以下是一段例子,从mysql官方网站之中抄下来的,自己加了一些东西,使之可以编译.
需要注意的有几点:
1 对于上面的绑定过程,首先指定数据类型,数据的指针,以及长度,其中,数据的指针所指向的内存是不能改变的,也就是说在绑定时,指定了块内存区域之后,不同的行的数据,需要为这个区域进行strcpy相应的字符串内容,而不能重新指向一个新的内存,否则虽然可以插入到数据库之中,但是没有数据的,即是空行。
2 对于my_bool类型,如果为1,即是代表这个参数在插入数据库的时候为null值,如果为0,则会插入这个数据,这样做法,可以用于控制,那么数据需要插入到数据库之中,那些不需要。
3 以上的操作是mysql的c语言的操作方法,mysql也提供了相应的mysql++的类库,用于c++对于数据库的操作,名字空间为mysqlpp。
4 另外提供一个mysql的c语言操作的一个引导例子,http://zetcode.com/tutorials/mysqlcapitutorial/,讲的比较全,但是好像没有preparestatement的例子.
相关文章
- 在Ubuntu/Linux环境下使用MySQL:开放/修改3306端口、开放访问权限「建议收藏」
- CentOS 7 安装 MySQL「建议收藏」
- 12个MySQL慢查询的原因分析「建议收藏」
- MySQL窗口函数简介「建议收藏」
- MySQL 获得当前日期时间 函数「建议收藏」
- mysql批量插入大量数据「建议收藏」
- MySQL 支持回滚操作吗?(mysql能回滚吗)
- 如何使用 MySQL 建立索引(mysql怎么建索引)
- 数据MySQL存储文本数据的方法介绍(mysql存文本)
- MySQL面试题精选:拿高分就靠它(mysql常见面试题)
- Mysql与SQL:两个不同的数据库技术(mysql与sql的区别)
- MySQL连接数修改的详细步骤(如何修改mysql连接数)
- 锁定MySQL表—存储过程实现(mysql存储过程锁表)
- 揭秘MySQL爆破工具的神秘面纱(mysql 爆破工具)
- 快速备份MySQL妥善备份:上周日快速实现(mysql 上周日)
- 深入剖析MySQL中神奇的pi函数(mysql中pi函数)
- 深入探究MySQL中etc文件夹的作用与应用(mysql中etc)
- MySQL的及格率如何评估数据库性能(mysql中及格率)
- MySQL安装包下载您所需的软件已包含在内(mysql下载缺少软件)
- 谨慎使用MySQL索引不宜滥用(mysql不建议索引)
- 为什么MySQL不建议使用存储过程(mysql不建议存储过程)