社区
数据库
帖子详情
大家好怎样读取blob类型的数据 MYSQL 中
greatesun
2004-01-06 08:54:53
大家好怎样读取blob类型的数据
...全文
689
3
打赏
收藏
大家好怎样读取blob类型的数据 MYSQL 中
大家好怎样读取blob类型的数据
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bluebohe
2004-01-07
打赏
举报
回复
11. 访问长数据
在Microsoft SQL中的长数据包括text、image等这样长类型的数据,作为二进制字节来对待。
可以用Field对象的GetChunk和AppendChunk方法来访问。每次可以读出或写入全部数据的一部分,它会记住上次访问的位置。但是如果中间访问了别的字段后,就又得从头来了。
请看下面的例子:
//写入一张照片到数据库:
VARIANT varChunk;
SAFEARRAY *psa;
SAFEARRAYBOUND rgsabound[1];
//VT_ARRAY | VT_UI1
CFile f("h:\\aaa.jpg",CFile::modeRead);
BYTE bVal[ChunkSize+1];
UINT uIsRead=0;
//Create a safe array to store the array of BYTES
while(1)
{
uIsRead=f.Read(bVal,ChunkSize);
if(uIsRead==0)break;
rgsabound[0].cElements =uIsRead;
rgsabound[0].lLbound = 0;
psa = SafeArrayCreate(VT_UI1,1,rgsabound);
for(long index=0;index<uIsRead;index++)
{
if(FAILED(SafeArrayPutElement(psa,&index,&bVal[index])))
::MessageBox(NULL,"啊,又出毛病了。","提示",MB_OK | MB_ICONWARNING);
}
varChunk.vt = VT_ARRAY|VT_UI1;
varChunk.parray = psa;
try{
m_pRecordset->Fields->GetItem("photo")->AppendChunk(varChunk);
}
catch (_com_error &e)
{
CString str=(char*)e.Description();
::MessageBox(NULL,str+"\n又出毛病了。","提示",MB_OK | MB_ICONWARNING);
}
::VariantClear(&varChunk);
::SafeArrayDestroyData( psa);
if(uIsRead<ChunkSize)break;
}//while(1)
f.Close();
//从数据库读一张照片:
CFile f;
f.Open("h:\\bbb.jpg",CFile::modeWrite|CFile::modeCreate);
long lPhotoSize = m_pRecordset->Fields->Item["photo"]->ActualSize;
long lIsRead=0;
_variant_t varChunk;
BYTE buf[ChunkSize];
while(lPhotoSize>0)
{
lIsRead=lPhotoSize>=ChunkSize? ChunkSize:lPhotoSize;
varChunk = m_pRecordset->Fields->
Item["photo"]->GetChunk(lIsRead);
for(long index=0;index<lIsRead;index++)
{
::SafeArrayGetElement(varChunk.parray,&index,buf+index);
}
f.Write(buf,lIsRead);
lPhotoSize-=lIsRead;
}//while()
f.Close();
AkiraChing
2004-01-07
打赏
举报
回复
从数据库中读取到richedit
_bstr_t bstrConn="Provider=Microsoft.Jet.OLEDB.4.0;"
"Data Source=E:\\vc\\test.mdb;"
"User Id=Admin;Password=;";
_RecordsetPtr rs=NULL;
long lLength=0L;
_variant_t varText;
try
{
rs.CreateInstance(__uuidof(Recordset));
rs->Open("[longText]",bstrConn, adOpenKeyset, adLockOptimistic, adCmdTable);
if(!rs->GetBOF())
rs->MoveFirst();
lLength= rs->GetFields()->GetItem("text")->ActualSize;
LPTSTR pszBuffer= NULL;
varText = rs->GetFields()->GetItem("text")->GetChunk(lLength);
if(varText.vt == (VT_ARRAY | VT_UI1))
{
SafeArrayAccessData(varText.parray,(void **)&pszBuffer);
CopyMemory(m_strRichedit.GetBufferSetLength(lLength),pszBuffer,lLength);
SafeArrayUnaccessData (varText.parray);
}
}
catch (_com_error e)
{
PrintComError(e);
}
rs->Close();
UpdateData(FALSE);
AkiraChing
2004-01-07
打赏
举报
回复
HGLOBAL hgImageMem = NULL;
LPVOID lpvImageMem = NULL;
long lImageSize = rs->GetFields()->GetItem("图片")->ActualSize;
if(lImageSize > 0)
{
_variant_t varImage;
varImage = rs->GetFields()->GetItem("图片")->GetChunk(lImageSize);
if(varImage.vt == (VT_ARRAY | VT_UI1))
{
hgImageMem = GlobalAlloc(GHND, lImageSize);
if(hgImageMem!=NULL)
{
lpvImageMem = GlobalLock( hgImageMem);
char *pBuffer= NULL;
SafeArrayAccessData(varImage.parray,(void **)&pBuffer);
CopyMemory(lpvImageMem,pBuffer,lImageSize);
SafeArrayUnaccessData (varImage.parray);
CFile file("a.jpg",CFile::modeWrite|CFile::modeCreate);
file.Write(lpvImageMem,lImageSize);
file.Close();
}
}
}
GlobalUnlock(hgImageMem);
lpvImageMem=NULL;
GlobalFree(hgImageMem);
mysql
读写
blob
格式
数据
mysql
写入或
读取
一段
数据
块时,
数据
类型
为
blob
型,本代码详细介绍在
mysql
l
中
如何读写
blob
格式
数据
利用VB存取
数据
库
中
BLOB
数据
利用VB存取
数据
库
中
BLOB
数据
,此文档仅提供了一种方法,仅供需要者参考(文档来源于网络,供大家参考学习使用)
JavaWeb实战开发
本课程详细讲解了以下内容: 1.jsp环境搭建及入门、虚拟路径和虚拟主机、JSP执行流程 2.使用Eclipse快速开发JSP、编码问题、JSP页面元素以及request对象、使用request对象实现注册示例 3.请求方式的编码问题、response、请求转发和重定向、cookie、session执行机制、session共享问题 4.session与cookie问题及application、cookie补充说明及四种范围对象作用域 5.JDBC原理及使用Statement访问
数据
库、使用JDBC切换
数据
库以及PreparedStatement的使用、Statement与PreparedStatement的区别 6.JDBC调用存储过程和存储函数、JDBC处理大文本CLOB及二进制
BLOB
类型
数据
7.JSP访问
数据
库、JavaBean(封装
数据
和封装业务逻辑) 8.MVC模式与Servlet执行流程、Servlet25与Servlet30的使用、ServletAPI详解与源码分析 9.MVC案例、三层架构详解、乱码问题以及三层代码流程解析、完善Service和Dao、完善View、优化用户体验、优化三层(加入接口和DBUtil) 1 0.Web调试及bug修复、分页SQL(Oracle、
MySQL
、SQLSERVER) 11.分页业务逻辑层和
数据
访问层Service、Dao、分页表示层Jsp、Servlet 12.文件上传及注意问题、控制文件上传
类型
和大小、下载、各浏览器下载乱码问题 13.EL表达式语法、点操作符和
中
括号操作符、EL运算、隐式对象、JSTL基础及set、out、remove 14.过滤器、过滤器通配符、过滤器链、监听器 15.session绑定解绑、钝化活化 16.以及Ajax的各种应用 17. Idea环境下的Java Web开发
Mysql
Blob
的
读取
与插入
Java
中
Blob
的插入与
读取
Delphi 如何将二维数组
数据
以
Blob
存入
数据
库
中
并
读取
工程
Delphi 如何将二维数组
数据
以
Blob
存入
数据
库
中
并
读取
。先将二维数组转换维流文件,以内存流
Blob
形式存入到
数据
库
中
。
读取
时以流获取 然后读出到数组
中
数据库
4,011
社区成员
39,816
社区内容
发帖
与我相关
我的任务
数据库
VC/MFC 数据库
复制链接
扫一扫
分享
社区描述
VC/MFC 数据库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章