1 #include <iostream>
2 #include <string>
3
4 #include <string.h>
5
6 #include <mysql.h>
7
8 int main()
9 {
10 // 初始化MYSQL 实例
11 MYSQL *ms_conn = mysql_init(NULL);
12 if (ms_conn == NULL)
13 {
14 std::cout << "mysql init failed." << std::endl;
15 return 0;
16 }
17 std::cout << "mysql init successful." << std::endl;
18
19 // 连接到MYSQL 服务器
20 MYSQL *ms_ret = mysql_real_connect(ms_conn, "localhost", "root",
21 "123456sx", "temp", 0, NULL, 0);
22 if (ms_ret == NULL)
23 {
24 std::cout << "mysql connect failed." << std::endl;
25 std::cout << mysql_error(ms_conn) << std::endl;
26 mysql_close(ms_conn), ms_conn = NULL;
27 return 0;
28 }
29 std::cout << "mysql connect successful." << std::endl;
30
31 // 待存到MYSQL 的二进制数据
32 char bin_data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
33
34 // 转义二进制数为一条字符串数据,
35 // 同时mysql_real_escape_string() 生成的字符串会自动添加尾零
36 char *escape_bin = new char[sizeof(bin_data) * 2 + 1];
37 mysql_real_escape_string(ms_conn,
38 escape_bin, bin_data, sizeof(bin_data));
39
40 // 生成SQL 语句
41 std::string str_sql = "";
42 str_sql += "INSERT INTO tb_bin_data(bin_data) VALUES('";
43 str_sql += escape_bin;
44 str_sql += "')";
45
46 delete [] escape_bin, escape_bin = NULL;
47
48 int res = 0;
49 res = mysql_real_query(ms_conn, str_sql.c_str(),
50 str_sql.size());
51 if (res != 0)
52 {
53 std::cout << "Error: query failed. "
54 << mysql_error(ms_conn) << std::endl;
55 }
56 else
57 {
58 std::cout << "Info: query successful." << std::endl;
59 }
60
61 // 释放资源
62 mysql_close(ms_conn), ms_conn = NULL;
63 return 0;
64 }