c#将行添加到具有自动增量列的数据表中

时间:2014-05-01 14:45:32

标签: c# datatable auto-increment

我有一个数据表,有A,B,C列。我已将A列的“is identity”属性设置为true,但我现在无法向表中添加任何行。

我正在尝试的代码是:

dsA.dtA row = dsA.dtA.NewdtARow();

row.B = 1;
row.C = 2;

dsA.dtA.Rows.Add(row);

我收到NoNullAllowedException,但我不明白为什么。 A列也是PK。如果我尝试设置row.A = 5(或任何类似的),当我尝试更新数据表“当identity_insert设置为off时无法为表中的标识列插入显式值”时,我将收到错误

我该如何解决这个问题?这令人沮丧。

4 个答案:

答案 0 :(得分:7)

试试这个。

DataColumn column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.AutoIncrement = true;
column.AutoIncrementSeed = 1;
column.AutoIncrementStep = 1;

// Add the column to a new DataTable.
DataTable table = new DataTable("table");
table.Columns.Add(column);

DataRow oRow = table.NewRow();
table.Rows.Add(oRow);

答案 1 :(得分:1)

尝试以下两种方法之一:

  1. 设置字段值:

    row.A = null;
    row.B = 1;
    row.C = 3;
    
  2. DataTable添加行:

    dtA.Rows.Add(null,1,2);
    
  3. 他们都是相同的只是尝试其中任何一个,它应该让你去。还要记住,只要你想在DataTable中自动增加列,就必须在其中插入null。

答案 2 :(得分:1)

打开数据集xsd文件的设计器,并在现有列的数据表中设置A列的AutoIncrement,AutoIncrementSeed和AutoIncrementStep属性。

答案 3 :(得分:0)

我的操作方式是

public void AppendtodtA(int num1, doubledouble1, string string1)
{
    object[] RowArray = new object[] {null,(int)num1, (double) doubledouble1, (string) string1}
    DataRow CurrentRow = dtA.NewRow();
    CurrentRow.ItemArray = RowArray;
    dtA.Rows.Add(CurrentRow);
}

使用ItemArray属性,并在自动递增列的位置保留一个null

AppendtodtA(MyNumber,MyDouble,MyString);

然后只需使用变量调用该方法即可。