中易网

关于mysql中的blob字段

答案:2  悬赏:20  
解决时间 2021-04-07 09:46
用C++操作mysql数据库,怎么向mysql数据库中blob字段插入数据,真心求教
最佳答案
取二进制数据:
一样的sql语句,查询出来即可。只不过二进制数据是个数据块,需要得到数据块的大小和数据指针。
bool CMySqlAccess::GetBinaryField(int nCol,char* &pDataOut,int& nDataLen)
{
if (m_ItemMySqlRow[nCol] != NULL)
{
unsigned long *FieldLength = mysql_fetch_lengths(m_pMySqlResult);
nDataLen = (int)FieldLength[nCol];
pDataOut = (char*)(m_ItemMySqlRow[nCol]);
return true;
}
else
{
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:实际项目中,对于图片处理多数采用数据库中存图片的路径,一般不直接存图片,因为加载图片时大量数据从数据库中读取导致效率非常低
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎么解决壁挂电视的明线美观问题
国购广场停车场怎么样
iPad air一定要在apple store下载东西吗,不
高原明珠大酒店永中路店-商务中心地址在什么
厦门的e卡通可以在别的地方用么
合肥的疾病控制中心都是什么时间上班
拿自己的身份证给别人办工资卡,如果俩人的工
郑州到厦门火车
郑州高炮学院都有什么专业?
小规模开票系统被锁了怎么处理
iphone6s按键音为什么关不掉
考研英语语法新思维 怎么样张满胜的?
成都双楠医院南门在什么地方啊,我要过去处理
大家有没有比较好玩的工作 介绍一下
义乌为什么出名
推荐资讯
为什么女人的乳头凹进去这正常吗
团伙盗窃罪被关进看守所要多久判刑
插线板通电就磁磁响并还有电光是咋回事
求助英文高手,Account Executive 怎么拼?
怎么拒绝 跟网上的男朋友见面
魔鬼恋人第二季中小森唯是夏娃,那谁是亚当?
新买的牛皮健身响鞭打不响是什么原因求答案
谁能解释下以下ARM嵌入式BX跳转指令示例
4(根号3+根号7)的0次方+根号2分之1*根号8-(1-
金华银行是什么银行改名的?
excel的图表中,如何把文字变垂直。不是什么
局域网和外网用远程桌面怎么设IP
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?