BCB 6 sp4 + SQL Server 2k 存取JPEG图像,绝对好用!

在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:第一次发文章,不知道格式怎么样。 ^_^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值