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

时间:2010-05-15 06:33:24

标签: c#

如何使用c#将标识列添加到datatable。我正在使用Sql compact server。

6 个答案:

答案 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;
        }