Я не могу обновить базу данных MySQL после удаления выбранной строки из DataGridView
, При запуске ExecuteNonQuery()
Я получаю сообщение об ошибке:
System.Invalid.Operation.Exception: соединение должно быть действительным и открытым.
Однако я сделал правильное соединение. Все еще у меня проблема.
Мой код ниже:
private: System::Void button9_Click(System::Object^ sender, System::EventArgs^ e)
{
String^ constring = L"datasource=localhost;port=3306;username=****;password=********";
MySqlConnection^ conDataBase = gcnew MySqlConnection(constring);
conDataBase->Open();
try
{
if (MessageBox::Show("Sure you wanna delete?", "Warning", MessageBoxButtons::YesNo) == System::Windows::Forms::DialogResult::Yes)
{
for each(DataGridViewCell^ oneCell in dataGridView1->SelectedCells)
{
if (oneCell->Selected) {
dataGridView1->Rows->RemoveAt(oneCell->RowIndex);
MySqlCommand^ cmdDataBase1 = gcnew MySqlCommand("Delete from Dinslaken_DB.Configuration where Memory=" + dataGridView1->CurrentRow->Index +"");
cmdDataBase1->ExecuteNonQuery();
//sda->Update(dbdataset);
}
}
}
}
catch (Exception^ex)
{
MessageBox::Show(ex->ToString());
}
}
Вы создали объект команды
MySqlCommand^ cmdDataBase1 = gcnew MySqlCommand("Delete from Dinslaken_DB.Configuration where Memory=" + dataGridView1->CurrentRow->Index +"");
но вы не установили его свойство команды. Скорее всего, вторым аргументом в вышеприведенном конструкторе команд должно быть соединение. Проверь это.
Итак, ваш командный конструктор должен быть:
MySqlCommand^ cmdDataBase1 = gcnew MySqlCommand("Delete from Dinslaken_DB.Configuration where Memory=" + dataGridView1->CurrentRow->Index +"", conDataBase);
Также не забудьте закрыть соединение.
Других решений пока нет …