C# 使用datagridview C更新数据库中的数据#
关于使用C# 使用datagridview C更新数据库中的数据#,c#,database,insert,updates,C#,Database,Insert,Updates,关于使用DataGridView编辑数据库中的数据,我的代码有问题 我在da.update(dt)处出错上面说 不支持针对UpdateCommand的动态SQL生成 不返回任何键列信息的SelectCommand 当我将SELECT更改为UPDATE/INSERT时,我在da.fill(dt)处得到一个错误 我的代码有什么问题 这是我的密码: private void btnEdit_Click(object sender, EventArgs e) > { con.Open();
DataGridView
编辑数据库中的数据,我的代码有问题
我在da.update(dt)处出错代码>上面说
不支持针对UpdateCommand的动态SQL生成
不返回任何键列信息的SelectCommand
当我将SELECT
更改为UPDATE/INSERT
时,我在da.fill(dt)处得到一个错误代码>
我的代码有什么问题
这是我的密码:
private void btnEdit_Click(object sender, EventArgs e) > {
con.Open();
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM RegistrationTable", con);
da.Fill(dt);
dt.Rows[dgvREGtable.CurrentRow.Index].BeginEdit();
dt.Rows[dgvREGtable.CurrentRow.Index][0] = tbFirstname.Text;
dt.Rows[dgvREGtable.CurrentRow.Index][1] = tbLastname.Text;
dt.Rows[dgvREGtable.CurrentRow.Index][2] = tbEmail.Text;
dt.Rows[dgvREGtable.CurrentRow.Index][3] = tbContacts.Text;
dt.Rows[dgvREGtable.CurrentRow.Index][4] = tbUsername.Text;
dt.Rows[dgvREGtable.CurrentRow.Index][5] = tbPassword.Text;
dt.Rows[dgvREGtable.CurrentRow.Index].EndEdit();
SqlCommandBuilder cb = new SqlCommandBuilder(da);
da.Update(dt);
displayrecords();
con.Close();
}
select查询需要返回表的主键。如果表没有主键,则需要设置主键。select查询需要返回表的主键。如果您的表没有主键,则需要设置主键。在我看来,实现这一点的最简单方法是将DataGridView实际绑定到数据集,然后绑定将为您处理所有难看的内容。例如:
DataSet mydata = new DataSet();
// populate your dataset however you like
DataBindingSource mybindingsource = new DataBindingSource(typeof(DataSet));
mybindingsource.DataSource = mydata;
DataGridView mydatagridview = new DataGridView();
mydatagridview.DataSource = mybindingsource;
这是最基本的方法,但在designer中实现这一点要容易得多。在我看来,实现这一点最简单的方法是将DataGridView实际绑定到数据集,然后绑定将为您处理所有难看的东西。例如:
DataSet mydata = new DataSet();
// populate your dataset however you like
DataBindingSource mybindingsource = new DataBindingSource(typeof(DataSet));
mybindingsource.DataSource = mydata;
DataGridView mydatagridview = new DataGridView();
mydatagridview.DataSource = mybindingsource;
这是最基本的方法,但在designer中实现这一点要容易得多