Как переделать запросы чтобы они у меня обновляли или добавляли только 1 строку, а не всю таблицу?
//Если есть ещё ошибки помогите их исправить, заранее спасибо
private void button2_Click(object sender, EventArgs e)
{
//Добавить
if (dataGridView1.SelectedRows.Count != 1)
{
MessageBox.Show("Выберите одну строку!", "Внимание!");
return;
}
//Запомним выбранную строку
int index = dataGridView1.SelectedRows[0].Index;
//Проверим данные в таблицы
if (dataGridView1.Rows[index].Cells[0].Value == null ||
dataGridView1.Rows[index].Cells[1].Value == null ||
dataGridView1.Rows[index].Cells[2].Value == null ||
dataGridView1.Rows[index].Cells[3].Value == null ||
dataGridView1.Rows[index].Cells[4].Value == null)
{
MessageBox.Show("Не все данные введены!", "Внимание!");
return;
}
//Считаем данные
string Cod = dataGridView1.Rows[index].Cells[0].Value.ToString();
string Reader = dataGridView1.Rows[index].Cells[1].Value.ToString();
string Number = dataGridView1.Rows[index].Cells[2].Value.ToString();
string Acquisition = dataGridView1.Rows[index].Cells[3].Value.ToString();
string Return = dataGridView1.Rows[index].Cells[4].Value.ToString();
//Создаем соеденение
string connectionString = "provider=Microsoft.Jet.OLEDB.4.0;Data Source=Database.mdb";//строка соеденения
OleDbConnection dbConnection = new OleDbConnection(connectionString);//создаем соеденение
//Выполянем запрос к БД
dbConnection.Open();//открываем соеденение
string query = "INSERT INTO [Abonnement] ([Читатель], [Номер_Читательского_Билета], [Дата_Получения], [Дата_Возврата]) VALUES ('" + Reader + "','" + Number + "','" + Acquisition + "','" + Return + "')";//строка запроса
OleDbCommand dbCommand = new OleDbCommand(query, dbConnection);//команда
//Выполняем запрос
if (dbCommand.ExecuteNonQuery() != 1)
{
MessageBox.Show("Ошибка выполнения запроса!", "Ошибка!");
}
else
MessageBox.Show("Данные добавлены!", "Внимание!");
//Закрываем соеденение с БД
dbConnection.Close();
}
private void button3_Click(object sender, EventArgs e)
{
//Обновить
//Проверим количество выбранных строк
if (dataGridView1.SelectedRows.Count != 1)
{
MessageBox.Show("Выберите одну строку!", "Внимание!");
return;
}
//Запомним выбранную строку
int index = dataGridView1.SelectedRows[0].Index;
//Проверим данные в таблицы
if (dataGridView1.Rows[index].Cells[0].Value == null ||
dataGridView1.Rows[index].Cells[1].Value == null ||
dataGridView1.Rows[index].Cells[2].Value == null ||
dataGridView1.Rows[index].Cells[3].Value == null ||
dataGridView1.Rows[index].Cells[4].Value == null)
{
MessageBox.Show("Не все данные введены!", "Внимание!");
return;
}
//Считаем данные
string Cod = dataGridView1.Rows[index].Cells[0].Value.ToString();
string Reader = dataGridView1.Rows[index].Cells[1].Value.ToString();
string Number = dataGridView1.Rows[index].Cells[2].Value.ToString();
string Acquisition = dataGridView1.Rows[index].Cells[3].Value.ToString();
string Return = dataGridView1.Rows[index].Cells[4].Value.ToString();
//Создаем соеденение
string connectionString = "provider=Microsoft.Jet.OLEDB.4.0;Data Source=Database.mdb";//строка соеденения
OleDbConnection dbConnection = new OleDbConnection(connectionString);//создаем соеденение
//Выполянем запрос к БД
dbConnection.Open();//открываем соеденение
string query = "UPDATE [Abonnement] SET Читатель ='" + Reader + "', Номер_Читательского_Билета ='" + Number + "', Дата_Получения ='" + Acquisition + "', Дата_Возврата ='" + Return + "'";//строка запроса
OleDbCommand dbCommand = new OleDbCommand(query, dbConnection);//команда
//Выполняем запрос
if (dbCommand.ExecuteNonQuery() != 1)
{
MessageBox.Show("Ошибка выполнения запроса!", "Ошибка!");
}
else
{
MessageBox.Show("Данные изменены!", "Внимание!");
}
//Закрываем соеденение с БД
dbConnection.Close();
}
Источник: Stack Overflow на русском