我正在开发一个Delphi XE3应用程序。在Windows 7 64位。 它写入SQLite3数据库并读回数据。
如果我使用dos cmdline读取数据,那很好。
但是,使用SQLiteExpert通过Delpih OR中的dbExpress控件返回的数据是垃圾。我怀疑它是使用64位Windows,但我完全难过。
任何想法的人?
命令行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;
感谢。
答案 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有关,但不是一个线索是什么!!