在BCB 6 sp4里调试通过,欢迎大虾批评指正。
//OpenDialog1打开JPEG图像,Edit1保存图像地址,Image1显示图像
// 其他格式的图像文件没有试验,可以试试 。
OpenDialog1->FileName="";
if (OpenDialog1->Execute())
{
Edit1->Text= OpenDialog1->FileName;
Image1->Picture->LoadFromFile(Edit1->Text);
}
// 下面:把图像保存到SQL Server数据库中
if (!Edit1->Text.IsEmpty())
{
ADOQuery1->Close(); //自行添加ADOConnention,并配置
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("Select * from imgs");
ADOQuery1->Open();
ADOQuery1->Insert();
ADOQuery1->FieldByName("imgaddress")->AsString=Edit1->Text;
ADOQuery1->FieldByName("imgID")->AsInteger=Edit2->Text.toInt(); //保存图像的编号
TBlobField *field=dynamic_cast
1<tblobfield *="">(ADOQuery1->FieldByName("img")); //img 是image类型的数据
2field->LoadFromFile(Edit1->Text); // 这里是关键 ,要直接从文件调。不要调Image1,这样很容易出“Jepg error #41”错误
3
4ADOQuery1->Post();
5ADOQuery1->Close();
6}
7
8//从数据库里读取图像
9
10ADOQuery1->Close();
11ADOQuery1->SQL->Clear();
12ADOQuery1->SQL->Add("Select * from imgs ");
13AnsiString ddd="where imgID=" +Edit1->Text;
14ADOQuery1->SQL->Add(ddd);
15ADOQuery1->Open();
16if(ADOQuery1->RecordCount==1)
17{
18TStream *Stream1;
19TJPEGImage *Pjp=new TJPEGImage();
20try
21{
22Stream1=ADOQuery1->CreateBlobStream(ADOQuery1->FieldByName("img"), bmRead);
23Pjp->LoadFromStream(Stream1);
24Image2->Picture->Assign(Pjp);
25delete Stream1;
26}
27__finally
28{
29delete Pjp;
30}
31}
32
33
34PS:第一次发文章,不知道格式怎么样。 ^_^</tblobfield>