刚看了一个这方面的教程,里面这样说:DBImage组件没有 LoadFromFile 这个方法。DBImage组件的内容只是结果而非源头,应该针对原始数据库着手,也就是从对数据库字段的永久性 TField组件下手,TField组件有一个DataType属性,由这个属性可得到TField组件对应数据库的字段应该使用什么样的数据类型。
教程用用的是一个 BLOB(Binary Large Object)字段小弟对数据库不是很了解,有几个问题向各位请教:
1。TField跟数据库(我用的是SQL SERVER 2000)里的每一列是不是一一对应的?
2。SQL SERVER 2000里没有 BLOB这种数据类型,怎么办?

解决方案 »

  1.   

    可以设一个binary的字段 把图片存在里面啊
      

  2.   

    偶用的是Image字段类型procedure TForm1.Button1Click(Sender: TObject);
    var
       tempStream:TMemoryStream;
       JpgPic:TJpegImage;
       myBmp:Tbitmap;
    begin
    try
      JpgPic:=TJpegImage.Create;        // 创建JPE图片
      myBmp:=Tbitmap.Create;  tempStream:=TMemoryStream.Create; // 创建内存流
      tempStream.clear;                 // 初始化流  if not OpenPictureDialog1.Execute then Exit;       //  执行“打开图片”的对话窗口
      if UpperCase(ExtractFileExt(OpenPictureDialog1.filename))='.BMP' then   //上BMP文件则进行转换
        begin
          myBmp.LoadFromFile(OpenPictureDialog1.filename);   //把打开的BMP文件存入myBMP中
          JpgPic.Assign(myBmp);                              //转换格式
        end
      else
          JpgPic.LoadFromFile(OpenPictureDialog1.filename);  // 将选定的图片存入该变量
      DBImage1.Picture.bitmap.assign(JpgPic); //若你想DBIMAGE显示JPG图像就可这样.
      JpgPic.SaveToStream(tempStream);        //将该变量中的内容存入流
      AdoQuery1.Open;                   //  打开数据集
      adoquery1.Append;                 //  让数据集处在追加模式
      tblobfield(adoquery1.FieldByName('F_Photo')).LoadFromStream(tempStream) ;  //将流中的信息写入数据表
      adoquery1.Post;  // 向服务器递交修改
    finally
      JpgPic.Free;     // 释放
      tempStream.Free; // 释放
    end;
    end;