【问题标题】:change AutoNumber values when inserting rows with UCanAccess使用 UCanAccess 插入行时更改自动编号值
【发布时间】:2017-11-09 06:58:12
【问题描述】:

使用UCanAccess的executeUpdate方法时,系统总是为我选择行号。但是,在我删除行并添加新行之后,这些行不会从头开始(例如,我删除了 3 行,然后它将接下来的 3 行标记为456)。有没有办法可以解决这个问题或自己命名行?这是我的代码:

statement.executeUpdate("INSERT INTO myDB2"+ " ( columnRows,  columnA, columnB)"
    + " VALUES ( "+rows+", "+a+", "+b+")");`

【问题讨论】:

    标签: java ms-access jdbc ucanaccess


    【解决方案1】:

    重置下一个自动编号值

    删除行后,您可以通过在 Access 中打开数据库并执行“压缩和修复数据库”操作来重置自动编号种子值。 UCanAccess 目前无法自行重置种子值。

    将任意值插入自动编号列

    从版本 4.0.2 开始,UCanAccess 能够将任意正值插入自动编号(长整数,增量)列。例如,使用名为 [Client] 的表:

    ClientID - 自动编号
    名字 - 文本 (50)

    我们可以的

    Statement st = conn.createStatement();
    st.execute("DISABLE AUTOINCREMENT ON Client");
    st.execute("INSERT INTO Client (ClientID, FirstName) VALUES (123, 'Gord')");
    

    更多详情,请参阅博文here

    4.0.3 版(尚未发布)扩展了该功能,允许插入小于或等于零的任意值。

    【讨论】:

    • 您能否详细介绍一下“自动编号”列?
    • 我不确定您所说的“更多细节”是什么意思。请详细说明您的要求。
    • 抱歉 - 我如何将任意值插入到 AutoNumber 列中?
    • 如果 ClientID 是自动编号列,则 UCanAccess 4.0.2 支持 INSERT INTO Client (ClientID, FirstName) VALUES (123, 'Gord')。当然,如果ClientID 也是主键,那么值123 一定不存在于表中。
    • 这就是我正在做的,但行不使用我的值,而是不断增加。知道我做错了什么吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    相关资源
    最近更新 更多