2015-11-07 67 views
-3

你好我有一个问题,得到“ExecuteNonQuery需要一个开放和可用的连接异常,连接的当前状态是关闭的。”c#“ExecuteNonQuery需要一个开放且可用的连接,连接的当前状态是关闭的。”

public void AddCustomer(Customer customer) 
    { 
     string connectionString = @"Data Source=LIRON-PC\SQLEXPRESS;Initial Catalog=C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\MatokMmagnet.mdf;Integrated Security=True"; 
     using (m_sqlConnection = new SqlConnection(connectionString)) 
     { 
      m_cmd = new SqlCommand(); 
      m_cmd.CommandType = CommandType.Text; 
      m_cmd.Connection = m_sqlConnection; 

      m_cmd.Parameters.AddWithValue("@id", customer.id); 
      m_cmd.Parameters.AddWithValue("@FirstName", customer.FirstName); 
      m_cmd.Parameters.AddWithValue("@LastName", customer.LastName); 
      m_cmd.Parameters.AddWithValue("@Password", customer.Password); 
      m_cmd.CommandText = "INSERT INTO Customers (id, FirstName, LastName, Password)VALUES (@id, @FirstName, @LastName, @Password)"; 
      try 
      { 
       m_cmd.ExecuteNonQuery(); 
      } 
      catch(Exception e) 
      { 
       Console.WriteLine(e.Message); 
      } 
      finally 
      { 
       m_sqlConnection.Close(); 
      } 
     } 
    } 
+2

? – Steve

+0

你不打开连接并想执行查询?在执行查询之前打开它(m_sqlConnection.Open())。另外你还没有关闭,因为你使用了关闭连接的块。 –

+0

您是否确定要将连接字符串嵌入代码中。如果你需要改变它呢?你必须去很多地方去更新它。这不好! – mason

回答

2

像错误说,你必须打开执行这样的查询之前的连接:你不会从错误信息了解

public void AddCustomer(Customer customer) 
{ 
    string connectionString = @"Data Source=LIRON-PC\SQLEXPRESS;Initial Catalog=C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\MatokMmagnet.mdf;Integrated Security=True"; 
    using (m_sqlConnection = new SqlConnection(connectionString)) 
    {` 
     m_sqlConnection.open(); 
     //.... 
    } 
} 
相关问题