DataTable启用Autoincrementing字段

启用Autoincrementing字段

在8.4.4节中学会了如何设置DataColumn列的数据类型,在设置完DataColumn列的数据类型以后,也可以像SQL-Server数据库表一样把某一列设置成自动递增的。简单地说,自动增加列可以确保当一个新行被添加到给定表时,可以基于当前的递增步长值自动指定这个列的值。特别是某一列作为没有重复值得主键的时候,这个功能就特别有用。在DataTable中这个功能可以用AutoIncrement(列是否将列的值自动递增)、AutoIncrementSeed(起始值,种子值)和AutoIncrementStep(步长)属性来控制。

下面是创建一个支持自动递增的DataColumn列的例子。种子值用于标记列的起始值,步长值表示递增时增加种子值的数值,代码如下所示:

// 创建一个新列

DataColumn myColumn = new DataColumn();

myColumn.ColumnName = " CustID ";

myColumn.DataType = System.Type.GetType("System.Int32");

// 设置自动递增

myColumn.AutoIncrement = true;

myColumn.AutoIncrementSeed = 0;

myColumn.AutoIncrementStep = 1;

代码说明:

q       AutoIncrement:列是否将列的值自动递增,true表示自动递增,false表示不能自动递增。

q       AutoIncrementSeed:起始值种子值,AutoIncrement属性设置为true的列的起始值。

q       AutoIncrementStep:步长,递增量,AutoIncrement属性设置为true的列的步长。

创建一个数据类型为Int32的CustID列,为了能使这个字段的值实现自动增加的效果,把列AutoIncrement属性设置为true;把列得种子值AutoIncrementSeed定为0,也就是从0开始计数;同时设置自动增加的步长AutoIncrementStep为1,每次增加一个。由于种子值被定为0,前面5个值应该是0、1、2、3和4。

可以往一个DataTable中添加这个DataColumn来测试一下。然后往这个表中添加一些新行,当然会自动转储CustID列中的值,代码如下所示:

//实现列自动增加功能

     protected void Button1_Click(object sender, EventArgs e)

     {

         //创建一个新的数据列,名称:CustID ,数据类型:Int32.

         DataColumn myColumn = new DataColumn();

         myColumn.ColumnName = " CustID ";

         myColumn.DataType = System.Type.GetType("System.Int32");

         //把新创建的列设置自动增加,种子为0,增加步长为1.

         myColumn.AutoIncrement = true;

         myColumn.AutoIncrementSeed = 0;

         myColumn.AutoIncrementStep = 1;

         //把这个列添加到Customers表中.

         DataTable CustomersTable = new DataTable("Customers");

         myTable. CustomersTable.Add(myColumn);

         //添加20个新行.

         DataRow r;

         for (int i = 0; i < 20; i++)

         {

             r = CustomersTable.NewRow();

             CustomersTable.Rows.Add(r);

         }

         //显示每一行的数据值.

         string temp = "";

         DataRowCollection rows = CustomersTable.Rows;

         for (int i = 0; i < CustomersTable.Rows.Count; i++)

         {

             DataRow currRow = rows;

             temp += currRow["CustID "] + " ";

         }

             //在Label1面显示所有值

         Label1.Text = Label1.Text+temp;

}

如果把上面代码写在建立的Web程序中,运行后点击“Button”按钮,就会得出初始值为0的步长为1的一系列数,结果如图:8.4.1所示的显示结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值