如何知道查询是否成功
本文关键字:成功 是否 查询 何知道 | 更新日期: 2023-09-27 18:27:15
如何知道以下INSERT
查询是否成功?
MySqlConnection connection = new MySqlConnection(ConnectionString);
connection.Open();
MySqlCommand command = new MySqlCommand("INSERT INTO People (PersonName, dateAdded) VALUES (?name, NOW())", connection);
command.Parameters.Add(new MySqlParameter("name", Name));
MySqlDataReader Reader = command.ExecuteReader();
我尝试运行Reader.Read()
,但只返回了一个空字符串。谢谢
改为使用ExecuteNonQuery
:
int affectedRows = command.ExecuteNonQuery();
if (affectedRows <= 0)
{
// Houston, we have a problem.
}
请记住,如果您在数据上有触发器,它可能不会反映您尝试INSERT
:的实际行数
您可以使用
ExecuteNonQuery
执行任何类型的数据库操作,但是返回的任何结果集都不可用。调用存储过程中使用的任何输出参数都将填充数据,并且可以在执行完成后检索。对于UPDATE
、INSERT
和DELETE
语句,返回值是受命令影响的行数。对于所有其他类型的语句,返回值为-1
。
但是,通常情况下,如果查询遇到错误,您将收到一个MySqlException
。
如果正在执行INSERT、UPDATE或DELETE,请不要使用ExecuteReader。请改用ExecuteNonQuery,它将返回受影响的行数。
请参阅http://dev.mysql.com/doc/refman/5.6/en/connector-net-tutorials-intro.html#connector-net教程sql命令
using (SqlConnection conn = new SqlConnection("[QueryString]")) {
using (SqlCommand cmd = new SqlCommand("SQL Command",conn)) {
//here you return the number of affected rows
int a = cmd.ExecuteNonQuery();
}
}
我希望这能对你有所帮助。
如果失败,将引发异常。异常对象通常会包含错误信息(例如"主键违规"等)
另外,使用ExecuteNonQuery
进行INSERT、UPDATE或DELETE操作。返回的值将包含受影响的行数。