类似的mysql执行方法,方法一存在bug,方法二没有问题。
所以码农们请严格测试自己的数据库基础类,不要随便粘贴代码。
方法一:
/// <summary>
/// 执行SQL语句,返回影响的记录数
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <returns>影响的记录数</returns>
public static int ExecuteSql(string SQLString)
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))
{
try
{
connection.Open();
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (MySql.Data.MySqlClient.MySqlException e)
{
connection.Close();
throw e;
}
finally
{
connection.Close();
}
}
}
}
方法二:
/// <summary>
/// 执行SQL语句,返回影响的记录数
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <returns>影响的记录数</returns>
public static int ExecuteSql(string SQLString)
{
int rows = 0;
try
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))
{
cmd.CommandTimeout = 6000;
connection.Open();
rows = cmd.ExecuteNonQuery();
connection.Close();
connection.Dispose();
}
}
}
catch (System.Exception ex)
{
Writelog(SQLString + "," + ex.StackTrace);
}
return rows;
}