启用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所示的显示结果。