如何使用c#将标识列添加到数据表

如何使用c#将标识列添加到datatable。 我使用Sql compact服务器。

你可以试试这样的事吗?

private void AddAutoIncrementColumn() { DataColumn column = new DataColumn(); column.DataType = System.Type.GetType("System.Int32"); column.AutoIncrement = true; column.AutoIncrementSeed = 1000; column.AutoIncrementStep = 10; // Add the column to a new DataTable. DataTable table = new DataTable("table"); table.Columns.Add(column); } 
  DataTable table = new DataTable("table"); DataColumn dc= table.Columns.Add("id", typeof(int)); dc.AutoIncrement=true; dc.AutoIncrementSeed = 1; dc.AutoIncrementStep = 1; // Add the new column name in DataTable table.Columns.Add("name",typeof(string)); table.Rows.Add(null, "A"); table.Rows.Add(null, "B"); table.Rows.Add(null, "C"); 

如果已填充DataTable。 你可以使用以下方法

 void AddAndPopulateDataTableRowID(DataTable dt, string col, bool isGUID) { if(isGUID) dt.Columns.Add(col, typeof(System.Guid)); else dt.Columns.Add(col, typeof(System.Int32)); int rowid = 1; foreach (DataRow dr in dt.Rows) { if (isGUID) dr[col] = Guid.NewGuid(); else dr[col] = rowid++; } } 

除非您希望仅将应用程序设置为单个用户应用程序,否则不要对DataTable(或前端)进行自动增量。

如果您需要自动增量,只需在数据库中执行,然后将从数据库生成的自动增量ID检索到您的前端。

在这里看到我的答案,只需将SqliteDataAdapter更改为SqlDataAdapter,将SqliteConnection更改为SqlConnection等: 无论如何看看为什么我在这几行代码中得到这个“并发冲突”? 并发冲突:UpdateCommand影响了预期的1条记录中的0条

只是我的两分钱。 自动增量在Winform应用程序中很有用(像Michael Buen所说的那样独立),即:

DatagridView用于显示没有“关键字段”的数据,同样可用于枚举。

我不认为在数据表上使用自动增量是一个好主意,如果你使用插入和删除数据表,因为数字不会重新排列,没有最后我会分享一个小小的想法我们如何使用自动增量手册。

  DataTable dt = new DataTable(); dt.Columns.Add("ID",typeof(int)); dt.Columns.Add("Produto Nome", typeof(string)); dt.Rows.Add(null, "A"); dt.Rows.Add(null, "B"); dt.Rows.Add(null, "C"); for(int i=0;i < dt.Rows.Count;i++) { dt.Rows[i]["ID"] = i + 1; } 

总是在最终确定插入或删除时必须运行此循环

  for(int i=0;i < dt.Rows.Count;i++) { dt.Rows[i]["ID"] = i + 1; }