如何使用c#将标识列添加到datatable。我正在使用Sql compact server。
答案 0 :(得分:22)
你可以试试这样的事吗?
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);
}
答案 1 :(得分:7)
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");
答案 2 :(得分:3)
如果已填充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++;
}
}
答案 3 :(得分:2)
您不会在DataTable(或前端)上进行自动增量,除非您希望仅将应用程序设置为单个用户应用程序。
如果您需要自动增量,只需在数据库中执行,然后将从数据库生成的自动增量ID检索到您的前端。
请在此处查看我的答案,只需将SqliteDataAdapter更改为SqlDataAdapter,将SqliteConnection更改为SqlConnection等:anyway see why I get this "Concurrency Violation" in these few lines of code??? Concurrency violation: the UpdateCommand affected 0 of the expected 1 records
答案 4 :(得分:0)
只是我的两分钱。自动增量在Winform
应用程序中很有用(像Michael Buen所说的那样独立),即:
DatagridView
用于显示没有“关键字段”的数据,同样可用于枚举。
答案 5 :(得分:0)
我不认为在数据表上使用自动增量是一个好主意,如果你使用插入和删除数据表,因为数字不会重新排列,没有最后我会分享一个小小的想法我们如何使用自动增量手册。
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;
}