我在从数据库中删除所选行时遇到问题。实际上,我在C#中有一个Form,其中包含连接到数据库的dataGridView和一个按钮"删除"当我在按钮上单击时这应该删除dataGridView和数据库中所选行(cell [0]和cell [1])的信息。现在,我在从数据库中删除所选行时遇到问题这是我的代码:
private void button4_Click(object sender, EventArgs e)
{
if (journalDataGridView.SelectedRows.Count == 1)
{
DataGridViewRow row = journalDataGridView.SelectedRows[0];
journalDataGridView.Rows.Remove(row);
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
SqlCommand sql = new SqlCommand("delete from journal where code_journal='" + journalDataGridView.CurrentRow.Cells[0].Value.ToString() + "'AND intitule='" + journalDataGridView.CurrentRow.Cells[1].Value.ToString() + "';", connection);
connection.Close();
}
}
dataGridView包含两列" code_journal和initule" 谢谢你的帮助
答案 0 :(得分:5)
您正在删除该行,然后使用CurrentRow属性引用错误的行。
您也没有使用参数来避免sql注入。
您也没有执行命令:
DataGridViewRow row = journalDataGridView.SelectedRows[0];
connection.Open();
using (SqlCommand sql = new SqlCommand("delete from journal where code_journal=@codeJournal..", connection)) {
sql.Parameters.AddWithValue("@codeJournal", row.Cells[0].Value.ToString());
sql.ExecuteNonQuery();
}
connection.Close();
journalDataGridView.Rows.Remove(row);
答案 1 :(得分:2)
除了sorton9999提供的answer之外,另一个问题是你没有对SqlCommand
个对象做任何事情。
创建后,您需要执行它:
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
SqlCommand sql = new SqlCommand("delete from journal where code_journal='" + journalDataGridView.CurrentRow.Cells[0].Value.ToString() + "'AND intitule='" + journalDataGridView.CurrentRow.Cells[1].Value.ToString() + "';", connection);
sql.ExecuteNonQuery();
connection.Close();
通过执行字符串连接,您可以使用参数化查询来打开自己的Sql注入。此外,您应该将SqlConnection
和SqlCommand
包含在using
语句中,以确保它们得到妥善处理。像这样:
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand sql = new SqlCommand("delete from journal where code_journal=@codeJournal AND initule=@inituleVal", connection))
{
cmd.Parameters.AddWithValue("@codeJournal", journalDataGridView.CurrentRow.Cells[0].Value.ToString());
cmd.Parameters.AddWithValue("@inituleVal", journalDataGridView.CurrentRow.Cells[1].Value.ToString());
connection.Open();
sql.ExecuteNonQuery();
}
}
答案 2 :(得分:-1)
你的单引号(')和SQL语句中的单词AND之间没有空格吗?
值得一试......