我有一个数据表,有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时无法为表中的标识列插入显式值”时,我将收到错误
我该如何解决这个问题?这令人沮丧。
答案 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)
尝试以下两种方法之一:
设置字段值:
row.A = null;
row.B = 1;
row.C = 3;
向DataTable
添加行:
dtA.Rows.Add(null,1,2);
他们都是相同的只是尝试其中任何一个,它应该让你去。还要记住,只要你想在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);
然后只需使用变量调用该方法即可。