本文整理自网络,侵删。
unit uJpgSaveToData;
interface
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtDlgs, Vcl.StdCtrls, Vcl.Mask, scGPExtControls, Vcl.ExtCtrls, FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys, FireDAC.Phys.MSSQL, FireDAC.Phys.MSSQLDef, FireDAC.VCLUI.Wait, FireDAC.Stan.Param, FireDAC.DatS, FireDAC.DApt.Intf, FireDAC.DApt, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters, cxStyles, cxCustomData, cxFilter, cxData, cxDataStorage, cxEdit, cxNavigator, cxDataControllerConditionalFormattingRulesManagerDialog, Data.DB, cxDBData, cxGridLevel, cxClasses, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, FireDAC.Comp.DataSet, FireDAC.Comp.Client, scControls, scGPImages, cxContainer, cxImage, Data.Win.ADODB, cxBlobEdit;
type TForm1 = class(TForm) edt_JPG_Add: TscGPEdit; OpenPictureDialog1: TOpenPictureDialog; SaveToData: TscButton; ReadImage: TscButton; FDConnection1: TFDConnection; FDQuery1: TFDQuery; DataSource1: TDataSource; FDQuery2: TFDQuery; cxGrid1DBTableView1: TcxGridDBTableView; cxGrid1Level1: TcxGridLevel; cxGrid1: TcxGrid; editId: TscGPEdit; cxGrid1DBTableView1ID: TcxGridDBColumn; cxGrid1DBTableView1Photo: TcxGridDBColumn; cxGrid1DBTableView1NameBM: TcxGridDBColumn; scButton1: TscButton; Image2: TImage; Image1: TImage; scMemo1: TscMemo; procedure edt_JPG_AddRightButtonClick(Sender: TObject); procedure SaveToDataClick(Sender: TObject); procedure ReadImageClick(Sender: TObject); procedure scButton1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}uses jpeg;
procedure TForm1.ReadImageClick(Sender: TObject);// 读取图片var MemoStream: TMemoryStream; Jpg: TJPEGImage;begin FDQuery1.Close; FDQuery1.SQL.Text := 'SELECT * FROM bTest where NameBM =' + editId.Text; // 查询图片 FDQuery1.Open; if not FDQuery1.FieldByName('photo').IsNull then begin MemoStream := TMemoryStream.Create; Jpg := TJPEGImage.Create; TBlobField(FDQuery1.FieldByName('Photo')).SaveToStream(MemoStream); // 显示的转换为BlobField并保存到内存流 MemoStream.Position := 0; Jpg.LoadFromStream(MemoStream); // 加载图片 image2.Picture.Assign(Jpg); end else begin image2.Picture := nil; end; MemoStream.Free; Jpg.Free;
end;
procedure TForm1.SaveToDataClick(Sender: TObject);var MemoStream: TMemoryStream; Jpg: TJPEGImage;begin try MemoStream := TMemoryStream.Create; // 创建内存流 Jpg := TJPEGImage.Create; // Image1.Picture.Graphic.SaveToStream(MemoStream); // 将图片保存到内存流中 Image1.Picture.Graphic.SaveToStream(MemoStream); MemoStream.Position := 0; scMemo1.Lines.LoadFromStream(MemoStream); FDQuery1.Close; FDQuery1.SQL.Clear; FDQuery1.SQL.Add('Insert into bVIP_Member (NameBM,TouX) values (:NameBM,:Photo)'); FDQuery1.Params.ParamByName('NameBM').Value := editId.Text; FDQuery1.Params.ParamByName('Photo').LoadFromStream(MemoStream, ftBlob); // 读取保存的内存图 ftBlob FDQuery1.ExecSQL; Caption := '保存成功。'; finally Jpg.Free; MemoStream.Free; // 释放内存流 end; //或者 TBlobField(FDquery1.FieldbyName('Field').LoadFromSteam(MemoStream));end;
procedure TForm1.scButton1Click(Sender: TObject);begin cxGrid1DBTableView1.DataController.RefreshExternalData;end;
procedure TForm1.edt_JPG_AddRightButtonClick(Sender: TObject);begin OpenPictureDialog1.Title := '打开图片'; if OpenPictureDialog1.Execute then begin Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName); edt_JPG_Add.Text := OpenPictureDialog1.FileName; end;end;
end.
相关阅读 >>
Delphi 学习 sql 语句 - insert、update、delete
更多相关阅读请进入《Delphi》频道 >>