2012-09-05 44 views
2

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

通过执行查询的尝试:“选择last_insert_rowid(),但它不;吨似乎工作,因为它是返回0我使用SqliteDataReader对象获取结果

感谢

回答

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()的唯一要求是,它被称为相同数据库连接上;请检查你是否打开另一个。

+0

谢谢...我使用不同的数据库连接来获取自动生成的列,但使用相同的连接它工作正常。 – user1140366

+0

这是线程安全吗?如果在第二条和第三条语句之间插入了不同的连接(在'insert'和'select last_ins'之间插入...)? –

+0

@LimitedAtonement这是[记录](http://www.sqlite.org/c3ref/last_insert_rowid.html)。 –

0

是你的ID递增那就试试这个:

SELECT MAX(ID)

,或者你可以参考这篇文章

Click HERE

+0

ID列是自动增量列和主键。 SELECT max(ID)可以工作,但这是检索自动生成列值的最佳方法吗? – user1140366

相关问题