使用C#更新mySQL表

我已经编写了一些C#来更新MySql表,但每次调用方法ExecuteNonQuery()时都会出现exception。 我在网上研究了这个,我发现的每个解决方案都会产生同样的错误。 我有一个与数据库的开放连接,并且正确写入了对数据库的更新查询。 到目前为止,我提出的代码是:

public int executeUpdate() { int result = 0; if (isConnected) { try { MySqlConnection cn = new MySqlConnection(connection.ConnectionString); MySqlCommand cmd = new MySqlCommand(); cmd.Connection = cn; cmd.CommandText = "UPDATE test SET status_id = 1 WHERE test_id = 1"; int numRowsUpdated = cmd.ExecuteNonQuery(); } catch (MySqlException exSql) { Console.Error.WriteLine("Error - SafeMySql: SQL Exception: " + query); Console.Error.WriteLine(exSql.StackTrace); } catch (Exception ex) { Console.Error.WriteLine("Error - SafeMySql: Exception: " + query); Console.Error.WriteLine(ex.StackTrace); } } else Console.Error.WriteLine("Error - SafeMySql: executeQuery failed. Not connected to DB"); } 

将您的尝试部分更改为以下代码:

 try { using(MySqlConnection cn = new MySqlConnection(connection.ConnectionString)) { MySqlCommand cmd = new MySqlCommand(); cmd.Connection = cn; cmd.CommandText = "UPDATE test SET status_id = 1 WHERE test_id = 1"; cn.Open(); int numRowsUpdated = cmd.ExecuteNonQuery(); cmd.Dispose(); } } 

在执行命令之前必须打开连接。 在上面的示例中,将立即处理命令对象,并且当您离开使用部分时,连接对象将被关闭并处理。

我没有看到连接被打开

以下是来自MSDN的示例:即使在使用块内,它们也会显式打开连接

 private static void CreateCommand(string queryString, string connectionString) { using (SqlConnection connection = new SqlConnection( connectionString)) { SqlCommand command = new SqlCommand(queryString, connection); command.Connection.Open(); command.ExecuteNonQuery(); } } 

编辑 : MySQL的原理与SQL Server的原理相同:

 public void CreateMySqlCommand(string myExecuteQuery, MySqlConnection myConnection) { MySqlCommand myCommand = new MySqlCommand(myExecuteQuery, myConnection); myCommand.Connection.Open(); myCommand.ExecuteNonQuery(); myConnection.Close(); }