在 INSERT 上如何检索 ROWID 或 AUTOINCREMENT 值?
On INSERT how do I retrieve ROWID or the AUTOINCREMENT value?
我正在使用 SQLite 编写一个 INSERT,我正在使用一个 AUTOINCREMENT 或只是将 ROWID 用作主键。执行 INSERT 后,如何找出我刚刚插入的行的主键?
如果我在 Sql 服务器上工作,我知道该怎么做,但这是 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;
}
对于 SQLite,您可以使用
SELECT last_insert_rowid()
这是另一个 Whosebug post,其中包含更多详细信息
我正在使用 SQLite 编写一个 INSERT,我正在使用一个 AUTOINCREMENT 或只是将 ROWID 用作主键。执行 INSERT 后,如何找出我刚刚插入的行的主键?
如果我在 Sql 服务器上工作,我知道该怎么做,但这是 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;
}
对于 SQLite,您可以使用
SELECT last_insert_rowid()
这是另一个 Whosebug post,其中包含更多详细信息