我在SQLite中有一个表:
CREATE TABLE "EventType" ( [EventTypeID] INTEGER PRIMARY KEY, [EventTypeName] VARCHAR(50) NOT NULL UNIQUE );
由于EventTypeID是一个整数和一个主键,它会自动使它成为一个自动递增列,并且工作正常.
我想在表中插入一行并从VB6获取新增加的值.
Dim oRs as Recordset dim oCmd as new Command oCmd.ActiveConnection = GetConnection() oCmd.Source = "insert into EventType (EventTypeName) values ('blah')" oCmd.Execute
有没有自动方法来检索新创建的EventTypeID而不必发出另一个查询(从EventType中选择max(EventTypeID)))?
我似乎记得很久以前的VB6,有一种方法可以做到这一点.
SQLite是否支持SCOPE_IDENTITY?
查看常见问题解答.该 sqlite3_last_insert_rowid() 函数将做到这一点.虽然小心的触发器
未经测试,但您应该能够在一次通话中发送两个语句.自从我写了任何VB6以来已经有一段时间了.这也不是SQL注入安全的.
Dim oRs as Recordset dim sSql as String sSql = "INSERT INTO EventType (EventTypeName) VALUES ('blah'); SELECT last_insert_rowid() FROM EventType" oRs.Open sSql oConn
在您的代码中运行以下查询:
SELECT SEQ from sqlite_sequence WHERE name='tablename'