MySql Last Insert ID,Connector .net

Spl*_*ang 13 .net c# mysql

我正在使用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)

  • 这是正确的答案.使用[MySql/Connector]进行测试(http://dev.mysql.com/downloads/connector/net/)6.3.8 (2认同)

Nig*_*hil 5

1 是查询影响的记录数,这里只插入一行,所以 1 返回

要获取插入行的 id,您必须scope_identity()在 sqlserver 和LAST_INSERT_ID()MySql 中使用


Dev*_*art 5

尝试使用此查询来获取最后插入的 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)

...不要忘记关闭阅读器;-)