如何在Sql Server中存储和显示图片文件.

解决方案 »

  1.   


    //记不清这是什么时候我写的,但是通过了,其实这类问题,搜一下很多,不好意思又拿出来混分了。
    *_*//记得加上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.
      

  2.   

    好长啊,◎◎ ,,,,昨天就有一块,你可以去看看
    http://expert.csdn.net/Expert/topic/2829/2829673.xml?temp=.8359339
    就是导入到sql的
      

  3.   

    来个保存吧!:
    var tempStream:TMemoryStream;
        JpgPic:TJpegImage;
    begin
    try
      JpgPic:=TJpegImage.Create;
      tempStream:=TMemoryStream.Create;
      tempStream.clear;
      adoquery1.Append;
      JpgPic.LoadFromFile(openpicturedialog1.filename);
      DBImage.Picture.bitmap.assign(JpgPic);//若你想DBIMAGE显示JPG图像就可这样.
      JpgPic.SaveToStream(tempStream);
      tblobfield(adoquery1.FieldByName('image')).LoadFromStream(tempStream) ;
      adoquery1.Post;
    finally
      JpgPic.Free;
      tempStream.Free;
    end;
      

  4.   

    最简单的是用 dbimage 连接好数据库的图像字段以后向其中导入图片,系统将自动将图片加载到数据库
      

  5.   

    楼上的都可以了,
    保存可以写,显示可以用DBIMAGE就可以了
      

  6.   

    对了,忘了说,保存.bmp 的话用dbimage 就很方便.
     但是还要保存.jpeg .jpg 的话,dbimage 就不行了,只能用 image 了然后自己外理。。