⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 数据库Blob读写
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, DBGrids, DB, ADODB, ExtCtrls;

type
  TForm1 = class(TForm)
    btnWrite: TButton;
    Button2: TButton;
    ADOcon: TADOConnection;
    table1: TADOTable;
    ds: TDataSource;
    grid: TDBGrid;
    imgSou: TImage;
    imgDest: TImage;
    btnRead: TButton;
    ADOConnection1: TADOConnection;
    btnWRImage: TButton;
    DataSource1: TDataSource;
    Button1: TButton;
    ADOTable1: TADOTable;
    ADOQuery1: TADOQuery;
    Button3: TButton;
    procedure btnWriteClick(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure btnReadClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure btnWRImageClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnWriteClick(Sender: TObject);
var  adoqry : TADOQuery;
     strm:tmemorystream;
    // stream: TStream;
     rf : TReader;
     n,n2: integer;
     w: TWriter;
     nb,nb2 :byte;
     dd,d2,d3 : double;
     str,s2,s3: string;
     lw,lw2 : longword;
     buf,buf2 :array[0..255] of char;
     pbuf,pbuf2 : pchar;
     ii : integer;
     cbuf : char;
begin
     adoqry := TADOQuery.Create(Nil);
     adoqry.Connection := ADOcon;

{     strm:=tmemorystream.Create;
     imgsou.Picture.Bitmap.SaveToStream(strm);//将图像数据写入内存流
     showMessage(Inttostr(strm.size));
     table1.Edit;
     (table1.FieldByName('obj') as TBlobField).loadfromstream(strm);//从内存流中装载图像数据
     strm.Free;

     strm:=tmemorystream.Create;
     (table1.FieldByName('obj') as TBlobField).SaveToStream(strm);//从内存流中装载图像数据
     showMessage(Inttostr(strm.size));
     imgDest.Picture.Bitmap.LoadFromStream(strm);
     imgDest.Refresh;
     strm.Free;     }

     strm:=tmemorystream.Create;
     dd := 12.35;
     strm.Write(dd,sizeof(double));
     str := 'strong据fdsfdasfdhhgdygdgsgfsdgfsdgdfsgdsgfgffsa';
    // pbuf := pchar(@str);
     //strm.Write(pbuf^, Length(str));
    // for ii := 0 to Length

     //strm.Write(Char(str),255);
     strm.Write(str,sizeof(string));

     nb := 25;
     n := 25;
     strm.Write(n,sizeof(byte));
     s2 := '';
    // strm.Write(s2,sizeof(string));
     lw := 5678;
     strm.Write(lw,sizeof(longword));

     table1.First;
     table1.Edit;
     (table1.FieldByName('obj') as TBlobField).loadfromstream(strm);//从内存流中装载数据
     table1.Post;
     strm.Free;

     //stream:=TFileStream.Create('',fmCreate);
     strm:=tmemorystream.Create;
     n := (table1.FieldByName('obj') as TBlobField).BlobSize;
     //showMessage(Inttostr(n));
     table1.First;
     table1.Edit;
     (table1.FieldByName('obj') as TBlobField).SaveToStream(strm);//装载数据到内存流中
     strm.Position := 0;
     strm.Read(d2,sizeof(double));
     s2 := '';
     strm.Read(s2,sizeof(string));

     strm.Read(nb2,sizeof(byte));
     //strm.Read(s3,sizeof(string));
     strm.Read(lw2,sizeof(longword));


     showmessage(FloattoStr(d2) + ',' + s2 + ',' + InttoStr(nb2) + ',' + InttoStr(lw2) + '.');

end;

procedure TForm1.Button2Click(Sender: TObject);
var
     stream: TStream;
     n: integer;
     str: string;
     w: TWriter;
     rf : TReader;
begin
     n := 10;
     str := 'test string';
     stream := TFileStream.Create ('e:\temp\test.txt', fmCreate);
     w := TWriter.Create (stream, 1024);
     w.WriteFloat(12.35);
     w.WriteFloat(22.53);

    { w.WriteInteger (n);
     w.WriteString (str);
     w.WriteString('Second');
     w.WriteString('Third');
    } w.Free;
     stream.Free;
     stream := TFileStream.Create ('e:\temp\test.txt', fmOpenRead);
     rf := TReader.Create(stream,1024);
     showMessage(Inttostr(stream.size));
     n := rf.ReadInteger;
     str := rf.ReadString;
     str := str+'-' + rf.ReadString;
     showmessage(InttoStr(n) + ',' + str);

end;

procedure TForm1.btnReadClick(Sender: TObject);
var  adoqry : TADOQuery;
     str : String;
     strm:tmemorystream;
     dd : double ;
     table : TADOTable;
begin
     adoqry := TADOQuery.Create(Nil);
     adoqry.Connection := ADOConnection1;
//     str := 'insert into T_BLOB_TEST (ID) values (5)';
//     adoqry.SQL.Add(str);
//     adoqry.ExecSQL;


     strm:=tmemorystream.Create;
     dd := 335;
     strm.Write(dd,sizeof(double));
     adoqry.Close;
     
     table := TADOTable.Create(Self);
     table.Connection := ADOConnection1;
     table.TableName :='T_RIVER';// 'T_BLOB_TEST';
     table.Active := True;
     table.Insert;
     table.FieldByName('Name').AsString := 'ertre';
     (table.FieldByName('obj') as TBlobField).loadfromstream(strm);
    // (table.FieldByName('obj') as TBinaryField).as .loadfromstream(strm);
     table.Post;
     ShowMessage(inttostr(table.RecordCount));
     {
     adoqry.SQL.Clear;
     str := 'insert into T_RIVER (Name,obj) values (''qqq'',:obj)';
     adoqry.SQL.Add(str);
     adoqry.Parameters.Items[0]. .asblob:=Strm.datastring;
     }
     strm.Free;
end;

procedure TForm1.FormShow(Sender: TObject);
var  sCon,sCon2 : string;
begin

     if ADOcon.Connected then ADOcon.Close;
     sCon :='Provider=Microsoft.Jet.OLEDB.4.0;' +
          'Data Source=' + 'db1.mdb' +
          ';Mode=ReadWrite|Share Deny None;Persist Security Info=False';
     sCon2 := 'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=dev;Initial Catalog=fiberdb;Data Source=F\FIBER';
     sCon2 := 'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=dev;Initial Catalog=fiberdb;Data Source=F\FIBER;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=WJM;Use Encryption for Data=False';
     ADOcon.ConnectionString := sCon;
     //ADOcon.LoginPrompt := True;
     ADOcon.ConnectionTimeout := 15;
     ADOcon.CursorLocation := clUseClient;
     ADOcon.Mode := cmReadWrite;
     ADOcon.Open;
     table1.Active := True;
end;

procedure TForm1.btnWRImageClick(Sender: TObject);
var  adoqry : TADOQuery;
     strm:tmemorystream;
    // stream: TStream;
begin
     strm:=tmemorystream.Create;
     imgsou.Picture.Bitmap.SaveToStream(strm);//将图像数据写入内存流
     table1.Edit;
     (table1.FieldByName('obj') as TBlobField).loadfromstream(strm);//从内存流中装载图像数据
     strm.Free;

     strm:=tmemorystream.Create;
     (table1.FieldByName('obj') as TBlobField).SaveToStream(strm);//从内存流中装载图像数据
     strm.Position := 0;
     imgDest.Picture.Bitmap.LoadFromStream(strm);
     imgDest.Refresh;
     strm.Free;
;
end;

procedure TForm1.Button1Click(Sender: TObject);
var  adoqry : TADOQuery;
     strm:tmemorystream;
    // stream: TStream;
begin
     strm:=tmemorystream.Create;
     imgsou.Picture.Bitmap.SaveToStream(strm);//将图像数据写入内存流
     ADOQuery1.Edit;
     (ADOQuery1.FieldByName('BUILD_MAP') as TBlobField).loadfromstream(strm);//从内存流中装载图像数据
     strm.Free;
     adoquery1.Post;
    {
     strm:=tmemorystream.Create;
     (ADOQuery1.FieldByName('BUILD_MAP') as TBlobField).SaveToStream(strm);//从内存流中装载图像数据
     strm.Position := 0;
     ShowMessage(InttoStr(strm.Size));
     imgDest.Picture.Bitmap.LoadFromStream(strm);
     imgDest.Refresh;     strm.Free;  }
end;

procedure TForm1.Button3Click(Sender: TObject);
var  adoqry : TADOQuery;
     strm:tmemorystream;
begin
     strm:=tmemorystream.Create;
     (ADOQuery1.FieldByName('BUILD_MAP') as TBlobField).SaveToStream(strm);//从内存流中装载图像数据
     strm.Position := 0;
     ShowMessage(InttoStr(strm.Size));
     imgDest.Picture.Bitmap.LoadFromStream(strm);
     imgDest.Refresh;
     strm.Free;

end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -