mysql存储blob,读取blob的问题

moonglow 2004-04-08 11:41:46
用的是mysql++的库函数
以下是我写的两个存取blob和读取blob的函数
//存取基本没问题,用mysql-front可以看到存进去的图片
bool DBManager::saveFile(string srcfile,string tablename,string fieldname)
{
try {
Query query = m_conn->query();
ifstream In (srcfile.c_str(),ios::in | ios::binary);
if ((In.rdbuf())->is_open()) {
string sql="INSERT INTO "+tablename+" ("+fieldname+") VALUES(LOAD_FILE('"+srcfile+"'))";;
cout<<sql;
query.exec(sql);
}
else{
cerr << "Your file " << srcfile << "could not be open, errno = " << errno;
}
return true;
} catch (BadQuery er) {
cerr << "Error: " << er.error << " " << m_conn->errnum() << endl;
return false;
}

}
//读取的时候出问题了,图片读出来显示不出来,如果存取进去的是文本,可以读出来内存也一模一样,可是比较文件的大小,一个420byte的文本,读出来后变成450byte,不知道这是怎么回事
bool DBManager::getFile(string destfile,string tablename,string fieldname,string pkey,string value)
{
try {
Query query = m_conn->query();
query << "SELECT " << fieldname << " FROM " << tablename << " WHERE " << pkey << " = " << value;
cout<<query.preview();
ResUse res = query.use();
Row row=res.fetch_row();
long unsigned int *jj = res.fetch_lengths();
FILE *stream;
cout << "Content-length: " << *jj << endl << endl;
if( (stream = fopen( destfile.c_str(), "w" )) != NULL )
fwrite(row.raw_data(0),1,*jj,stream);
return true;
} catch (BadQuery er) {
cerr << "Error: " << er.error << " " << conn.errnum() << endl;
return false;
}
}

各位帮忙看一下,谢谢!
...全文
208 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
moonglow 2004-04-08
  • 打赏
  • 举报
回复
上面笔误,是两个文本内容一模一样

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧