// 定义了一个名为image的二进制字符数组 unsigned char image[] = {...}; // 打开数据库连接 MYSQL* conn = mysql_init(NULL); mysql_real_connect(conn, "localhost", "username", "password", "database", 0, NULL, 0); // 转义图片数据 std::string escaped_image = mysql_real_escape_string(conn, (const char*)image, sizeof(image)); // 插入图片数据 std::string query = "INSERT INTO image_table (image_data) VALUES('" + escaped_image + "')"; mysql_query(conn, query.c_str());
在这个例子中,大家使用了mysql_real_escape_string函数来转义二进制数据,以避免SQL注入攻击。另外,大家使用了mysql_query函数将数据插入到MySQL数据库中。
如果要从MySQL数据库中检索图片数据,也非常简单。下面是一个例子:
// 查询图片数据 MYSQL_RES* res = mysql_query(conn, "SELECT image_data FROM image_table"); MYSQL_ROW row = mysql_fetch_row(res); // 读取图片数据 std::string image_data = row[0]; unsigned char* image = (unsigned char*)malloc(image_data.size()); memcpy(image, image_data.c_str(), image_data.size());
在这个例子中,大家使用了mysql_query函数执行SQL语句,并使用mysql_fetch_row函数检索结果集中的一行数据。注意,大家从结果集中获取的数据是一个字符串,需要使用memcpy函数将其转换为二进制数组。
总之,使用C++和MySQL存储图片数据非常简单。大家可以使用mysql_real_escape_string函数转义二进制数据,并使用mysql_query函数将其插入到数据库中。同样地,大家可以使用mysql_query函数检索结果集中的一行数据,并使用memcpy函数将其转换为二进制数组。