【发布时间】:2018-06-21 09:48:09
【问题描述】:
我正在使用 SQLite 编写 INSERT,或者我正在使用 AUTOINCREMENT,或者只是使用 ROWID 作为主键。执行 INSERT 后,如何找出我刚刚插入的行的主键是什么?
如果我在 Sql Server 中工作,我知道该怎么做,但这是 SQLite。
这是我的代码:
public bool AddPlanet(Planet p)
{
bool result = false;
SQLiteConnection sqlConnection;
using (sqlConnection = new SQLiteConnection(ConnString))
{
sqlConnection.Open();
sqlCommand = new SQLiteCommand(sqlConnection);
sqlCommand.CommandText =
String.Format(
"insert into planet (name, satellites) values ('{0}',{1})"
, p.Name
, p.Satellites.ToString()
);
sqlCommand.CommandType = CommandType.Text;
int x = sqlCommand.ExecuteNonQuery();
// WHAT DO I DO HERE TO FIND OUT THE ROWID OF
// THE ROW THAT WAS JUST INSERTED?
if (x > 0) result = true;
sqlConnection.Close();
}
return result;
}
【问题讨论】:
-
尝试运行另一个查询,但使用 SELECT LAST_INSERT_ID();是SQL,不知道你的平台是否支持
-
感谢@MadeInDreams,但它不可用。 :-(
-
@MadeInDreams,但你非常接近 - 它帮助我找到了正确的函数,即 LAST_INSERT_ROWID。
-
不开玩笑@DourHighArch!哎呀,我自己投票决定关闭它 - 就像我在下面所说的那样,我寻找答案但找不到它。所以有时很难找到答案——有时不是。令人费解。
标签: c# sqlite system.data.sqlite