在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<TBlobField *>(ADOQuery1->FieldByName("img")); //img 是image类型的数据 field->LoadFromFile(Edit1->Text); //这里是关键,要直接从文件调。不要调Image1,这样很容易出“Jepg error #41”错误 ADOQuery1->Post(); ADOQuery1->Close(); } //从数据库里读取图像 ADOQuery1->Close(); ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add("Select * from imgs "); AnsiString ddd="where imgID=" +Edit1->Text; ADOQuery1->SQL->Add(ddd); ADOQuery1->Open(); if(ADOQuery1->RecordCount==1) { TStream *Stream1; TJPEGImage *Pjp=new TJPEGImage(); try { Stream1=ADOQuery1->CreateBlobStream(ADOQuery1->FieldByName("img"), bmRead); Pjp->LoadFromStream(Stream1); Image2->Picture->Assign(Pjp); delete Stream1; } __finally { delete Pjp; } } PS:第一次发文章,不知道格式怎么样。 ^_^

|