0

Windows形式のデータテーブルがあり、テーブルに新しい行を追加したいと思います。私はいつもエラーを受け取ります

テーブルに主キーがありません。

問題は、主キーがまったく必要ないということです。テーブル内の「ID」が重複している可能性があります。私のコード:

using (DataTable dt = new DataTable())
{
dt.Columns.Add("EntryDE", typeof(string));
dt.Columns.Add("Descr", typeof(string));
dt.Columns.Add("Id", typeof(int));
foreach (DataGridViewRow row in dgv.Rows)
{
    DataGridViewCheckBoxCell check = row.Cells[0] as DataGridViewCheckBoxCell;
    if (check.Value != null)
    {
        if ((bool)check.Value)
        {
            //this row has a checkBox set to true (tick is added)
            //add this row to dataTable ...
            DataRow myRow = (row.DataBoundItem as DataRowView).Row;
            DataRow dr = dt.NewRow();

            dr["EntryDE"] = myRow["ID"].ToString();        
            dr["Descr"] = myRow["EntryName"];               
            dr["Id"] = Id;    
                    dt.Rows.Add(dr);
        }
    }
}

アドバイスをありがとう。

4

2 に答える 2

0

これが機能するため、エラーはDataTableから発生していません。

    using (DataTable dt = new DataTable())
    {
        dt.Columns.Add("EntryDE", typeof(string));
        dt.Columns.Add("Descr", typeof(string));
        dt.Columns.Add("Id", typeof(int));

        for (int i = 0; i < 10; i++) 
        {
            DataRow dr = dt.NewRow();

            dr["EntryDE"] = "abc";
            dr["Descr"] = "xyz";
            dr["Id"] = 1;
            dt.Rows.Add(dr);
        }
    }

他にも問題があります。

于 2012-07-09T14:40:44.460 に答える
0

主キーがないと、後で行を更新または削除できないため、主キーが必要になる可能性があります。

IDフィールドに重複が含まれる場合は、別の列を追加し、primary_keyなどの名前を付けて、その列をPKとして使用する必要があります。

于 2012-07-09T14:32:07.483 に答える