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时,无法在表中插入标识列的显式值">
我该如何解决这个问题?这很令人沮丧。
这样做。参考链路
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属性。
尝试以下两种方法之一:
-
设置字段值:
row.A = null; row.B = 1; row.C = 3;
-
将行添加到
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);
然后使用变量调用该方法。