MysqlException 未处理 C# LAST_INSERT_ID()
MysqlException was unhandled C# LAST_INSERT_ID()
每当我添加行时:SET @last_id_owner = LAST_INSERT_ID();。它给了我警告; MysqlException 在行中未处理:cmd.ExecuteNonQuery();
如果我擦掉这条线,效果很好。
String sql = "INSERT INTO owner (name,email,reward)"
+ " VALUES('" + owner.Name + "','" + owner.EMail + "'," + owner.Reward + ");SET @last_id_owner = LAST_INSERT_ID();";
connect();
MySqlCommand cmd = new MySqlCommand(sql, conexion);
cmd.ExecuteNonQuery();
disconnect();
我需要获取最后一个插入 ID 并将其用于另一个 table 的插入。
怎么了?
您首先要注意的是,您的查询将为 SqLInjection 打开一扇宽阔的大门。为避免这种情况,您应该使用参数化查询。然后您可以使用 MySqlCommand
class 的 LastInsertedId
来获取最后插入的 ID。您可以使用以下代码段实现这两个目标:
// Parameterization implementation
String sql = "INSERT INTO owner (name,email,reward)"
+ " VALUES(@ownerName,@ownerMail,@ownerReward)";
MySqlCommand cmd = new MySqlCommand(sql, conexion);
cmd.Parameters.Add("@ownerName",MySqlDbType.VarChar).Value= owner.Name;
cmd.Parameters.Add("@ownerMail", MySqlDbType.VarChar).Value = owner.EMail;
cmd.Parameters.Add("@ownerReward", MySqlDbType.VarChar).Value = owner.Reward;
// Executing Query and getting last Inserted ID
cmd.ExecuteNonQuery();
long lastInsertedID = cmd.LastInsertedId;
尝试使用此代码它将帮助您...如您所愿。
String sql = "INSERT INTO owner (name,email,reward) VALUES('" + owner.Name + "','" + owner.EMail + "'," + owner.Reward + "); select LAST_INSERT_ID();";
connect();
MySqlCommand cmd = new MySqlCommand(sql, conexion);
cmd.ExecuteScalar();
disconnect();
每当我添加行时:SET @last_id_owner = LAST_INSERT_ID();。它给了我警告; MysqlException 在行中未处理:cmd.ExecuteNonQuery(); 如果我擦掉这条线,效果很好。
String sql = "INSERT INTO owner (name,email,reward)"
+ " VALUES('" + owner.Name + "','" + owner.EMail + "'," + owner.Reward + ");SET @last_id_owner = LAST_INSERT_ID();";
connect();
MySqlCommand cmd = new MySqlCommand(sql, conexion);
cmd.ExecuteNonQuery();
disconnect();
我需要获取最后一个插入 ID 并将其用于另一个 table 的插入。 怎么了?
您首先要注意的是,您的查询将为 SqLInjection 打开一扇宽阔的大门。为避免这种情况,您应该使用参数化查询。然后您可以使用 MySqlCommand
class 的 LastInsertedId
来获取最后插入的 ID。您可以使用以下代码段实现这两个目标:
// Parameterization implementation
String sql = "INSERT INTO owner (name,email,reward)"
+ " VALUES(@ownerName,@ownerMail,@ownerReward)";
MySqlCommand cmd = new MySqlCommand(sql, conexion);
cmd.Parameters.Add("@ownerName",MySqlDbType.VarChar).Value= owner.Name;
cmd.Parameters.Add("@ownerMail", MySqlDbType.VarChar).Value = owner.EMail;
cmd.Parameters.Add("@ownerReward", MySqlDbType.VarChar).Value = owner.Reward;
// Executing Query and getting last Inserted ID
cmd.ExecuteNonQuery();
long lastInsertedID = cmd.LastInsertedId;
尝试使用此代码它将帮助您...如您所愿。
String sql = "INSERT INTO owner (name,email,reward) VALUES('" + owner.Name + "','" + owner.EMail + "'," + owner.Reward + "); select LAST_INSERT_ID();";
connect();
MySqlCommand cmd = new MySqlCommand(sql, conexion);
cmd.ExecuteScalar();
disconnect();