access中怎样存储OLE对象???????急急急!!!!!!
有个文本文件data.txt(有点大)我想将她以ole对象的方式存入access中
请问怎样实现?(最好用odbc,有实现代码)
急啊!!
谢谢!!!(解决者重分相谢!!!)
推荐阅读
cdatabase db;
//cstring cconnect = "driver={microsoft access driver (*.mdb)};dbq=c:\\projects\\samples\\usingblob_demo\\usingblob.mdb;uid=; pwd=;";
cstring cconnect = "driver={mysql odbc 3.51 driver};server=myserv;database=mydatabase;user=me; password=pass;option=2048;";
db.openex(cconnect, cdatabase::noodbcdialog|cdatabase::usecursorlib);
codbcrecordset rs( &db );
static char based_code szfilter[] = "bitmap files (*.bmp)|*.bmp||";
cfiledialog fd(true,null,null,0,szfilter,this);
if (idok != fd.domodal())
return;
try
{
rs.open( "select * from images" );
//rs.movelast();
rs.addnew();
cfile fileimage;
cfilestatus filestatus;
fileimage.open(fd.getpathname(), cfile::moderead);
fileimage.getstatus(filestatus);
rs("blobname") = fileimage.getfiletitle();
clongbinary* lb = rs.getbinary("blobimage");
lb->m_dwdatalength = filestatus.m_size;
hglobal hglobal = globalalloc(gptr,filestatus.m_size);
lb->m_hdata = globallock(hglobal);
fileimage.readhuge(lb->m_hdata,filestatus.m_size);
rs.setfielddirty(lb);
rs.setfieldnull(lb,false);
rs.update();
globalunlock(hglobal);
rs.close();
}
catch(cexception* pe)
{
pe->reporterror();
pe->delete();
return;
}
codbcrecordset 可以到http://www.codeproject.com/database/odbcrecordset/odbcrecordset.zip下载
gz
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);
}
以二进制方式读出你的东西不停的appendchunk到你的字段去就行乐!
可以将x,y存入文件如:save.txt
再将save.txt存入数据库
clongbinary


讨论区