SQLite3数据'腐败'

时间:2013-03-15 11:48:49

标签: sqlite 64-bit

我正在开发一个Delphi XE3应用程序。在Windows 7 64位。 它写入SQLite3数据库并读回数据。

如果我使用dos cmdline读取数据,那很好。

但是,使用SQLiteExpert通过Delpih OR中的dbExpress控件返回的数据是垃圾。我怀疑它是使用64位Windows,但我完全难过。

SQLiteExpert screenshot

任何想法的人?

命令行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;

感谢。

1 个答案:

答案 0 :(得分:0)

好的,没有回答,但我有一个解决方法,更好地了解问题出在哪里,以防有人对我有所了解!

我拂去了一个胜利的XP机箱,发现了完全相同的问题,所以它不是64位问题。尼斯!

所以,我从插入TSQLQuery中删除了params

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位系统上。所以它与params有关,但不是一个线索是什么!!