C#+Mysql 返回刚刚执行的insert ID的值
我用的是MySQL Connector/Net 5.23有表a(id,name),id 为主键且自增
insert into a(name) value ('tom')
执行上面的语句后通过
把一个MySqlParameter.Direction = System.Data.ParameterDirection.Output;
设为返回参数,来获得自动自增的值,也就是ID的值
我以前用MSSQL的时候可以这样写的
string sql=@"insert into a(name) value (@name);set @id=SCOPE_IDENTITY();";
SqlCommand cmd = new SqlCommand(sql);
SqlParameter paramId = new SqlParameter("@id", SqlDbType.Int, 4);
paramId.Direction = ParameterDirection.Output;
SqlParameter paramName = new SqlParameter("@name",SqlDbType.NVarChar,200);
paramName.Value = "张三";
cmd.Parameters.Add(paramId);
cmd.Parameters.Add(paramName);
cmd.ExecuteNonQuery();
int id = (int)cmd.Parameters["@id"].Value
这样id就是刚刚插入的"张三"的自增的id的值,我现在换用MySql了这样弄就行不通了!希望大家帮帮忙,在这里先谢谢了 --------------------编程问答-------------------- 那位大侠知道的不要吝啬啊 --------------------编程问答-------------------- select @@IDENTITY
用这sql 全局变量 --------------------编程问答-------------------- 这样我也知道
我就是想用cmd.ExecuteNonQuery();方法
通过把
paramId.Direction = ParameterDirection.Output;
设为输出参数,
这样paramId.Value就是刚刚insert进去的那条记录的id了,也就是自增值的值了 --------------------编程问答-------------------- 难道是
MySQL Connector/Net 5.23
不支持这种写法,郁闷啊! --------------------编程问答-------------------- set @id=SCOPE_IDENTITY(); 这个是SQL Server的函数,MySql不支持的。 你只要把它换成Mysql的写法就行了。
Mysql里面看最新的字增长数字是 LAST_INSERT_ID() --------------------编程问答-------------------- 我已经换了
set @id = LAST_INSERT_ID();
而且已经 paramId.Direction = ParameterDirection.Output;
可以MySqlCommand在生成SQL已经的时候就报sql语句错误
set null = LAST_INSERT_ID();
补充:.NET技术 , C#