我现在有一个文件Drawing1.dwg,他是autocad的图片类型,我通过autocad的ocx可以把Drawing1.dwg防在我的界面上,就象image一样。现在我想把他保存到sqlserver的blob类型字段中,请问我该怎么做。
  另外,我怎么从blob字段中读取该文件,并得到他的文件名称?

解决方案 »

  1.   

    向数据库写图片的语句
    ADOtable1.Open;
    ADOtable1.Edit;
    TBlobField(ADOtable1.FieldByName('photo')).LoadFromFile('C:\Drawing1.dwg');
    ADOtable1.Post;从数据库中读图片
    ADOquery1.Open;
    TBlobField(ADOquery1.FieldByName('photo')).SaveToFile('C:\Drawing1.dwg');
      

  2.   

    把图片从数据库中读到硬盘上
    (Query.FieldByName('Image') as TBlobField).SaveToFile('C:\Drawing1.dwg');把图片写入的数据库
    Query.Sql.Text:=‘insert into pubreport(Image) value(:Image)'
    Query.ParamByName('Image').LoadFromFile('C:\Drawing1.dwg',ftBlob);
    Query.ExecSQL;
      

  3.   

    保存:
    query1.close;
    query1.sql.clear;
    query1.sql.add('insert into 表名(blob字段名)values(:cs)');
    Query1.Parameters.ParamByName('cs').DataType:=ftString;
    Query1.Parameters.ParamByName('cs').loadfromfile(Edit.Text,ftblob);                   //edit.text中是文件路径
    query1.execsql;
    读取:
    TblobField(Query1.FieldByName('blob字段名')).SavetoFile(TempFileName);//Tempfilename为临时文件名
      

  4.   

    function LoadImageToFieldF(ATable : TTable;AFieldName : string) :Boolean;
    var
      OpenDlg : TOpenDialog;
    begin
      Result := False;
      OpenDlg := TOpenDialog.Create(nil);
      OpenDlg.Filter := 'BMP AND JPEG File|*.BMP;*.JPG';
      if OpenDlg.Execute then
      begin
        TBlobField(ATable.FieldByName(AFieldName)).LoadFromFile(OpenDlg.FileName);
        Result := True;
      end;
      OpenDlg.Free ;
    end;function LoadImageToFieldS(ATable : TTable;AFieldName : string):Boolean;
    var
      OpenDlg : TOpenDialog;
      Stream : TFileStream;
    begin    
      Result := False;
      OpenDlg := TOpenDialog.Create(nil);
      OpenDlg.Filter := 'BMP AND JPEG File|*.BMP;*.JPG';
      if OpenDlg.Execute then
      begin
        Stream := TFileStream.Create(OpenDlg.FileName,fmOpenRead);
        TBlobField(ATable.FieldByName(AFieldName)).LoadFromStream(Stream);
        Result := True;
      end;
      OpenDlg.Free ;
    end;