【问题标题】:Long type with SQLite and Zentus Jdbc driver带有 SQLite 和 Zentus Jdbc 驱动程序的长类型
【发布时间】:2010-07-29 08:48:35
【问题描述】:

我通过Zentus在Java代码中使用SQLite。

我需要在我的数据库中映射 Java long 原始类型。为此,我尝试使用以下语句创建表:CREATE TABLE MY TABLE (...., LONG time, ...)

使用 Zentus 通过 Java 插入数据库可以完美运行,但是在检索数据时,总是通过 Java 和 Zentus,LONG 值缩小为 32 位值。

我尝试使用 SQlite 直接查询数据库并且它可以工作,因此我猜问题是 JDBC 驱动程序。

你们中的一些人是否已经遇到过此类问题,您是如何解决的?

【问题讨论】:

    标签: sqlite jdbc


    【解决方案1】:

    SQLite 有 4 种原始类型:

    • 文字
    • 整数
    • 真实
    • 斑点

    部分关键词转换为这些类型,未知关键词默认为Text。 “整数”类型有点特殊,因为 SQLite 只会保留记录最大数字所需的最小大小。如果您的最大数字小于 2^31,它将被记录在 32 位上。我不知道如果它扩展到 64 位然后所有高于 2^31 的值都被删除,或者它只是保持不变,它会缩小。如果数据库被清理,它肯定会收缩。

    我可以建议保留一个 64 位值的虚拟记录,然后尝试看看 JDBC 是否会运行。

    【讨论】:

    • 感谢您的回答。这意味着我可以使用例如“LONGFOOBAR”类型创建我的表,结果会是一样的吗?如前所述,我认为在 SQLite 级别没有问题,但在我使用的 JDBC 驱动程序中。你在 Java 代码中使用 SQLite 吗?
    • 不,我使用 SQLite,但使用不同的代码,这就是为什么我不能给你一个 100% 开明的答案。至于类型“LONGFOOBAR”,它将在内部默认为“TEXT”,但“LONG”也是如此。只有当类型具有字母“INT”时,该列才被声明为 INTEGER。插入整数将使 TEXT 列保持为 。 .. 好吧,我不知道是什么。但是对于您的连接器,更喜欢声明为 INTEGER。
    • 再次感谢。我阅读了 SQLite 输入信息,现在我知道了,多亏了你,它是如何工作的,我会修改我的类型以使 INTEGER 列用于数值。即使知道并修改了这一点,我仍然有我的问题,并认为我正在使用的 Zentus JDBC 驱动程序存在问题。我正在调查...
    • 这是我所能提供的。对不起。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多