SQL保存读取图片的问题

 


    
  //记得加上uses   jpeg   ;  
  //其中有些地方不是太严密,回去修改下。。  
  //delphi7+   sql2000通过.可以保存jpeg,jpg,bmp三种格式。  
   
  unit   Unit1;  
   
  interface  
   
  uses  
      Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,  
      Dialogs,   StdCtrls,   jpeg,DB,   ADODB,   ExtCtrls,   Buttons,   Grids,   DBGrids,  
      DBCtrls;  
   
  type  
      TForm1   =   class(TForm)  
          ADOConnection1:   TADOConnection;  
          ADOQuery1:   TADOQuery;  
          Button1:   TButton;  
          OpenDialog1:   TOpenDialog;  
          Edit1:   TEdit;  
          Image1:   TImage;  
          Image2:   TImage;  
          BitBtn1:   TBitBtn;  
          DBGrid1:   TDBGrid;  
          DataSource1:   TDataSource;  
          ADOQuery1pic:   TBlobField;  
          ADOQuery1borj:   TStringField;  
          procedure   Button1Click(Sender:   TObject);  
          procedure   BitBtn1Click(Sender:   TObject);  
   
      private  
          {   Private   declarations   }  
      public  
          {   Public   declarations   }  
      end;  
   
  var  
      Form1:   TForm1;  
      s:string;  
      s1:string;  
  implementation  
   
  {$R   *.dfm}  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
  bitmap1:tbitmap;  
  pjpg:tjpegimage;  
  pic:TMemoryStream;  
   
  begin  
  pjpg:=tjpegimage.Create;  
  if   opendialog1.Execute  
          then  
            s:=opendialog1.FileName   ;  
            s1:=extractfileext(s);  
                     
            if   (uppercase(s1)   ='.JPG'   )   or   (uppercase(s1)='.JPEG')   //   图片格式一定要大写  
                THEN  
                    begin  
                              pjpg.LoadFromFile(s   );  
                              pic:=TMemoryStream.Create;  
                              pjpg.SaveToStream(pic);  
                              image1.Picture.Bitmap.Assign(pjpg);  
   
                              pic.Position:=0;  
                              adoquery1.Insert   ;  
                              adoquery1.FieldByName('borj').VALUE   :=   2;  
                              TBlobField(adoquery1.FieldByName('pic')).LoadFromStream(pic);  
                              adoquery1.post;  
                              pic.Free;  
                              pjpg.free;  
                  end   ;  
   
          if   (uppercase(s1)='.BMP')         then  
   
                        begin  
                              edit1.Text   :=uppercase(s1);  
   
                            image1.Picture.LoadFromFile(s);  
                            adoquery1.Insert   ;  
                            adoquery1.FieldByName('pic').Assign(image1.Picture.Graphic);  
                            adoquery1.FieldByName('borj').VALUE   :=   3;  
   
                            adoquery1.Post   ;  
                      end;  
    end;  
   
      procedure   TForm1.BitBtn1Click(Sender:   TObject);  
   
        var  
          jpeg:tjpegimage;  
              begin  
                image1.Picture.Graphic   :=nil;  
                          with   adoquery1   do  
                                    begin  
                                          if   adoquery1.FieldByName('borj').Value   =3       //   bmp  
                                          then  
                                            image2.Picture.Bitmap.Assign(fieldbyname('pic'))     ;  
   
   
   
                                            if   adoquery1.FieldByName('borj').Value   =2     //jpge;  
   
                                            then  
                                                  begin  
                                                                jpeg:=tjpegimage.Create   ;  
                                                                  try  
                                                                    jpeg.Assign(adoquery1.FieldByName('pic')   );  
                                                                      image2.Picture.Graphic:=jpeg;  
                                                                        finally  
                                                                        jpeg.Free   ;  
                                                                    end;  
                                                  end;  
   
                                    end   ;  
                                     
   
        end;  
   
  end.  
  Top

3 楼yeskybbs(yeksybbs)回复于 2004-03-28 18:26:54 得分 0

保存图片会使数据库变大,访问变慢  
  所以才想到要保存路径,把图片拷到主机,保存他的路径Top

4 楼boytomato(深爱一人叫颖的女孩!)回复于 2004-03-28 18:28:40 得分 0

要是图片教大,比多的话,只能用路径存取了。。。   
   

发布了21 篇原创文章 · 获赞 3 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章