Iphone 为什么SQLite不增加我的主键?

Iphone 为什么SQLite不增加我的主键?,iphone,objective-c,sqlite,Iphone,Objective C,Sqlite,这是我的桌子 sqlStmt = [ [ NSString stringWithFormat:@"Create Table %@ (recordNo INTEGER PRIMARY KEY AUTOINCREMENT, noOfPlayer INTEGER, smallBlindAmt INTEGER, bigBlindAmt INTEGER , startingChips INTEGER, roundTimer INTEGER) " , SETTINGS_TABLE ] StringUs

这是我的桌子

sqlStmt = [ [ NSString stringWithFormat:@"Create Table %@  (recordNo INTEGER PRIMARY KEY AUTOINCREMENT, noOfPlayer  INTEGER, smallBlindAmt INTEGER, bigBlindAmt INTEGER , startingChips INTEGER, roundTimer INTEGER) " , SETTINGS_TABLE  ] StringUsingEncoding:NSUTF8StringEncoding ] ;
插入查询

sqlStmt = [ [ NSString stringWithFormat: @"insert into %@ values (NULL,%d, %d ,%d ,%d ,%d )" , strTableName ,noOfPlayers, SmallAmt, BigAmt, StartingChips, RoundTime ] UTF8String ] ;
获取最后一条记录的记录id

lastRecordNo = sqlite3_last_insert_rowid(dbObj);
lastRecordNo始终为0,我无法插入其他值,因为它给出的错误主键必须是唯一的

我无法得到与之相关的问题

如何获取作为主键和自动递增的最后一个记录id

我的插入查询有问题吗


有谁能用创建、插入和选择查询的示例来解释我,其中主查询是自动增量查询?

我真的不知道为什么它不起作用,您可能正在重新连接或其他什么。
我还建议不要查找最后一行id,因为另一个进程可能会并行增加它。

我真的不知道为什么它不工作,您可能正在重新连接或其他什么。
我还建议不要查找最后一行id,因为另一个进程可能会并行增加它。

不要在insert语句中显式设置主键,让系统使用自动增量分配它

将insert语句更改为:

insert into %@ (noOfPlayer, smallBlindAmt, bigBlindAmt, startingChips, roundTimer) values (%d, %d ,%d ,%d ,%d)

不要在insert语句中显式设置主键,让系统使用自动增量分配它

将insert语句更改为:

insert into %@ (noOfPlayer, smallBlindAmt, bigBlindAmt, startingChips, roundTimer) values (%d, %d ,%d ,%d ,%d)

检查您的表格以查看记录。您可以使用sqlite3\u mprintf。有关更多详细信息,请查看表格中的记录。您可以使用sqlite3\u mprintf。有关更多详细信息,

Strange。。。我也很想知道…奇怪。。。我也想知道……另外,我相信sqlite3\u last\u insert\u rowid将为任何表提供插入的最后一行id,因此如果一个数据库中有多个表(经常发生),这会让您陷入困境。我知道我之所以停止使用它是因为这样的原因。此外,我相信sqlite3\u last\u insert\u rowid将为任何表提供插入的最后一行id,因此如果数据库中有多个表(经常发生),这会让您陷入困境。我知道我停止使用它是因为这样的原因。为主键插入NULL应该是等效的,并且会导致自动递增。不过,我同意您的语法要好一点。没错,所以我的建议应该与原始sql等效。为主键插入NULL应该等效,并且还会导致自动递增。不过,我同意您的语法稍微好一点。没错,所以我的建议应该与原始sql相同。