简体   繁体   中英

c# adding row to datatable which has an auto increment column

I've a datatable, with column A, B, C. I've set column A's "is identity" property to true, but I can't add any row to the table now.

The code I'm trying is this:

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

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

dsA.dtA.Rows.Add(row);

I'm getting NoNullAllowedException, but I don't understand why. Column A is PK as well. If I tried to set row.A = 5 (or any similiar) I'll get an error when I try to update the datatable saying "cannot insert explicit value for identity column in table when identity_insert is set to off"

How can I solve this issue? It's frustrating.

Do this way. Reference link

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

Try one of the these two:

  1. Set field values:

     row.A = null; row.B = 1; row.C = 3; 
  2. Add row to DataTable :

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

They are both the same just try any of them and it should get you going. Also remember that whenever you want to make a column auto-increment in DataTable then you have to insert null into it.

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

The way that I do it is

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

use ItemArray property and leave a null in the place of the autoincremented column

AppendtodtA(MyNumber,MyDouble,MyString);

Then just call the method with your variables.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM