0

Delphi XE3 アプリを開発しています。Windows 7 64 ビットで。SQLite3 データベースに書き込み、データを読み取ります。

dos コマンドラインを使用してデータを読み取れば問題ありません。

ただし、Delpih または SQLiteExpert を使用して dbExpress コントロールを介して返されるデータはガベージです。64ビットWindowsを使用していることが原因ではないかと疑っていますが、完全に困惑しています.

SQLiteExpert のスクリーンショット

アイデアはありますか?

コマンドライン sqlite3 は、適切なデータを示しています。

sqlite> select distinct * from flight;
1|38926|Wed, 13 Mar 2013 15:54:19 GMT|EE35|38927|EGBB|EGPD|ofp|100720
2|38926|Wed, 13 Mar 2013 15:54:19 GMT|EE35|38927|EGBB|EGPD|ofp|100720

Delphi コード (同じ問題で TSQLQuery も試しました):

qrySelect := TSQLDataSet.Create(nil);
qrySelect.CommandType := ctQuery;
qrySelect.SQLConnection := conn;
qrySelect.CommandText := 'select distinct flight_brief_id, brief_id, brief_date from flight';

qrySelect.Open;
try
showmessage(inttostr(qryselect.Fields.Count)); // returns 3 as expected
qrySelect.First;
while not qrySelect.Eof do
begin
    strA := qryselect.Fields[0].AsString; 
    strB := qryselect.Fields[1].AsString;
    strC := qryselect.Fields[2].AsString;
    qrySelect.Next;
end;
finally
  qrySelect.Close;
end;

ありがとう。

4

1 に答える 1

0

OK、そのようには答えられませんが、誰かが私にアイデアを持っている場合に備えて、回避策と問題がどこにあるのかについてのより良いアイデアがあります!

win XP の箱を掃除したところ、まったく同じ問題が見つかったので、64 ビットの問題ではありません。良い!

そのため、挿入 TSQLQuery からパラメーターを削除しました

example of usage : qryInsert.Params.CreateParam(ftString, 'BriefID', ptInput);

と置き換え

qryInsert.SQL.Text := 'insert into flight (brief_id, brief_date, flightno, '+
                    ' flight_brief_id, pod, poa, ofp, flight_date) '+
                    ' values ( '''+
                      brief_id+''', '''+
                      brief_date+''', '''+
                      flightno+''', '''+
                      flight_brief_id+''', '''+
                      pod+''', '''+
                      poa+''', ''ofp'', '''+
                      flight_date+''' )';

きれいではありませんが、うまくいきました。そして64ビットシステムで。だから、それはパラメータと関係がありますが、何の手がかりではありません!!

于 2013-03-18T15:03:40.203 に答える