About Binary Data Insert into DataBase |
答題得分者是:Mickey
|
LPH
一般會員 發表:53 回覆:43 積分:19 註冊:2003-04-02 發送簡訊給我 |
var
Psin : array[0..255] of byte;
i : Integer;
begin
for i := 0 to 255 do
Psin[i] := GetBuf[i]; with query1 do
begin
close;
SQL.add('INSERT INTO database');
sql.add('('mlbinary')');
sql.add('VALUE');
sql.add('(':mlbinary')');
parambyname('mlbinary').datatype := ftarray;
parambyname('mlbinary').value := Psin;
Execsql;
end;
end;
為什麼會發生型態不對的錯誤..
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
改這樣試試 :
var Psin : array[0..255] of byte; i : Integer; begin for i := 0 to 255 do Psin[i] := GetBuf[i]; with query1 do begin close; SQL.add('INSERT INTO database'); sql.add('(mlbinary)'); sql.add('VALUES'); sql.add('(:mlbinary)'); // parambyname('mlbinary').datatype := ftarray; // parambyname('mlbinary').value := Psin; parambyname('mlbinary').datatype := ftTypedBinary; parambyname('mlbinary').SetData(@Psin); Execsql; end; end;發表人 - Mickey 於 2003/05/20 21:26:53 |
LPH
一般會員 發表:53 回覆:43 積分:19 註冊:2003-04-02 發送簡訊給我 |
引言: 改這樣試試 :謝謝你.. 可是 如果我存入的 Binary Byte 是 128 讀出來轉成 XML textNode 時 為什麼常會不足128 Byte 不管是 Buffer 或是將Pchar 轉成 String.. Var Buffer: PChar; MemSize: Integer; Stream : TBlobStream; mydoc : IDOMDocument; mymsh : IDOMNode; mychild:IDOMNode; mymb : IDOMNode; mymb1 : IDOMNode; I : Integer; X : Integer; IA22 : String; begin for I := 3 to OpdDm.Txmltab.FieldCount - 1 do begin if OpdDm.Txmltab.Fields[I].AsString <> '' then begin if I = 14 then begin Stream := TBlobStream.Create(OpdDm.Txmltab.FieldByName('mlbinary') as TBlobField, bmRead); try MemSize := Stream.Size; Inc(MemSize); Buffer := allocMem(MemSize); try Stream.Read(Buffer^, MemSize); IA22 := ''; for X := 1 to MemSize do IA22 := IA22 copy(Buffer,X,1); mychild := .appendChildmydoc.createElementOpdDm.Txmltab.Fields[I].FieldName)); //mychild.appendChild(mydoc.createTextNode(Buffer)); mychild.appendChild(mydoc.createTextNode(IA22)); finally FreeMem(Buffer, MemSize); end; finally Stream.Free; end; end end;var Psin : array[0..255] of byte; i : Integer; begin for i := 0 to 255 do Psin[i] := GetBuf[i]; with query1 do begin close; SQL.add('INSERT INTO database'); sql.add('(mlbinary)'); sql.add('VALUES'); sql.add('(:mlbinary)'); // parambyname('mlbinary').datatype := ftarray; // parambyname('mlbinary').value := Psin; parambyname('mlbinary').datatype := ftTypedBinary; parambyname('mlbinary').SetData(@Psin); Execsql; end; end;發表人 - Mickey 於 2003/05/20 21:26:53 |
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
LPH
一般會員 發表:53 回覆:43 積分:19 註冊:2003-04-02 發送簡訊給我 |
引言: 我是用 MSSQL 2000 , binary(20) datatype, D6 測試的. 不知你的環境 ? datatype 用 ? ps. Source Code 可用【code】...【/code】比較容易看.我環境也是 MsSql 2000 , Binary(256) DataType , D6 Binary 小於 128 欄位好像是顯示 Bytes 我用 256 欄位是顯示 [BLOB] 從SQL Explorer 看...不知 [Bytes] 和 [BLOB] 有何不同... |
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
我用 binary(256) datatype, BDE 是 TBytesField 不是 TBLOBField 耶 ?
上一篇我修正過, 請再過目一下. Null-Terminate 那段.^^ 反過來我有一些疑問想澄清 :
為何用 binary data field 拿來存 character,
而不用 varchar / char data field ?
難道是要刻意避開 DB 的 character set 轉換 ?
如果是, 除喪失一些 SQL 功能(如 like 等...)外,
亦增加不少資料處理的複雜度喔.
|
LPH
一般會員 發表:53 回覆:43 積分:19 註冊:2003-04-02 發送簡訊給我 |
引言: 我用 binary(256) datatype, BDE 是 TBytesField 不是 TBLOBField 耶 ? 上一篇我修正過, 請再過目一下. Null-Terminate 那段.^^ 反過來我有一些疑問想澄清 : 為何用 binary data field 拿來存 character, 而不用 varchar / char data field ? 難道是要刻意避開 DB 的 character set 轉換 ? 如果是, 除喪失一些 SQL 功能(如 like 等...)外, 亦增加不少資料處理的複雜度喔.我的Table 是從 Sqlserver Enterprise Menager 新增料表產生DataType 是VarBinary再從SQL Explorer去看是資料欄 BLOB. Field是 LongVarBinary 謝謝你的指教.我已經解決了 Insert Into 的問題了.感謝... 但是現在就是取出資料時有時會造成欄位不足的情形....再請指教.... 發表人 - LPH 於 2003/05/21 18:56:40 發表人 - LPH 於 2003/05/21 19:04:10 |
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |