Firedac SQLite 返回错误值
Firedac SQLite returning wrong values
我有一个 SQLite 数据库,其中包含一个名为“玩家”的 table。我可以在 DB Browser 中看到 table 中的数据是正确的,但是当尝试检索数据时,它返回的值似乎与数据库中的值完全不同。
数据库中的值:76561198113034550
返回值:152768822
我正在通过以下方式获取值
qryPlayers.Close;
qryPlayers.SQL.Text := 'SELECT * FROM players';
qryPlayers.Open;
playerID := qryPlayers.FieldByName('steamid').Value; // .AsString returns the same value
这是什么原因造成的,我该如何解决?
刚刚查了一下,76561198113034550
的低4个字节是什么值...而且,是152768822
!所以高4个字节被简单地截断了。
将 playerID
声明为 Int64
,而不是 Integer
或 Cardinal
,因为这些类型在内存中只有 4 个字节。
为了从数据库中检索值,请使用 qryPlayers.FieldByName('steamid').AsLargeInt
.
我有一个 SQLite 数据库,其中包含一个名为“玩家”的 table。我可以在 DB Browser 中看到 table 中的数据是正确的,但是当尝试检索数据时,它返回的值似乎与数据库中的值完全不同。
数据库中的值:76561198113034550
返回值:152768822
我正在通过以下方式获取值
qryPlayers.Close;
qryPlayers.SQL.Text := 'SELECT * FROM players';
qryPlayers.Open;
playerID := qryPlayers.FieldByName('steamid').Value; // .AsString returns the same value
这是什么原因造成的,我该如何解决?
刚刚查了一下,76561198113034550
的低4个字节是什么值...而且,是152768822
!所以高4个字节被简单地截断了。
将 playerID
声明为 Int64
,而不是 Integer
或 Cardinal
,因为这些类型在内存中只有 4 个字节。
为了从数据库中检索值,请使用 qryPlayers.FieldByName('steamid').AsLargeInt
.