Это простая операция вставки, обновления, удаления Приложение в C # Я работаю и использую базу данных Access 2010 (Accdb). Вставка и обновление работают, и данные правильно заполняются в DataGridView, но операция удаления - сбой.
Я запускаю приложение, ранее сохраненные записи, заполненные в DataGridView при загрузке формы, я нажимаю на удаление, и выбранная строка удаляется из базы данных. и datagridview заполняется, чтобы показать обновленные данные.
Теперь я выбираю другую строку и снова нажимаю кнопку удаления, но она не удаляет ни одной строки.
ExecuteNonQuery возвращает 0 на этот раз, и я отлаживал ее. Cust_ID тот же самый, который выбирается при щелчке строки. Не знаю, что здесь происходит. Нужно взглянуть с точки зрения другого человека.
Вот код.
//Some Global Variables
int r;
int R_ID;
string cid = "";
string scon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + "\\DB_Medical.accdb;Persist Security Info=True";
OleDbConnection con;
OleDbCommand cmd = new OleDbCommand();
private void btnDelete_Click(object sender, EventArgs e)
{
if (dgv.SelectedRows.Count == 0)
{
MessageBox.Show("No row selected");
}
else
{
DeleteRecord();
}
}
public void DeleteRecord()
{
con = new OleDbConnection(scon);
con.Open();
cmd.Connection = con;
int id = int.Parse(dgv.Rows[dgv.SelectedRows[0].Index].Cells[0].Value.ToString());
string delquery = "DELETE FROM tbl_Customer WHERE Cust_ID=@id";
cmd.Parameters.AddWithValue("@id", id);
cmd.CommandText = delquery;
int row = cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show(row + " rows deleted.");
LoadDataInGridView();
}
private void LoadDataInGridView()
{
string q1 = "SELECT * FROM tbl_Customer";
con = new OleDbConnection(scon);
con.Open();
cmd.Connection = con;
OleDbDataAdapter adapter = new OleDbDataAdapter(q1, con);
DataSet s1 = new DataSet();
adapter.Fill(s1);
dgv.DataSource = s1.Tables[0];
con.Close();
ViewAdjust();
}
private void ViewAdjust()
{
dgv.Columns[0].HeaderText = "ID";
dgv.Columns[1].HeaderText = "Name";
dgv.Columns[2].HeaderText = "Address";
dgv.Columns[3].HeaderText = "City";
dgv.Columns[4].HeaderText = "Mobile";
dgv.Columns[5].HeaderText = "Phone";
}