1. #include <iostream>
  2. #include <string>
  3.  
  4. #include <string.h>
  5. #include <assert.h>
  6.  
  7. #include <mysql.h>
  8.  
  9. static void do_stmt_sql(MYSQL *ms_conn);
  10.  
  11. int main()
  12. {
  13. // 初始化MYSQL 实例
  14. MYSQL *ms_conn = mysql_init(NULL);
  15. if (ms_conn == NULL)
  16. {
  17. std::cout << "mysql init failed." << std::endl;
  18. return ;
  19. }
  20. std::cout << "mysql init successful." << std::endl;
  21.  
  22. // 连接到MYSQL 服务器
  23. MYSQL *ms_ret = mysql_real_connect(ms_conn, "localhost", "suyh",
  24. "suyunhong", "suyh_db", , NULL, );
  25. if (ms_ret == NULL)
  26. {
  27. std::cout << "mysql connect failed. "
  28. << mysql_error(ms_conn) << std::endl;
  29. mysql_close(ms_conn), ms_conn = NULL;
  30. return ;
  31. }
  32. std::cout << "mysql connect successful." << std::endl;
  33.  
  34. do_stmt_sql(ms_conn);
  35.  
  36. // 释放资源
  37. mysql_close(ms_conn), ms_conn = NULL;
  38. return ;
  39. }
  40.  
  41. static void do_stmt_sql(MYSQL *ms_conn)
  42. {
  43. assert(ms_conn != NULL);
  44. if (ms_conn == NULL)
  45. return ;
  46.  
  47. MYSQL_STMT *stmt = NULL;
  48. stmt = mysql_stmt_init(ms_conn);
  49. if (stmt == NULL)
  50. {
  51. std::cout << "stmt is NULL. mysql_stmt_init failed. "
  52. << mysql_error(ms_conn) << std::endl;
  53. return ;
  54. }
  55. std::cout << "MYSQL_STMT init successful." << std::endl;
  56.  
  57. const char str_sql[] = "INSERT INTO tb_bin_data(bin_data) VALUES(?)";
  58.  
  59. int res = ;
  60. res = mysql_stmt_prepare(stmt, str_sql, sizeof(str_sql) - );
  61. if (res != )
  62. {
  63. std::cout << "mysql_stmt_prepare INSERT failed."
  64. << mysql_stmt_error(stmt) << std::endl;
  65. return ;
  66. }
  67.  
  68. // 待存到MYSQL 的二进制数据
  69. char bin_data[] = {, , , , , , , , , };
  70.  
  71. MYSQL_BIND bind[];
  72. memset(bind, , sizeof(bind));
  73. bind[].buffer_type = MYSQL_TYPE_BLOB;
  74. bind[].is_null = NULL;
  75. bind[].buffer = bin_data;
  76. bind[].buffer_length = sizeof(bin_data);
  77.  
  78. res = mysql_stmt_bind_param(stmt, bind);
  79. if (res != )
  80. {
  81. std::cout << "mysql_stmt_bind_param failed. "
  82. << mysql_stmt_error(stmt) << std::endl;
  83. mysql_stmt_close(stmt), stmt = NULL;
  84. return ;
  85. }
  86. std::cout << "mysql_stmt_bind_param successful." << std::endl;
  87.  
  88. // res = mysql_stmt_send_long_data(stmt, 0, escape_bin, strlen(escape_bin));
  89. // std::cout << "mysql_stmt_send_long_data result is " << res << std::endl;
  90.  
  91. res = mysql_stmt_execute(stmt);
  92. std::cout << "mysql_stmt_execute() func result is " << res << std::endl;
  93.  
  94. mysql_stmt_close(stmt), stmt = NULL;
  95. }

MYSQL C API : struct MYSQL_STMT 结构的组合使用的更多相关文章

  1. The MySQL C API 编程实例

    在网上找了一些MYSQL C API编程的文章,看了后认为还是写的不够充分,依据自己经验写了这篇<The MySQL C API 编程实例>,希望对须要调用到MYSQL的C的API的朋友有 ...

  2. struct termios结构体【转】

    本文转载自:http://blog.csdn.net/vevenlcf/article/details/51096122 一.数据成员 termios 函数族提供了一个常规的终端接口,用于控制非同步通 ...

  3. mysql C API 字符串玩转备份调优

  4. MySQL C API概述

    以下列表总结了C API中可用的功能.有关更多详细信息,请参见 第27.8.7节“C API函数描述”中的说明. my_init():在线程安全程序中初始化全局变量和线程处理程序 mysql_affe ...

  5. MySQL 性能优化--优化数据库结构之优化数据大小

    MySQL性能优化--优化数据库结构之优化数据大小   By:授客  QQ:1033553122 尽量减少表占用的磁盘空间.通常,执行查询期间处理表数据时,小表占用更少的内存. 表列 l   尽可能使 ...

  6. Golang面向对象编程-struct(结构体)

    Golang面向对象编程-struct(结构体) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是面向对象编程 面向对象编程(Object Oriented Program ...

  7. Linux串口—struct termios结构体【转】

    转自:https://blog.csdn.net/yemingzhu163/article/details/5897156 一.数据成员 termios 函数族提供了一个常规的终端接口,用于控制非同步 ...

  8. struct termios结构体详解

    一.数据成员 termios 函数族提供了一个常规的终端接口,用于控制非同步通信端口. 这个结构包含了至少下列成员:tcflag_t c_iflag;      /* 输入模式 */tcflag_t ...

  9. MySql接口API函数综述

    C API函数概述 函数 描述 mysql_affected_rows() 返回上次UPDATE.DELETE或INSERT查询更改/删除/插入的行数. mysql_autocommit() 切换 a ...

随机推荐

  1. C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台

    微信公众平台接入:其实很简单,把两个参数(地址和token)填入微信公众平台后台,暂时选择明文模式 ,其中token自己定义.微信服务器会根据后台填写的地址访问,并且带上对于的参数 如 url+&am ...

  2. 为什么上传文件的表单里要加个属性enctype

    为什么上传文件的表单里要加个属性enctype 上传文件的表单中<form>要加属性enctype="multipart/form-data",很多人只是死记硬背知道上 ...

  3. Spring Bean配置

    Spring 是什么 •Spring 为简化企业级应用开发而生. 使用 Spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能. •Spring 是一个 IOC(DI) 和 ...

  4. 安装64位mysql5.626

    计算机--右击属性--左上高级系统变量---环境变量 path 添加 mysql 的bin目录 ;D:\mysqlwinx64\bin1 //mysql 5.6.26安装前先解压到d盘根目录 cd D ...

  5. WPF之MVVM模式讲解

    WPF技术的主要特点是数据驱动UI,所以在使用WPF技术开发的过程中是以数据为核心的,WPF提供了数据绑定机制,当数据发生变化时,WPF会自动发出通知去更新UI. 恰当的模式可以让我们轻松达到“高内聚 ...

  6. python with语句

    作用:处理异常或进行资源清理等工作,让代码更加简练. 基本格式:with  statement as statement: do somthing....... statement会有一个返回对象,这 ...

  7. json全套

    JS文件 function pager1_InitData() { //基础配置 $("#pager1").myPagination({ currPage: 1, pageCoun ...

  8. 关于PCA的几何表示——MATLAB实现

    关于PCA的一道练习题.这个折腾了好久...终于做出来像样的图,开始的时候忘记对原始数据标准化,怎么也不对.经过标准化之后,做的图看着还可以,有错误请指出! MATLAB代码PCA.m: clear ...

  9. Polymer.js

    Polymer 1.0 教程 安装 bower install --save Polymer/polymer

  10. mysql取代rand()的高效率随机读取方法

    SELECT * FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM `table`)) AS id) AS t2 ...