回 帖 发 新 帖 刷新版面

主题:如何用delphi将图像存入SQL数据库???

我想把JPEG和bmp格式的图象存入SQL Server2000中,哪位大哥可以帮忙写一段代码

回复列表 (共5个回复)

沙发

function PictrueSave(aParam,aTable:string;aImage:TImage;adoCommand:TAdoCommand):boolean;
var
  testStream:TMemoryStream;

begin
  Result := True;
  try
    testStream := TMemoryStream.Create;

    aImage.Picture.Graphic.SaveToStream(testStream);
    adoCommand.CommandText :='Insert into '+ aTable +'('+
                             aParam+
                             ')values('+
                             ':'+aParam+')';
    adoCommand.Parameters.ParamByName(aParam).LoadFromStream(testStream,ftBlob);
    try
      adoCommand.Execute;
    except
      Result := False;
    end;
  finally
    testStream.Free;//釋放內存流
  end;
end;
这是ACCESS的,你看下

板凳

我是用delphi中存储图片到SQL中的,下面是程序,但运行的时候总是出问题。
提示的错误是:对象名picture无效。谁能帮忙解答一下到底是哪里出错了


procedure TForm1.SaveButtonClick(Sender: TObject);  //存图片到SQL中
var
  Ms: TmemoryStream;
  jpg: Tjpegimage;

begin
  if (OpenPictureDialog1.Execute) and (Edit1.Text <> '') then
  begin
    Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);

    Ms := TmemoryStream.Create;
    jpg := Tjpegimage.Create;
    jpg.Assign(Image1.Picture.Graphic); //转为jpeg格式
    jpg.SaveToStream(Ms);
    Ms.Position := 0;

    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    adoquery1.SQL.Add('insert  picture(pic_name,picture)   values(:pic_name,:picture)'); //保存图片到数据库
    ADOQuery1.Parameters.ParamByName('pic_name').Value := Edit1.Text;
    ADOQuery1.Parameters.ParamByName('picture').LoadFromStream(Ms, ftBlob);
    ADOQuery1.ExecSQL;

    Ms.Free;
    jpg.Free;
  end
  else
  begin
    ShowMessage('保存出错或无文件名!');
    Exit;
  end;
end;

3 楼

我是用delphi中存储图片到SQL中的,下面是程序,但运行的时候总是出问题。
提示的错误是:对象名picture无效。谁能帮忙解答一下到底是哪里出错了


procedure TForm1.SaveButtonClick(Sender: TObject);  //存图片到SQL中
var
  Ms: TmemoryStream;
  jpg: Tjpegimage;

begin
  if (OpenPictureDialog1.Execute) and (Edit1.Text <> '') then
  begin
    Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);

    Ms := TmemoryStream.Create;
    jpg := Tjpegimage.Create;
    jpg.Assign(Image1.Picture.Graphic); //转为jpeg格式
    jpg.SaveToStream(Ms);
    Ms.Position := 0;

    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    adoquery1.SQL.Add('insert  picture(pic_name,picture)   values(:pic_name,:picture)'); //保存图片到数据库
    ADOQuery1.Parameters.ParamByName('pic_name').Value := Edit1.Text;
    ADOQuery1.Parameters.ParamByName('picture').LoadFromStream(Ms, ftBlob);
    ADOQuery1.ExecSQL;

    Ms.Free;
    jpg.Free;
  end
  else
  begin
    ShowMessage('保存出错或无文件名!');
    Exit;
  end;
end;

4 楼

insert into picture

5 楼

图片操作是对的,看看是不是表名或者字段名出错了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册