mysql存储blob,读取blob的问题
用的是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;
}
}
各位帮忙看一下,谢谢!
以下是我写的两个存取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;
}
}
各位帮忙看一下,谢谢!
...全文
相关推荐
oracle中的BLOB(照片)转换到mysql中
Oracle的BLOB最大可存储4GB,而MySQL的LONGBLOB同样可存储4GB。- **性能考虑**:大量BLOB数据的转换可能会消耗大量时间和带宽,因此可能需要考虑优化策略,如分批处理。
使用Hibernaet存储MYSQL表中BLOB字段的问题
本篇文章将深入探讨在使用Hibernate存储MySQL表中的BLOB(Binary Large Object)字段时可能遇到的问题以及解决策略。
QT-Mysql-Blob.zip_mysql blob_qt blob 文件_qt blob类型_qt的blob
除了基本的插入和查询,你还需要了解如何处理BLOB数据的存储效率和性能问题。例如,对于大文件,可能需要考虑分块读写,以避免一次性加载大量内存。
mysql中blob数据处理方式
在MySQL数据库中,BLOB(Binary Large Object)是一种数据类型,用于存储大量的二进制数据,如图片、音频或视频文件。处理BLOB数据通常涉及到读取、写入和传输这些大对象。
jsp操作mysql数据库的blob字段
**Blob字段类型**: Blob类型是MySQL中用于存储大量非结构化数据的字段,它可以存储最大4GB的数据。


