C# 在.Net中更新表的内容

C# 在.Net中更新表的内容,c#,asp.net,sql,datagridview,C#,Asp.net,Sql,Datagridview,我正在尝试更新.Net中的记录。我想不出怎么做。我需要指定一个DataGridView来显示所有记录,当我单击一个单元格时,它会在单独的文本框中显示所有列的内容。这就是我试图做的,当我修改文本框并单击更新按钮时,更新包含单击单元格的行。 我试过这么做 private void button2_Click(object sender, EventArgs e) { DataRow[] row_update = ds.Tables["Plane"].Selec

我正在尝试更新.Net中的记录。我想不出怎么做。我需要指定一个DataGridView来显示所有记录,当我单击一个单元格时,它会在单独的文本框中显示所有列的内容。这就是我试图做的,当我修改文本框并单击更新按钮时,更新包含单击单元格的行。 我试过这么做

private void button2_Click(object sender, EventArgs e)
        {
            DataRow[] row_update = ds.Tables["Plane"].Select("airline_id = " + aidbox.Text);
        try
        {
            row_update["airline_id"] = int.Parse(aidbox.Text);
            row_update["plane_id"] = int.Parse(pid_box.Text);
            row_update["name"] = name_box.Text;
            row_update["model"] = model_box.Text;
            row_update["f_seats"] = int.Parse(fc_box.Text);
            row_update["s_seats"] = int.Parse(sc_box.Text);
            row_update["b_seats"] = int.Parse(bs_box.Text);
            row_update["p_weight"] = float.Parse(weight_box.Text);
        }
        catch (Exception ex) { MessageBox.Show(ex.Message); }

            try
                {
                    builder = new SqlCommandBuilder(data_adapter);
                    data_adapter.UpdateCommand = builder.GetUpdateCommand();

                    data_adapter.Update(ds, "Plane");

                }
                catch (SqlException ex) { MessageBox.Show(ex.Message); }
            }

        }
但是我得到了这个错误
表没有主键。
在这一行
数据行row\u update=ds.Tables[“Plane”].Rows.Find(aidbox.Text)
在这里,我试图在aidbox中查找具有该id的行(因为我假设该id是唯一的,并且从不仅更改其他值)。 有人能帮我使用这个

DataRows.Find方法吗
如果无法为datatable定义主键,则可以使用,因为它接受筛选器表达式中的任何列。

DataRowCollection。Find
需要
datatable上的主键。通过创建
DataColumns
数组来设置
PrimaryKey
属性。或者只需使用
选择

您以前的find()可能通过此代码工作

DataColumn[] temp = new DataColumn[1];
temp[0] = ds.Tables["Plane"].Columns["airline_id"];
ds.Tables["Plane"].PrimaryKey = temp;
DataRow row_update = ds.Tables["Plane"].Rows.Find(aidbox.Text);

我的表有一个主键。它是“飞机id”。如何更改select?我的意思是,除非查询主键,否则不要使用Find。要搜索航空公司id,请使用
ds.Tables[“Plane”]。选择(“airline\u id=“+airbox.Text”)
请检查更新的代码。我不知道为什么它会给我这个不能将类型字符串隐式转换为int的错误。@user3421241检查是否有任何类型不匹配。@user3421241哪一行给你这个转换错误?