DELPHI怎么才能把图片写到数据库中,图片是JPG的
多谢大家了

解决方案 »

  1.   

    用LoadFromFiletable1.LoadFromFile('file.fef');
      

  2.   

    use  jpeg,
    ........
    function JpegStartsInBlob(PicField:TBlobField):integer;
    var
    ghy: TADOBlobstream;
    buffer:Word;
    hx: string;
    begin
    Result := -1;
    ghy := TADOBlobstream.Create(PicField, bmRead);
    try
    while (Result = -1) and (ghy.Position + 1 < ghy.Size) do
    begin
    ghy.ReadBuffer(buffer, 1);
    hx:=IntToHex(buffer, 2);
    if hx = 'FF' then begin
    ghy.ReadBuffer(buffer, 1);
    hx:=IntToHex(buffer, 2);
    if hx = 'D8' then Result := ghy.Position - 2
    else if hx = 'FF' then
    ghy.Position := ghy.Position-1;
    end; //if
    end; //while
    finally
    ghy.Free
    end; //try
    end;procedure TF_YGZLJG.SpeedButton1Click(Sender: TObject);
    var
      MyJPEG : TJPEGImage;
      MS: TMemoryStream;
    begin
       with data.ADOQ_pic_YHZLJG do
       begin
       close;sql.Clear;
       sql.Add('select pic from tab_YGJBXX where YGID='+quotedstr(trim(edit1.Text)));
       open;
       end;
       if data.ADOQ_pic_YHZLJG.RecordCount<>0 then
       begin
      openpicturedialog1.Execute;
        if openpicturedialog1.FileName<>'' then
      begin
        image1.Picture.LoadFromFile(openpicturedialog1.FileName);
        openpicturedialog1.FileName:='';
        MyJPEG := TJPEGImage.Create;
        try
          with MyJPEG do
          begin
            Assign(Image1.Picture.Graphic);
            MS:=TMemoryStream.create;
            SaveToStream(MS);
            MS.Position:=0;
            data.ADOQ_PIC.Edit;
            TBlobField(data.ADOQ_pic_YHZLJG.FieldbyName('pic')).LoadFromStream(MS);
            data.ADOQ_PIC.Post;
            messagebox(getactivewindow(),'图像保存完毕!','保存',mb_ok);
            image1.Picture.CleanupInstance;
          end;
        finally
          MyJPEG.Free;
        end;
      end;
      end
      else
      begin
      showmessage('不存在此员工');
      end;
    end;
      

  3.   

    unit demo5;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls, Grids, DBGrids, DB, DBTables, DBCtrls, jpeg;type
      TForm1 = class(TForm)
        DataSource1: TDataSource;
        Table1: TTable;
        DBGrid1: TDBGrid;
        Image1: TImage;
        Button1: TButton;
        Button2: TButton;
        OpenDialog1: TOpenDialog;
        Edit1: TEdit;
        DBNavigator1: TDBNavigator;
        DBImage1: TDBImage;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
    opendialog1.Execute ;
    image1.Picture.LoadFromFile(opendialog1.FileName);
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
    table1.Insert;
    table1.FieldByName('Name').AsString:=edit1.Text ;
    table1.FieldByName('Picture_Path').AsString :=opendialog1.FileName ;
    table1.FieldByName('Graphic').Assign(image1.Picture);
    table1.Post;
    end;end.
      

  4.   

    hongama(delphi级民工) 的方法我喜欢:)
      

  5.   

    将图片放在TImage控件里,用sql语言写入
    form1.adoquery1.close;
    form1.adoquery1.sql.clear;
    form1.adoquery1.sql.add('insert into yourtable values(:p1,:p2)');
    form1.adoquery1.parameters.parabyname('p1').values:=ID;
    form1.adoquery1.parameters.parabyname('p2').assign(form1.image.bitmap);
    try
       form1.adoquery1.execsql;
    except
    end;
      

  6.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls, DB, ADODB,jpeg;type
      TForm1 = class(TForm)
        ADOQuery1: TADOQuery;
        ADOQuery2: TADOQuery;
        Button1: TButton;
        Button2: TButton;
        Edit1: TEdit;
        Image1: TImage;
        OpenDialog1: TOpenDialog;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
       filename:string;
    procedure SetPicture(pos:string; TempQuery: TADOQuery);//存图片
      procedure GetPicture(pos:string;TempQuery: TADOQuery);
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.GetPicture(pos:string;TempQuery: TADOQuery);//读取图片
    var
      MS_JpegStream:TMemoryStream;
    begin
      try
        MS_JpegStream:=TMemoryStream.Create;
        with tempQuery do
          begin
            close;
            sql.clear;
            //修改这个语句
            sql.Add('select picture from table where no=:pos');
            Parameters.ParamByName('pos').value:=pos;
            Open;
          end;
        if tempquery.FieldByName('image').isnull then
          begin
            image1.Picture.Graphic:=nil;
          end
        else
          begin
             (tempQuery.FieldByName('image') as tblobfield).savetostream(MS_JpegStream);
             image1.Picture.Graphic:=nil;
             image1.Picture.Graphic:=TJpegImage.Create;
             MS_JpegStream.Position:=0;
             image1.Picture.Graphic.LoadFromStream(MS_JpegStream);
          end;  finally
        MS_JpegStream.Free;
      end;
      end;  procedure TForm1.SetPicture(pos:string; TempQuery: TADOQuery);//存图片
    var
      MS_JpegStream:TMemoryStream;
      M_BitMap:TBitMap;
      M_Jpeg:TJpegImage;
    begin
      try
        MS_JpegStream:=TMemoryStream.Create;
        M_BitMap:=TBitMap.Create;
        M_Jpeg:=TJpegImage.Create;
        if extractfileext(filename)='.bmp' then  //extractfileext查找字符串中相应的值
          begin
            M_BitMap.LoadFromFile(filename);
            M_Jpeg.Compress;
            M_Jpeg.Assign(M_BitMap);
          end
        else if extractfileext(filename)='.jpg' then
          begin
            M_Jpeg.LoadFromFile(filename);
          end;
        M_Jpeg.SaveToStream(MS_JpegStream);
        with tempQuery do
          begin
            close;
            sql.clear;
    //修改这个语句
            sql.Add('insert into table2 (no,IMage) values (:pos,:image)');
            Parameters.ParamByName('pos').Value:=pos;
            Parameters.ParamByName('image').LoadFromStream(MS_JpegStream,ftblob);        ExecSQL;
          end;
      finally
        MS_JpegStream.Free;
        M_BitMap.Free;
        M_Jpeg.Free;
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
    if openpicturedialog1.Execute then
      begin
       filename:=openpicturedialog1.FileName;
       SetPicture(edit1.text,ADOQuery1);
    end;
     end;
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    getpicture(edit1.text,ADOQuery2);
    end;end.
      

  7.   

    TO  hongama(delphi级民工) 
       您的代码中的ghy变量这么熟悉呢??呵呵,不光是变量代码都熟悉。呵呵  UP一下
      

  8.   

    TBlobField(table.fileldbyname(filename)).loadformfile(filename);
    ok!
      

  9.   

    to  ghyghost(爱国人士--海威思特),本来就是以前友人给我的一段,我用的时候修改了一下,呵呵,保证好用,测试系统:window2000Pro,D7,SQl SERVER2000.