1

を使用してデータベース内のデータを編集することに関して、コードに問題がありますDataGridView

私はエラーがありda.update(dt);ます

UpdateCommand の動的 SQL 生成は、キー列情報を返さない SelectCommand に対してはサポートされていません。

を に変更するSELECTUPDATE/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();
}
4

2 に答える 2

5

選択クエリは、テーブルの主キーを返す必要があります。テーブルに主キーがない場合は、設定する必要があります。

于 2012-10-14T16:47:20.013 に答える
2

私の意見では、これを実現する最も簡単な方法は、実際に 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;

これは本質的な方法ですが、デザイナーがこれを実現するのははるかに簡単です。

于 2012-10-14T16:47:49.373 に答える