0
点赞
收藏
分享

微信扫一扫

mySql存储过程


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:实际项目中,对于图片处理多数采用数据库中存图片的路径,一般不直接存图片,因为加载图片时大量数据从数据库中读取导致效率非常低

举报

相关推荐

0 条评论