MYSQL C API : struct MYSQL_STMT 结构的组合使用

 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 0;
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", 0, NULL, 0);
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 0;
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 0;
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 = 0;
60     res = mysql_stmt_prepare(stmt, str_sql, sizeof(str_sql) - 1);
61     if (res != 0)
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[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
70
71     MYSQL_BIND bind[1];
72     memset(bind, 0, sizeof(bind));
73     bind[0].buffer_type = MYSQL_TYPE_BLOB;
74     bind[0].is_null = NULL;
75     bind[0].buffer = bin_data;
76     bind[0].buffer_length = sizeof(bin_data);
77
78     res = mysql_stmt_bind_param(stmt, bind);
79     if (res != 0)
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 }
时间: 2024-08-26 06:09:27

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

数据库编程5 MySQL C API 开发

[本文谢绝转载原文来自http://990487026.blog.51cto.com] 数据库编程5 MySQL C API 开发 MySQL官方文档: MySQL  环境搭建 ubuntu搭建MySQL开发环境: MySQL服务命令 检查MySQL运行状态: MySQL SQL 登陆测试 创建一个数据库 显示数据库创建过程: 创建一个使用UTF8字符集的数据库 创建一个使用UTF8字符集的数据库,带校对规则 把数据库修改成UTF8字符集 选择数据库,创建表: 查表结构: mysql中的数据类型

MySQL基础及MySQL C API编程

MySQL基础及MySQL C API编程 一.MySQL For Windows安装: 1. 下载: 上官网下载即可: http://www.mysql.com/downloads/ 2. 安装: 没有什么好说的,傻瓜式,也没有什么要注意的. 3. 配置: 添加系统变量MYSQL_HOME和修改PATH,目的就是让系统默认能够找到MySQL命令.(安装目录的/bin下面) PS: 补充一下,有的朋友可能下载的是免安装版本,拷贝到一个地方就可以了,这个时候,配置还是需要的,但是配置完成之后,需要

The MySQL C API 编程实例

在网上找了一些MYSQL C API编程的文章,看了后认为还是写的不够充分,依据自己经验写了这篇<The MySQL C API 编程实例>,希望对须要调用到MYSQL的C的API的朋友有所帮助,附例中的环境为RedHat 在这篇文章里,我们将学会怎么使用MySQL 的C APIs(Application Programming Interfaces 编程接口).为了非常好地了解这篇文章,您须要具备下面前提知识: C语言变量 C语言函数 C语言指针 简单介绍 C APIs包括在mysqlcli

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

unique(唯一性),primary key(not null and 唯一 unique) 导出整个数据库,单个数据库,数据库下的某张表,N张表; 导出数据库表结构 mysqldump -u -p -d --add-drop-table>ruiy.sql; MySQL C API简单操作

struct termios结构体【转】

本文转载自:http://blog.csdn.net/vevenlcf/article/details/51096122 一.数据成员 termios 函数族提供了一个常规的终端接口,用于控制非同步通信端口. 这个结构包含了至少下列成员:tcflag_t c_iflag;      /* 输入模式 */tcflag_t c_oflag;      /* 输出模式 */tcflag_t c_cflag;      /* 控制模式 */tcflag_t c_lflag;      /* 本地模式 *

MySQL编程API

1.MySQL API数据结构 MySQL API中用到了很多结构体类型,下面就简单说一下常用的结构体. MYSQL 连接数据库前,必须先创建MYSQL变量,此变量在很多MySQL API函数中会用到,它包含了一些连接信息等数据. MYSQL_RES MYSQL_RES结构体中包含了查询结果集,也就是从数据库中查询到的数据.可以使用mysql_store_result或mysql_user_result函数获得. MYSQL_ROW typedef char **MYSQL_ROW,可见,它实际

mysql c api

这里归纳了C API可使用的函数,并在下一节详细介绍了它们.函数 描述mysql_affected_rows() 返 回上次UPDATE.DELETE或INSERT查询更改/删除/插入的行数.mysql_autocommit() 切换 autocommit模式,ON/OFFmysql_change_user() 更改打开连接上的用户和数据库.mysql_charset_name() 返 回用于连接的默认字符集的名称.mysql_close() 关闭服务器连接.mysql_commit() 提 交

struct ifreq结构体与ip,子网掩码,网关等信息

总结一下,今天学习的关于通过socket,ioctl来获得ip,netmask等信息,其中很多内容参照了很多网上的信息,我会一一列出的 我用的这个函数,就是下面这个函数,其中的有一些全局变量,很好懂,也就不多做解释了一.下面对这个函数进行注解一下: int get_nic_IP_Address()//获取各网卡IP地址.子网掩码{ struct ifreq ifreq;  //声明一个struct ifreq结构体(这个结构体中有很多重要的参数,具体可以参照第二的补充)   int sock; 

struct list_head结构体及相关函数

struct list_head结构体是linux实现数据结构双向链表的基础.其定义: struct list_head { struct list_head *next, *prev; }; 可见链表里面的成员还是链表,每个链表都指向了前面和后面的链表. 一般将struct list_head作为一个成员,放到一个结构体中,其作用是可以从当前的结构体指针,获取到下一个链表元素的地址.一般用list_entry()来实现.具体按照下面的链接: http://www.cnblogs.com/bas