我有一个SQL的表
字段1 varchar(50)
字段2 image(16)现在我要做的事情是怎么样把界面上Image1控件上的图片存进
表中
说明Image1上的图片已经装载进去,没有就为空
现在求两条语句
insert
 'insert into 表(字段1,字段2) values(1,?)';和update
根据字段1判断,判断语句可以不用写
update from 表 set 字段2=?
?这里等于Image1上加载的图片然后读取的时候又如何把字段2显示在Image1上请大虾指教

解决方案 »

  1.   

    把图片转为blobfield类型来存储
      

  2.   

    保存 
        ADOQuery1.Open; 
        ADOQuery1.Append; 
        TBlobField(ADOQuery1.FieldByName( 'F_IMAGE ')).LoadFromFile(OpenPictureDialog1.FileName); 
        ADOQuery1.Post; 显示 
        TBlobField(ADOQuery1.FieldByName( 'F_IMAGE ')).SaveToFile( 'c:\temp '+ADOQuery1.FieldByName( 'F_EXT ').AsString); 
        Image2.Picture.LoadFromFile( 'c:\temp.bmp ');
      

  3.   


    {插入}
      ADOQuery1.Close;
      ADOQuery1.SQL.Text:='insert into table_name (col1,col2) values (:id1,:id2)';
      ADOQuery1.Parameters.ParamByName('id1').Value:= 'values';
      ADOQuery1.Parameters.ParamByName('id2').Assign('pictureFilepath');
      ADOQuery1.ExecSQL;
    {更新}
      ADOQuery1.Close;
      ADOQuery1.SQL.Text:='update table_name set col1=:id1,col2=:id2';
      ADOQuery1.Parameters.ParamByName('id1').Value:= 'values';
      ADOQuery1.Parameters.ParamByName('id2').Assign('pictureFilepath');
      ADOQuery1.ExecSQL;
      

  4.   

    可我用
    ADOQuery1.Parameters.ParamByName('id2').Assign('Image1.pictrue');
    这样不行?那个'pictureFilepath'怎么写的,我就是试过才上网问的,大虾
      

  5.   

      1. 图像数据的选择及保存procedure Tform1.selectimageClick(Sender: TObject); //选择图像
    begin
    if openpicturedialog1.Execute then
    image1.Picture.LoadFromFile(openpicturedialog1.FileName );
    end;
    procedure Tform1.savetodbClick(Sender: TObject); //保存图像到数据库
    var
    ext:string;
    begin
    if image1.picture.Graphic <> nil then //避免image1中无图像保存出错
    begin
    adotable1.Edit ;
    adotable1.FieldByName('myimage').Assign(image1.Picture.Graphic);
    //以下记录保存到数据库的图像格式
    ext:=extractfileext(openpicturedialog1.FileName ); //取出文件扩展名
    if uppercase(ext) = '.BMP' THEN
    adotable1.FieldByName('isbmp').VALUE := 1 //BMP型图像数据
    ELSE IF (UPPERCASE(EXT) = '.JPEG') OR (UPPERCASE(EXT) = '.JPG') THEN
    adotable1.FieldByName('isbmp').VALUE := 0; //JPEG型图像数据
    ADOTABLE1.Post ;
    end;
    end;   2. 图像数据的读取及显示procedure Tform1.ADOTable1AfterScroll(DataSet: TDataSet); //ADOTable1的AfterScroll事件方法程序
     var
      jpegimage:tjpegimage;
     begin
      image1.Picture.Graphic :=nil; 
      //下边BMP、JPEG两种图像数据必需分别处理
      if adotable1.fieldbyname('isbmp').Asstring = '1' then //BMP型图像数据
       image1.Picture.bitmap.Assign(adotable1.fieldbyname('myimage'))
       //上边语句中的bitmap不能为graphic,否则会出错
      else if adotable1.fieldbyname('isbmp').asstring = '0' then //JPEG型图像数据
       begin //begin2
        jpegimage := tjpegimage.Create ; //通过jpegimage将图像显示在image1,否则会出错
        try
         jpegimage.Assign(adotable1.fieldbyname('myimage'));
         image1.Picture.Graphic :=jpegimage;
        finally
         jpegimage.Free ;
        end; //end try
      end; //end begin2
    end; 
      

  6.   

    image转换成memerystream,通过ado的存blob字段的方法实现