大家好,我是一只菜鸟,请教一下如何在应用程序将图片存储到数据库中

解决方案 »

  1.   

    http://community.csdn.net/Expert/topic/3528/3528388.xml?temp=.4035303
      

  2.   

    http://community.csdn.net/Expert/topic/3522/3522502.xml?temp=.988125
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var rmFilestream:Tfilestream;
    begin
    rmFilestream:=TFileStream.Create('d:\2.jpg',fmopenRead);
    rmFilestream.Position:=0;
    try
     with adoquery1 do
     begin
       edit;
       TBlobField(FieldByName('c_blob')).loadfromStream(rmFilestream);///保存到库里
       post;
     end;
    finally
    rmFilestream.Free;
    end;
    end;procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
     with adoquery1 do
     begin
       TBlobField(adoquery1.FieldByName('c_blob')).SaveToFile('e:\2.jpg');
     end;
    end;
      

  4.   

    //记得加上uses jpeg ;
    //其中有些地方不是太严密,回去修改下。
    //delphi7+ sql2000通过.可以保存jpeg,jpg,bmp三种格式。
    unit Unit1;interfaceuses
      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.