Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用datagridview C更新数据库中的数据#_C#_Database_Insert_Updates - Fatal编程技术网

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中实现这一点要容易得多