我正在使用MySql Connector .net,我需要获取上一个查询生成的插入ID.现在,我假设返回值MySqlHelper.ExecuteNonQuery应该是最后一个插入ID,但它只返回1.
我正在使用的代码是:
int insertID = MySqlHelper.ExecuteNonQuery(Global.ConnectionString,
"INSERT INTO test SET var = @var", paramArray);
Run Code Online (Sandbox Code Playgroud)
但insertID总是1.我尝试创建一个MySql连接并手动打开/关闭,这导致了相同的行为
Cio*_*eru 90
只需使用LastInsertedId字段即可
MySqlCommand dbcmd = _conn.CreateCommand();
dbcmd.CommandText = sqlCommandString;
dbcmd.ExecuteNonQuery();
long imageId = dbcmd.LastInsertedId;
Run Code Online (Sandbox Code Playgroud)
1 是查询影响的记录数,这里只插入一行,所以 1 返回
要获取插入行的 id,您必须scope_identity()在 sqlserver 和LAST_INSERT_ID()MySql 中使用
尝试使用此查询来获取最后插入的 id -
SELECT LAST_INSERT_ID();
Run Code Online (Sandbox Code Playgroud)
然后,运行 DbCommand.ExecuteReader 方法来获取 IDataReader -
command.CommandText = "SELECT LAST_INSERT_ID()";
IDataReader reader = command.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)
...并从读者那里获取信息 -
if (reader != null && reader.Read())
long id = reader.GetInt64(0);
Run Code Online (Sandbox Code Playgroud)
...不要忘记关闭阅读器;-)
| 归档时间: |
|
| 查看次数: |
45052 次 |
| 最近记录: |