根据你提供的代码,可能存在以下问题:
mysql_stmt_store_result()
:在存储结果集之前,需要使用mysql_stmt_store_result()
函数将结果集存储到客户端。但是在你的代码中,并没有检查返回值是否为0。建议添加错误处理来确保结果集被正确存储。数据读取循环:在while循环中,你使用了
mysql_stmt_fetch_column()
来获取数据。然而,在每次迭代时,你都将result.buffer_length
设置为1。这意味着每次只会读取1个字节的数据,并且没有进行累加操作。所以最终写入文件的内容将只包含最后一个字节的数据。
针对上述问题,可以尝试修改代码如下:
while (1) {
ret = mysql_stmt_fetch(stmt);
if (ret) break; // 如果发生错误或遍历完成,则退出循环
result.buffer_length = size; // 将缓冲区长度设置为整个图片大小
// 从 result.buffer 中直接获取图片数据
ret = mysql_stmt_fetch_column(stmt, &result, 0, offset);
if (ret) {
printf("mysql_stmt_fetch_column, %s\n", mysql_error(mysql));
mysql_stmt_close(stmt);
return -6;
}
offset += size;
}
// 在 write_img 函数中直接传入 size 参数即可
write_img("a.png", buffer, size);
通过以上改动,应该能够正确地将图片数据写入文件 “a.png” 中。
内容由零声教学AI助手提供,问题来源于学员提问