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 }