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

本文关键字:数据表 添加 | 更新日期: 2023-09-27 18:01:14

我有一个数据表,列为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。如果我想划船。A=5(或任何类似的(当我尝试更新数据表时,我会遇到一个错误,说"当identity_insert设置为off时,无法在表中插入标识列的显式值">

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

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

这样做。参考链路

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);

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

尝试以下两种方法之一:

  1. 设置字段值:

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

    dtA.Rows.Add(null,1,2);
    

它们都是一样的——只要试一下其中的任何一个,就会让你走起来。还要记住,每当您想在DataTable中使列自动递增时,都必须在其中插入null。

我这样做的方式是

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);

然后使用变量调用该方法。