java mysql blob 写入
报什么错你要贴出来啊
关于mysql中的blob字段
取二进制数据:一样的sql语句,查询出来即可。只不过二进制数据是个数据块,需要得到数据块的大小和数据指针。bool CMySqlAccess::GetBinaryField(int nCol,char* &pDataOut,int& nDataLen)if (m_ItemMySqlRow[nCol] != NULL)unsignedlong*FieldLength = mysql_fetch_lengths(m_pMySqlResult);nDataLen = (int)FieldLength[nCol];pDataOut = (char*)(m_ItemMySqlRow[nCol]);return true;return false;像通常一样查询后,得到结果集,然后得到第nCol列结果,返回二进制指针结果和二进制长度。返回后必须立马处理或者存储一份。否则mysql将数据销毁,指针所指数据则无效了。mysql语句接受的sql语句都是string,以'\0'结尾的。如果冒然插入二进制数据到sql语句中,要么报错,要么存储错误。此处可以通过mysql提供的函数将数据转换一下即可。char* CMySqlAccess::ConvertBinaryToString(char* pBinaryData,int nLen)static char s_BinaryData[10240];mysql_real_escape_string(m_pMySqlConn,s_BinaryData,pBinaryData,nLen);return s_BinaryData;上面这个函数只能单线程使用啊,将一块二进制数据转换为mysql可识别的string数据。这样就直接可以通过mysql的sql语句insert,update来对blob数据进行更新和插入了,sql语句用法不变。
怎样让MySQL支持InnoDB存储引擎?
InnoDb 介绍:
InnoDb 存储引擎,支持事务,行锁,外键.InnoDb 设计用来处理大数据量时提供最好的
InnoDb 提供自己的缓存(buffer pool) 还缓存数据和索引.innodb 把数据和索引存放
到表空间(tablespace) ,表空间是几个磁盘文件或者是原是设备文件(raw disk). 它
不像MyISAM 存储引擎,每个表只是一个文件.(这样在某些系统下最大2G限制). 而Innodb
没有此限制,可以无限扩展.
Mysql4.0 的以后版本都支持innodb 存储.
如果你的MySQL不支持InnoDB存储引擎,请按照如下的步骤进行修改。
1.关闭MySQL数据库
2.修改my.ini文件,把skip-innodb这行注释掉
3.打开MySQL数据库
mysql怎么存储图片信息?mysql怎么存储图片信息
net/index。asp?board=4&mode=3&recordid=75FAB01E
ASP 中使用的方法:
。net/index。asp?board=4&mode=3&recordid=79FAB31E
下列例程就是采用这种方法,在显示的时候把长二进制数据保存为临时文件用于显示
关于mysql中的blob字段
取二进制数据:
一样的sql语句,查询出来即可。只不过二进制数据是个数据块,需要得到数据块的大小和数据指针。
bool CMySqlAccess::GetBinaryField(int nCol,char* &pDataOut,int& nDataLen)
if (m_ItemMySqlRow[nCol] != NULL)
unsignedlong*FieldLength = mysql_fetch_lengths(m_pMySqlResult);
nDataLen = (int)FieldLength[nCol];
pDataOut = (char*)(m_ItemMySqlRow[nCol]);
return true;
return false;
像通常一样查询后,得到结果集,然后得到第nCol列结果,返回二进制指针结果和二进制长度。返回后必须立马处理或者存储一份。否则mysql将数据销毁,指针所指数据则无效了。
存二进制数据:
mysql语句接受的sql语句都是string,以'\0'结尾的。如果冒然插入二进制数据到sql语句中,要么报错,要么存储错误。此处可以通过mysql提供的函数将数据转换一下即可。
char* CMySqlAccess::ConvertBinaryToString(char* pBinaryData,int nLen)
static char s_BinaryData[10240];
mysql_real_escape_string(m_pMySqlConn,s_BinaryData,pBinaryData,nLen);
return s_BinaryData;
上面这个函数只能单线程使用啊,将一块二进制数据转换为mysql可识别的string数据。这样就直接可以通过mysql的sql语句insert,update来对blob数据进行更新和插入了,sql语句用法不变。.hbm.xml文件中
对应的pojo类的类型也应为java.sql.blob
mysql中对应的数据类型为 blob
"可是我手动改成java.lang.blob字段时就用不了了"
应该是java.sql.blob 不是java.lang
ps:实际项目中,对于图片处理多数采用数据库中存图片的路径,一般不直接存图片,因为加载图片时大量数据从数据库中读取导致效率非常低
mysql中表为什么显示内容是blob
没改之前是什么情况的啊?你在哪里看的BLOB啊?你应用程序中使用上有什么不同?
没看到什么好办法整表转编码格式哦。.hbm.xml文件中
对应的pojo类的类型也应为java.sql.blob
mysql中对应的数据类型为 blob
"可是我手动改成java.lang.blob字段时就用不了了"
应该是java.sql.blob 不是java.lang
ps:实际项目中,对于图片处理多数采用数据库中存图片的路径,一般不直接存图片,因为加载图片时大量数据从数据库中读取导致效率非常低