请教数组中的数据如何存、取于数据库的二进制字段中????数组可能长达1024字节
谢谢

解决方案 »

  1.   

    需要把该字段设置为IMAGE类型吗???
    整个访问过程又该如何做呢??
      

  2.   

    求救,我用Tstream对象尝试写入数据库的Image字段可会出错
    高手帮帮忙
      

  3.   

    在网上找这个,能够实现 
    TMemoryStream (for working with a memory buffer)
    TBlobStream (for working with BLOB fields)
      

  4.   

    procedure TAddControlorFM.BitBtn1Click(Sender: TObject);
    Var
      SqlStr:String;
      Buffer: PChar;
      MemSize,i,j: Integer;
      Stream: TMemoryStream;
      S:string;
      DoorParam:array[1..1024]of byte;
    begin
      for i:=1 to 1024 do
        DoorParam[i]:=i;  Stream :=TMemoryStream.Create();
      try
        Stream.Seek(0, 2); {Seek 0 bytes from the stream's end point}
        S := ' This line will be added to the end';
        //Buffer:=@s;
        Stream.Write(pchar(s)^, Length(s));
        //memo1.setTextBuf
        TRY
          if Edit2.text='' then
          begin
            MessageDlg('请确定添加的控制器名称',mtError,[mbOK],0);
          end;
          SqlStr:='Insert into Controlors(ControlorID,Model,ControlorType,DoorCFG)';
          SqlStr:=SqlStr+' values(:p1,:p2,:p3,:p4)';
          with DM.DataMD.QPublic do
          begin
            if Active then close;
            Sql.Clear;
            sql.Add(SqlStr);
            Parameters.parambyname('p1').Value:=StrToInt(TRIM(Edit1.Text));
            {型号\控制器类型}
            if Trim(ComBoBox1.Text)='DCU9010/XP  两门控制器'then
            Begin
              Parameters.parambyname('p2').Value:='DCU9010/XP';
              Parameters.parambyname('p3').Value:=16;
            end;
            if Trim(ComBoBox1.Text)='DCU9020     四门控制器'then
            begin
              Parameters.parambyname('p2').Value:='DCU9020';
              Parameters.parambyname('p3').Value:=0;
            end;
            if Trim(ComBoBox1.Text)='DCU9020XP   四门控制器'then
            begin
              Parameters.parambyname('p2').Value:='DCU9020XP';
              Parameters.parambyname('p3').Value:=8;
            end;
            Parameters.parambyname('p4').LoadFromStream(Stream,ftBlob);
            Execsql;
         end;
       except
       on E: Exception do
          MessageDlg(String(E.message),mtError,[mbOK],0);
       end;
    finally
      Stream.Free;
    end;
    end;
    写进去了可不知道如何读出来
      

  5.   

    请问如何将数据表中的Image字段读出于数组中
    高手帮忙啊
      

  6.   

    Var
      Buffer: PChar;
      Stream: TMemoryStream;
      DoorParam:array[1..1024]of byte;
    begin
      for i:=1 to 1024 do
        DoorParam[i]:=i;//初始化数组  Stream :=TMemoryStream.Create();
      try
        Stream.Seek(0, 2); {Seek 0 bytes from the stream's end point}
        Stream.Write(pchar(@DoorParam)^, Length(s));
         {写数据库}                                   {DoorCFG  为image字段}
          SqlStr:='Insert into Controlors(ControlorID,DoorCFG)';
          SqlStr:=SqlStr+' values(:p1,:p2)';
          with DataSet do
          begin
            if Active then close;
            Sql.Clear;
            sql.Add(SqlStr);
            Parameters.parambyname('p1').Value:=StrToInt(TRIM(Edit1.Text)); 
            {通过内存流写}
            Parameters.parambyname('p4').LoadFromStream(Stream,ftBlob);
            execsql;
      finally
        Stream.Free;
      end;    
    看看有没错
    可能写进去了,可不知道咋读出来
      
      

  7.   

    我将S := ' This line will be added to the end';的数据同过流存于数据库的Image字段,
    读出来后看到的是一堆乱码,何顾呀???
    谁能解不??