【问题标题】:Return auto generated column values from sqlite database从 sqlite 数据库返回自动生成的列值
【发布时间】:2012-09-05 04:05:55
【问题描述】:

如何在 c# 中从 sqlite 数据库返回自动生成的列值。我正在使用 Sqlite.data.dll。

通过执行查询尝试:“选择 last_insert_rowid() 但它没有;似乎无法正常工作,因为它返回 0。我正在使用 SqliteDataReader 对象来获取结果。

谢谢

【问题讨论】:

    标签: sqlite c#-3.0


    【解决方案1】:

    我尝试了这些命令,它运行良好(即使 last_insert_rowid() 调用来自另一个事务):

    sqlite> create table mytable(pk integer primary key, other stuff);
    sqlite> insert into mytable values(null, 42);
    sqlite> select last_insert_rowid();
    1
    

    last_insert_rowid()的唯一要求是在相同数据库连接上调用它;请检查您没有打开另一个。

    【讨论】:

    • 谢谢...我使用不同的数据库连接来获取自动生成的列,但使用相同的连接它工作正常。
    • 这是线程安全的吗?如果在您的第​​二个和第三个语句之间(insertselect last_ins...之间)插入了不同的连接怎么办?
    • @LimitedAtonement 这是documented
    【解决方案2】:

    你的 id 增加了吗?然后试试这个:

    选择最大值(id)

    或者你可以参考这篇文章

    Click HERE

    【讨论】:

    • ID 列是自增列和主键。 SELECT max(ID) 有效,但这是检索自动生成的列值的最佳方式吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 2019-06-07
    • 2021-01-10
    • 2018-06-24
    相关资源
    最近更新 更多