MYSQL C API : struct MYSQL_STMT 结构的组合使用
#include <iostream>
#include <string> #include <string.h>
#include <assert.h> #include <mysql.h> static void do_stmt_sql(MYSQL *ms_conn); int main()
{
// 初始化MYSQL 实例
MYSQL *ms_conn = mysql_init(NULL);
if (ms_conn == NULL)
{
std::cout << "mysql init failed." << std::endl;
return ;
}
std::cout << "mysql init successful." << std::endl; // 连接到MYSQL 服务器
MYSQL *ms_ret = mysql_real_connect(ms_conn, "localhost", "suyh",
"suyunhong", "suyh_db", , NULL, );
if (ms_ret == NULL)
{
std::cout << "mysql connect failed. "
<< mysql_error(ms_conn) << std::endl;
mysql_close(ms_conn), ms_conn = NULL;
return ;
}
std::cout << "mysql connect successful." << std::endl; do_stmt_sql(ms_conn); // 释放资源
mysql_close(ms_conn), ms_conn = NULL;
return ;
} static void do_stmt_sql(MYSQL *ms_conn)
{
assert(ms_conn != NULL);
if (ms_conn == NULL)
return ; MYSQL_STMT *stmt = NULL;
stmt = mysql_stmt_init(ms_conn);
if (stmt == NULL)
{
std::cout << "stmt is NULL. mysql_stmt_init failed. "
<< mysql_error(ms_conn) << std::endl;
return ;
}
std::cout << "MYSQL_STMT init successful." << std::endl; const char str_sql[] = "INSERT INTO tb_bin_data(bin_data) VALUES(?)"; int res = ;
res = mysql_stmt_prepare(stmt, str_sql, sizeof(str_sql) - );
if (res != )
{
std::cout << "mysql_stmt_prepare INSERT failed."
<< mysql_stmt_error(stmt) << std::endl;
return ;
} // 待存到MYSQL 的二进制数据
char bin_data[] = {, , , , , , , , , }; MYSQL_BIND bind[];
memset(bind, , sizeof(bind));
bind[].buffer_type = MYSQL_TYPE_BLOB;
bind[].is_null = NULL;
bind[].buffer = bin_data;
bind[].buffer_length = sizeof(bin_data); res = mysql_stmt_bind_param(stmt, bind);
if (res != )
{
std::cout << "mysql_stmt_bind_param failed. "
<< mysql_stmt_error(stmt) << std::endl;
mysql_stmt_close(stmt), stmt = NULL;
return ;
}
std::cout << "mysql_stmt_bind_param successful." << std::endl; // res = mysql_stmt_send_long_data(stmt, 0, escape_bin, strlen(escape_bin));
// std::cout << "mysql_stmt_send_long_data result is " << res << std::endl; res = mysql_stmt_execute(stmt);
std::cout << "mysql_stmt_execute() func result is " << res << std::endl; mysql_stmt_close(stmt), stmt = NULL;
}
MYSQL C API : struct MYSQL_STMT 结构的组合使用的更多相关文章
- The MySQL C API 编程实例
在网上找了一些MYSQL C API编程的文章,看了后认为还是写的不够充分,依据自己经验写了这篇<The MySQL C API 编程实例>,希望对须要调用到MYSQL的C的API的朋友有 ...
- struct termios结构体【转】
本文转载自:http://blog.csdn.net/vevenlcf/article/details/51096122 一.数据成员 termios 函数族提供了一个常规的终端接口,用于控制非同步通 ...
- mysql C API 字符串玩转备份调优
- MySQL C API概述
以下列表总结了C API中可用的功能.有关更多详细信息,请参见 第27.8.7节“C API函数描述”中的说明. my_init():在线程安全程序中初始化全局变量和线程处理程序 mysql_affe ...
- MySQL 性能优化--优化数据库结构之优化数据大小
MySQL性能优化--优化数据库结构之优化数据大小 By:授客 QQ:1033553122 尽量减少表占用的磁盘空间.通常,执行查询期间处理表数据时,小表占用更少的内存. 表列 l 尽可能使 ...
- Golang面向对象编程-struct(结构体)
Golang面向对象编程-struct(结构体) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是面向对象编程 面向对象编程(Object Oriented Program ...
- Linux串口—struct termios结构体【转】
转自:https://blog.csdn.net/yemingzhu163/article/details/5897156 一.数据成员 termios 函数族提供了一个常规的终端接口,用于控制非同步 ...
- struct termios结构体详解
一.数据成员 termios 函数族提供了一个常规的终端接口,用于控制非同步通信端口. 这个结构包含了至少下列成员:tcflag_t c_iflag; /* 输入模式 */tcflag_t ...
- MySql接口API函数综述
C API函数概述 函数 描述 mysql_affected_rows() 返回上次UPDATE.DELETE或INSERT查询更改/删除/插入的行数. mysql_autocommit() 切换 a ...
随机推荐
- windows下上传文件到VWware的centos
1.使用Xsell 连接到centos虚拟机,可以在虚拟机使用终端查看ip地址,命令:ifconfig -a 2.远程Linux系统上需要安装lrzsz工具包 Xsell命令:yum install ...
- PHP 面向对象编程(2)
一些内建方法: class Person { public $isAlive = true; function __construct($name) { //这里我们创建了一个name的属性 $thi ...
- good
1,将NodeList 转化成 Arrayvar divs = Array.from(document.querySelectorAll('div'));2,将 arguments 转化成 Array ...
- 如何使用DDMS
Android DDMS如何使用? DDMS 的全称是Dalvik Debug Monitor Service,它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息.Logca ...
- CodeForces 686B-Little Robber Girl's Zoo
题目: 有n头数量的动物,开始它们站在一排,它们之间有高度差,所以需要将它们进行交换使得最终形成一个不减的序列,求它们交换的区间.交换的规则:一段区间[l, r]将l与l+1.l+2与l+3..... ...
- HOW TO BE SINGLE 最后那段的摘录
我一直在思考我们不得不单身的时间这个时间我们需要擅长一个人独处但是有多少独处的状态是我们想要拥有的呢难道不是件很危险的事情吗当你适应状态并且如鱼得水的时候所以当你安定下来 你就会与某人擦肩而过吗 有些 ...
- Libgdx 开发指南(1.3) 应用框架——查询、日志
查询 Application接口提过多种方法查询运行时环境属性. 获得应用类型 有时候根据运行平台需要处理一些具体的逻辑,可以使用 Application.getType() 方法来返回应用所运行的平 ...
- 不能将 Null 值赋给类型为 (不可为 null 的值类型)的成员。解决方法
一般代码没有错,是对应的数据库里有的字段是NULL,不是主键,主键肯定不会是NULL的.是其他字段. 把这些列的NULL赋值.
- cocos2d/x 自带字体(label)
CCLabelTTF* label1 = CCLabelTTF::labelWithString("1掼蛋as", "AppleGothic", 15); la ...
- 详解Objective-C runtime
感谢翻译小组成员wingpan热心翻译.本篇文章是我们每周推荐优秀国外的技术类文章的其中一篇.如果您有不错的原创或译文,欢迎提交给我们,更欢迎其他朋友加入我们的翻译小组(联系qq:2408167315 ...