社区
数据库
帖子详情
有关ADO实现存取Oracle数据库中的bitmap图像的问题
diabloqin
2003-04-22 09:31:22
怎样用ADO实现向Oracle数据库存取bitmap图像?
最好有源码!谢谢了
...全文
33
6
打赏
收藏
有关ADO实现存取Oracle数据库中的bitmap图像的问题
怎样用ADO实现向Oracle数据库存取bitmap图像? 最好有源码!谢谢了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
diabloqin
2003-04-23
打赏
举报
回复
自己up
Virtuoso
2003-04-23
打赏
举报
回复
1. VC把一个文件存入数据库
CFile imagefile;
if(0 == imagefile.Open("d:\\user\\bmp.bmp",CFile::modeRead))
return;
_RecordsetPtr pRs = NULL;
_ConnectionPtr pConnection = NULL;
_variant_t varChunk;
HRESULT hr;
BYTE* pbuf;
long nLength = imagefile.GetLength();
pbuf = new BYTE[nLength+2];
if(pbuf == NULL)
return; //allocate memory error;
imagefile.Read(pbuf,nLength); //read the file into memory
BYTE *pBufEx;
pBufEx = pbuf;
//build a SAFFERRAY
SAFEARRAY* psa;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = nLength;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
for (long i = 0; i < nLength; i++)
SafeArrayPutElement (psa, &i, pBufEx++);
VARIANT varBLOB;
varBLOB.vt = VT_ARRAY | VT_UI1;
varBLOB.parray = psa;
_bstr_t strCnn("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=CUSTOM;Data Source=SERVER");
try
{
//Open a connection
pConnection.CreateInstance(__uuidof(Connection));
hr = pConnection->Open(strCnn,"","",NULL); //Connect a DataBase
pRs.CreateInstance(__uuidof(Recordset));
pRs->Open("CustomInfo",_variant_t((IDispatch *) pConnection,true),adOpenKeyset,adLockOptimistic,adCmdTable); //Open a Table
// pRs->AddNew();
pRs->Fields->GetItem("Image")->AppendChunk(varBLOB);
pRs->Update();
pRs->Close();
pConnection->Close();
}
catch(_com_error &e)
{
// Notify the user of errors if any.
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
CString sError;
sError.Format("Source : %s \n Description : %s\n",(LPCSTR)bstrSource,(LPCSTR)bstrDescription);
AfxMessageBox(sError);
}
rengm
2003-04-23
打赏
举报
回复
UP
small_wei
2003-04-22
打赏
举报
回复
我这里刚运行过,没有问题,是不是原来写前去的数据有问题?
diabloqin
2003-04-22
打赏
举报
回复
.........
lpDIBBits = (LPVOID)(bmInfo.bmiColors + nColors);
CClientDC dc(this);
hBmp = CreateDIBitmap(dc.m_hDC,&bmiHeader,CBM_INIT,lpDIBBits,&bmInfo,DIB_RGB_COLORS);
return hBmp;
图片不能转换,返回值为0x00000000
help
small_wei
2003-04-22
打赏
举报
回复
这个access和sql server的有关的读写数据库中的bitmap图像的问题.
不知oracle能不能用.
void CADOBlobDlg::ReadData()
{
//DestroyPhoto(); ///清除原图像
if(m_pRecordset->adoEOF||m_pRecordset->BOF)
{
m_UserName.Empty();
m_Old.Empty();
UpdateData(FALSE);
return;
}
long lDataSize = m_pRecordset->GetFields()->GetItem("photo")->ActualSize;
if(lDataSize > 0)
{
_variant_t varBLOB;
varBLOB = m_pRecordset->GetFields()->GetItem("photo")->GetChunk(lDataSize);
if(varBLOB.vt == (VT_ARRAY | VT_UI1))
{
if(m_pBMPBuffer = new char[lDataSize+1]) ///重新分配必要的存储空间
{
char *pBuf = NULL;
SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);
memcpy(m_pBMPBuffer,pBuf,lDataSize); ///复制数据到缓冲区m_pBMPBuffer
SafeArrayUnaccessData (varBLOB.parray);
m_nFileLen = lDataSize;
m_hPhotoBitmap = BufferToHBITMAP(); ///生成BITMAP对象
}
}
}
m_UserName = m_pRecordset->GetCollect("username").bstrVal;
m_Old.Format("%d",m_pRecordset->GetCollect("old").lVal);
m_editUserName.EnableWindow();
m_editOld.EnableWindow();
m_buttonSelectPhoto.EnableWindow();
m_buttonDeleteUser.EnableWindow();
UpdateData(FALSE);
}
///////////将内存中的BMP文件内容转换到HBITMAP///////
HBITMAP CADOBlobDlg::BufferToHBITMAP()
{
HBITMAP hBmp;
LPSTR hDIB,lpBuffer = m_pBMPBuffer;
LPVOID lpDIBBits;
BITMAPFILEHEADER bmfHeader;
DWORD bmfHeaderLen;
bmfHeaderLen = sizeof(bmfHeader);
strncpy((LPSTR)&bmfHeader,(LPSTR)lpBuffer,bmfHeaderLen);
if (bmfHeader.bfType != ((WORD) ('M' << 8) | 'B')) return NULL;
hDIB = lpBuffer + bmfHeaderLen;
BITMAPINFOHEADER &bmiHeader = *(LPBITMAPINFOHEADER)hDIB ;
BITMAPINFO &bmInfo = *(LPBITMAPINFO)hDIB ;
int nColors = bmiHeader.biClrUsed ? bmiHeader.biClrUsed : 1 << bmiHeader.biBitCount;
if( bmInfo.bmiHeader.biBitCount > 8 )
lpDIBBits = (LPVOID)((LPDWORD)(bmInfo.bmiColors + bmInfo.bmiHeader.biClrUsed) +
((bmInfo.bmiHeader.biCompression == BI_BITFIELDS) ? 3 : 0));
else
lpDIBBits = (LPVOID)(bmInfo.bmiColors + nColors);
CClientDC dc(this);
hBmp = CreateDIBitmap(dc.m_hDC,&bmiHeader,CBM_INIT,lpDIBBits,&bmInfo,DIB_RGB_COLORS);
return hBmp;
}
android开发从入门到项目
异步任务机制(AsyncTask、Handler、线程池) 布局优化(层级、绘制、碎片化处理) 图片加载(
Bitmap
、缓冲区) 3、项目的管理 git工具的使用 4、做项目,通过项目来提升自己 第一个项目【计算器】 5、做项目,第二...
使用
ADO
实现
BLOB数据的
存取
--
ADO
开发实践之二
使用
ADO
实现
BLOB数据的
存取
--
ADO
开发实践之二 一、前言在上一篇文章《
ADO
第一次亲密接触》
中
我们详细介绍了
ADO
基本的操作方法,在实际的开发过程
中
我们常常需要存储较大...本文将介绍利用
ADO
在
数据库
中
存取
BLOB数据...
ADO
开发指南(程式猎人收集整理)----发现最好的
ADO
MFC的
数据库
操作
ADO
第一次亲密接触 --
ADO
开发实践之一 一、
ADO
简介
ADO
(ActiveX Data Object)是Microsoft
数据库
应用程序开发的新接口,是建立在OLE DB之上的高层
数据库
访问技术,请不必为此担心,即使你对OLE DB,COM不...
oracle
优化
对于
ORACLE
数据库
优化主要有四个不同的调整级别, 第一级调整是操作系统级包括硬件平台。 第二级调整是
ORACLE
RDBMS级的调整。 第三级调整是
数据库
设计级的调整。 第四级调整是SQL语句级的调整。 通常依此四级调整...
ADO
开发实践
ADO
第一次亲密接触 --
ADO
开发实践之一 一、
ADO
简介
ADO
(ActiveX Data Object)是Microsoft
数据库
应用程序开发的新接口,是建立在OLE DB之上的高层
数据库
访问技术,请不必为此担心,即使你对OLE DB,COM不了解也能...
数据库
4,011
社区成员
39,816
社区内容
发帖
与我相关
我的任务
数据库
VC/MFC 数据库
复制链接
扫一扫
分享
社区描述
VC/MFC 数据库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章