高手请进:C++ Builder 怎么得到Access中.mdb表里的OLE对象字段内容
我有个.mdb表,我想读取表中OLE对象的字段。该怎么做。
如果你写的代码或意建对我有帮助。均可得分。
[解决办法]
这个是读图像的,读其他的相应的改一下就行了
- C/C++ code
TBlobField * pField1=(TBlobField *)DM->DataReadADOQuery->FieldByName("PepolePhoto"); if(!pField1->IsNull) { TADOBlobStream* pmem=new TADOBlobStream (pField1,bmRead); pmem->Seek(0,soFromBeginning); TJPEGImage *jpg = new TJPEGImage(); jpg->LoadFromStream(pmem); Image1->Picture->Assign(jpg); delete jpg; delete pmem; } else { Image1->Picture = NULL; Image1->Update(); }
[解决办法]
filestream吧。
[解决办法]
ini文件完全可以保存在 备注 类型的字段里,这样读写都方便,为什么一定要保存在 ole对象里呢?是文件特别大吗?
[解决办法]
- C/C++ code
void __fastcall TForm1::Button1Click(TObject *Sender){ TADOQuery *Query = new TADOQuery(Application); Query->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExtractFilePath(Application->ExeName) + "1.mdb;"; Query->SQL->Text = "insert into table1(ee)values('asddasd')"; Query->ExecSQL(); TMemoryStream *Inifile = new TMemoryStream(); Inifile->LoadFromFile("123.ini"); Query->SQL->Text = "update table1 set asd =:PHOTO where ee ='asddasd'" ; Query->Parameters->Items[0]->LoadFromStream(Inifile,ftBlob) ; Query->ExecSQL(); Query->Close(); delete Query; delete Inifile;}
[解决办法]
你的INI文件适合用备注字段。
TStringList *file=new TStringList();
file->LoadFromFile("123.ini");
..............................//这里省略了读取库表
ADOQuery1->FieldByName("IniFile")->AsString=file->Text;
........................
[解决办法]
读取就相反
TStringList *file=new TStringList();
..............................//这里省略了读取库表
file->Text=ADOQuery1->FieldByName("IniFile")->AsString;
file->SaveToFile("123.ini");
........................
[解决办法]
读取后存到文件的代码,我测试的table1表里面只有3个字段,其中asd就是ole类型的。新手不怕,多试试就会了。- C/C++ code
void __fastcall TForm1::Button2Click(TObject *Sender){ TADOQuery *Query = new TADOQuery(Application); Query->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExtractFilePath(Application->ExeName) + "1.mdb;"; Query->SQL->Text = "select * from table1 where ee ='asddasd'"; Query->Open(); TBlobField * pField1=(TBlobField *)Query->FieldByName("asd"); if(!pField1->IsNull) { TADOBlobStream* pmem=new TADOBlobStream (pField1,bmRead); pmem->Seek(0,soFromBeginning); TMemoryStream *Inifile = new TMemoryStream(); Inifile->LoadFromStream(pmem); Inifile->SaveToFile("12345.ini"); delete Inifile; delete pmem; } Query->Close(); delete Query;}