При добавлении в бд при помощи combobox выскакивает на отладке connection must be valid and open
В общем сидел, попробовал GetConnection и OpenConnection вписать куда только можно, но результат один, во время отладки выдаёт что подключение не открыто, в интернете что сделать я не нашёл, вот и пишу сюда
Код подключения
class DB
{
MySqlConnection database = new MySqlConnection("server=localhost; port=3306; username=root; password=; database=kart;");
public void OpenConnection()
{
if(database.State == System.Data.ConnectionState.Closed)
database.Open();
}
public void CloseConnection()
{
if (database.State == System.Data.ConnectionState.Open)
database.Close();
}
public MySqlConnection GetConnection()
{
return database;
}
}
Код передачи в кнопку
static public int AddName(string name_k, string color, string tip_kart)
{
MySqlCommand sqlcom = new MySqlCommand();
try
{
sqlcom.CommandText = @"SELECT id_tip FROM sp_type_kart WHERE tip_kart ='" + tip_kart + "'";
int nomer_tip = (Int32)sqlcom.ExecuteScalar();
sqlcom.CommandText = @"INSERT INTO `nazvaniya_kart` VALUES (name_k, color, '" + nomer_tip + "')";
if (sqlcom.ExecuteNonQuery() >= 0)
{
return 1;
}
else
{
return 2;
}
}
catch
{
return 2;
}
}
Код самой кнопки
private void naz_add_Click(object sender, EventArgs e)
{
DB db = new DB();
db.OpenConnection();
AddName(name_k_f.Text, color_f.Text, tip_kart_cb.Text);
GetNameList();
}
Ответы (1 шт):
Автор решения: jolychik
→ Ссылка
Меня озарило, решил попробовать, оказалось верно.
Заменяем эту строку:
sqlcom.CommandText = @"
SELECT id_tip
FROM sp_type_kart
WHERE tip_kart ='" + tip_kart + "'";
На эту:
MySqlCommand sqlcom = new MySqlCommand(
"SELECT id_tip FROM sp_type_kart WHERE tip_kart ='" + tip_kart + "'",
db.GetConnection());
И в самом начале AddName добавить:
DB db = new DB();
db.OpenConnection();
И всё работает.