Как мне решить эти проблемы
The connection was not closed. The connection's current state is open.
Что я уже пробовал:
Line 37: Line 38: Line 39: conn.Open(); Line 40: cmd.ExecuteNonQuery(); Line 41: conn.Close();
The connection was not closed. The connection's current state is open.
Line 37: Line 38: Line 39: conn.Open(); Line 40: cmd.ExecuteNonQuery(); Line 41: conn.Close();
Это означает, что соединение, которое вы пытаетесь открыть, уже открыто.
И это означает, что вы повторно используете соединение, и где-то вы не закрываете его должным образом, когда вы закончите с ним.
Лучший способ справиться с этим-не "перерабатывать" соединения, а создавать их, когда они вам нужны внутри системы. using
блок. Таким образом, они закрываются и удаляются автоматически, когда выходят за пределы области действия:
using (SqlConnection con = new SqlConnection(strConnect)) { con.Open(); using (SqlCommand cmd = new SqlCommand("SELECT Id, description FROM myTable", con)) { using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { int id = (int) reader["Id"]; string desc = (string) reader["description"]; Console.WriteLine("ID: {0}\n {1}", id, desc); } } } }
И что происходит, когда вы используете именно этот код?
Кстати: никогда не пишите SQL таким образом:
Вставить в MyTable значения(...)
Всегда называйте столбцы в том порядке, в котором вы предоставляете для них данные:
Вставить в таблицу mytable (Столбец1, Столбец2, ...) значения (@С1 @С2, ...)
Таким образом, изменения БД не повлияют на ваш код, а значения идентификаторов не вызовут проблем.