如题,谢谢!
例如:
select b_picture,n_picturebytes from abc
例如:
select b_picture,n_picturebytes from abc
解决方案 »
- 怎样把输入到对话框的值用在视图类?
- vc中ado方法连接远程mysql,开发机没问题,release版本到未装mysql的机器上运行提示:未发现数据源名称并且未指定默认驱动程序
- 如何获取变量地址长度呢?
- 你是如何分析别人写的代码??特别是代码的文件很多,类也很多的情况
- CImage 加载图片后不显示的问题
- 希望大家帮我看哈,搞了两天没搞出来,,谢谢
- 请问一下:COM组件(*.TLB)中使用IDispatch和CoInitialize两种方法有何不同? 谢谢啦
- DLL中封装网络通讯功能而不能实现,特地向全部程序员求教!(我问问题从来都是一百分,是知识就值这个数)
- 请问怎么更改ToolBar的按钮上面的icon图标,使图标背景色与应用框架相同阿?
- 救急啊!怎么用程序 把两个word文档合成一个啊??
- 算法请教,如何用boid 算法模拟生物群体的移动。
- 想养良好的编码习惯,不知道这两本书哪一本更好?或者大家推荐推荐更好的书?
ADO读写BLOB字段的代码
读取数据// 读取数据
vValue = m_pRecordset->Fields->GetItem(bstrSegName)->Value;
// 读取数据大小
nDataSize = m_pRecordset->GetFields()->GetItem(bstrSegName)->ActualSize;
nDataType = vValue.vt;if (nDataType == (VT_ARRAY | VT_UI1))
{
m_lpData = new char[nDataSize];
memset(m_lpData, 0, nDataSize);
char* pBufTemp = NULL;
SafeArrayAccessData(vValue.parray, (void **)&pBufTemp);
for (int i = 0; i < nDataSize; i++)
*(((char*)m_lpData)+i) = *(pBufTemp+i);
SafeArrayUnaccessData (vValue.parray);
}
存入数据
BOOL SaveBLOB(CString strSegName, UINT& nDataSize, char* pBuf)
{
_bstr_tbstrSegName = strSegName;
VARIANTvarBLOB;
SAFEARRAY*psa;
SAFEARRAYBOUNDrgsabound[1];
// 保存BLOB数据
if(nDataSize > 0)
{
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = nDataSize;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
for (long i = 0; i < (long)nDataSize; i++)
SafeArrayPutElement (psa, &i, pBuf+i);
varBLOB.vt = VT_ARRAY | VT_UI1;
varBLOB.parray = psa;
m_pRecordset->GetFields()->GetItem(bstrSegName)->AppendChunk(varBLOB);
}
m_pRecordset->Update();
return TRUE;
}
是不是类型不支持呢?
CADORecordset* pRs = new CADORecordset(g_DB.m_pDB);
strSql = "select b_picture,n_picturebytes from tb_trainfaultdetail where to_char(d_passtime,'yyyy-mm-dd hh24:mi:ss')='" + faultinfo.strPassTime + "' and to_char(d_affirmtime,'yyyy-mm-dd hh24:mi:ss')='" +
faultinfo.strSendTime + "' and s_faultorder='" + faultinfo.strFaultNO + "'"; TRACE(strSql + "\n");
if (pRs->Open((LPCTSTR)strSql))
{
if (!pRs->IsEOF())
{
pRs->MoveFirst();
pRs->Edit();
CFile infile;
infile.Open(".\\debug\\cache\\fault\\fault.jpg",CFile::modeRead|CFile::typeBinary);
int nSize = infile.GetLength();
BYTE *pBuf = new BYTE[nSize ];
infile.Read(pBuf,nSize);
pRs->AppendChunk("b_picture",pBuf,nSize);
pRs->SetFieldValue("n_picturebytes",nSize);
pRs->Update();
delete []pBuf;
}
}
// 关闭记录集,释放空间
pRs->Close();
delete pRs;出现的错误提示如下:
First-chance exception in TFDSClient.exe (MSDASQL.DLL): 0xC0000005: Access Violation.
Loaded 'C:\Program Files\Common Files\System\ado\msader15.dll', no matching symbolic information found.
First-chance exception in TFDSClient.exe (KERNEL32.DLL): 0xE06D7363: Microsoft C++ Exception.