访问表中的Update方法只适用于第一次调用,在接下来的调用中只复制第一个数据
本文关键字:调用 接下来 复制 第一个 数据 第一次 Update 方法 适用于 访问表 | 更新日期: 2023-09-27 18:21:44
我的表单中有一个访问表和3个用于删除、更新和插入的按钮。插入和删除操作正常。我的问题是更新。它在第一次运行时运行良好,但当我选择datagridview的另一行时,它会用最后一个数据(更新的第一个信息)更新该行。
这是更新后的代码:
com.Connection = con;
com.CommandType = CommandType.Text;
com.CommandText = "UPDATE login SET [password]=@password , [uname]=@uname , [ufamily]=@ufamily , [admin]=@admin WHERE username='" + textBox1.Text + "'";
com.Parameters.AddWithValue("@password", textBox2.Text);
com.Parameters.AddWithValue("@uname", textBox3.Text);
com.Parameters.AddWithValue("@ufamily", textBox4.Text);
com.Parameters.AddWithValue("@admin", comboBox1.SelectedItem);
con.Open();
int result = com.ExecuteNonQuery();
con.Close();
if (result > 0)
{
MessageBox.Show("success");
SelectAllRecords();
}
else
{
MessageBox.Show("failed");
}
这就是我的问题:我首先更新了第2行,它还可以。后来我更新了第4行,它只是从第2行复制的,除了主键(username(textbox1
))。
并且有一种更新后的某种刷新表的方法:
public void SelectAllRecords()
{
com.CommandType = CommandType.Text;
com.CommandText = "SELECT * FROM login";
com.Connection = con;
con.Open();
OleDbDataAdapter adapter = new OleDbDataAdapter(com);
DataSet ds = new DataSet();
adapter.Fill(ds, "login");
dataGridView1.DataSource = null;
dataGridView1.DataSource = ds.Tables["login"];
dataGridView1.Columns[0].HeaderText = "شناسه کاربری";
dataGridView1.Columns[1].HeaderText = "کلمه عبور";
dataGridView1.Columns[2].HeaderText = "نام";
dataGridView1.Columns[3].HeaderText = "نام خانوادگی";
dataGridView1.Columns[4].HeaderText = "سطح دسترسی";
dataGridView1.Columns[5].HeaderText = "آخرین بازدید";
dataGridView1.Columns[6].HeaderText = "آخرین مطلب";
con.Close();
}
and event of dataGridView1_CellEnter:
private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.Rows.Count > 0)
{
this.textBox1.Text = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0].Value.ToString();
this.textBox2.Text = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[1].Value.ToString();
this.textBox3.Text = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[2].Value.ToString();
this.textBox4.Text = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[3].Value.ToString();
if (dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[4].Value.ToString() == "مدیر")
{
this.comboBox1.SelectedIndex = 0;
}
else
{
this.comboBox1.SelectedIndex = 1;
}
this.textBox6.Text = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[5].Value.ToString();
this.textBox7.Text = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[6].Value.ToString();
username = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0].Value.ToString();
}
}
编辑:更多详细信息:我选择这一行并在文本框中输入值,然后单击更新按钮,它工作正常,然后我选择另一行并将值输入文本框,但它会用最后输入的值更新这一行。
在更新查询中。请使用id更新数据。从网格视图中获取id。