解决方案 »

  1. 这样声明
    type
       TServParams = TDAParams;
       TServParam = TDAParam;
      

  2. example:1.先建立一个表,字段类型为blob:SL.Add('CREATE TABLE IF NOT EXISTS TEST (');
    SL.Add('FileName TEXT PRIMARY KEY,');
    SL.Add('Data BLOB);');
    SL.Add('');2.写进二进制数据:var
      FFileStream:TFileStream;
      FData:array of Char;
      FSQLR:TSQLRequest;
      ASQL:AnsiString;
    begin
      FFileStream:=TFileStream.Create('test.xml',fmOpenReadWrite);
      ASQL:='INSERT INTO TEST(FileName,Data) VALUES('+QuotedStr('test.xml')+',?)';
      try
        SQLite数据库对象.Execute('DELETE FROM TEST');
        //
        SetLength(FData,FFileStream.Size);
        FFileStream.Position:=0;
        FFileStream.Read(PChar(FData)^,Length(FData));
        FSQLR.Prepare(SQLite数据库对象.DB,ASQL);
        FSQLR.Bind(1,PChar(FData),Length(FData));
        FSQLR.Execute;
      finally
        FreeAndNil(FFileStream);
      end;Note:其中问号是参数,SQLite数据库对象类型为TSQLDataBase.3.读取数据并写入到文件:var
      FBlobField:TSQLBlobStream;
      FFileStream:TMemoryStream;
      FData:array of Char;
    begin
      try
        FFileStream:=TMemoryStream.Create;
        FBlobField:=SQLite数据库对象.Blob('','TEST','Data',1,True);
        try
          FBlobField.Position:=0;
          SetLength(FData,FBlobField.Size);
          FBlobField.ReadBuffer(PChar(FData)^,FBlobField.Size);
          FFileStream.Write(PChar(FData)^,FBlobField.Size);
          FFileStream.SaveToFile("test.xml");
        finally
          FreeAndNil(FBlobField);
          FreeAndNil(FFileStream);
        end;
      except
        Result:='';
      end;
      

  3.   UniTable2.Open;
      UniTable2.Append;
      TBlobField(UniTable2.FieldByName('CONTENT')).LoadFromFile('d:\PackageRequires.exe');
      UniTable2.Post;  UniQuery1.Close;
      UniQuery1.SQL.Text := 'SELECT * FROM TESTBLOB WHERE ID=9';
      UniQuery1.ExecSQL;
      TBlobField(UniQuery1.FieldByName('CONTENT')).SaveToFile('d:\system\desktop\d.exe');
      

类似问题 »