C# DataColumn

  DataColumn 是用来模拟物理数据库中的列。DataColumn 的组合组成了 DataTable 中列的架构。生成 DataTable 架构的方法就是向 DataColumnCollection 中添加DataColumn 对象来生成架构。同物理数据库一样,列是有类型的,比如 varchar, datatime, int 等, DataColumn 有 DataType 属性表示这一列所存储的数据种类。由于 DataTable 所包含的数据通常合并回其原始数据源,因此必须使其数据类型与数据源中的数据类型匹配。这个匹配关系,可以再 msdn 中的 《数据类型映射 (ADO.NET)》章节查询到。

  在物理数据库中,我们的列都要有各种约束来维持数据完整性,比如非空、唯一,同时也有各种自动化的操作,比如,自增。同样的在内存中,我们也可以这样定义,通过 AllowDBNull 、Unique 和 ReadOnly 等属性对数据的输入和更新施加限制,通过 AutoIncrement、AutoIncrementSeed 和 AutoIncrementStep 属性来实现数据自动生成。

 


 

1.通过 DataColumn 创建列

  下面的示例用几个 DataColumn 对象创建 DataTable

private void MakeTable()
{ 
    // Create a DataTable. 
    DataTable table = new DataTable("Product");

    // Create a DataColumn and set various properties. 
    DataColumn column = new DataColumn(); 
    column.DataType = System.Type.GetType("System.Decimal"); 
    column.AllowDBNull = false; 
    column.Caption = "Price"; 
    column.ColumnName = "Price"; 
    column.DefaultValue = 25; 

    // Add the column to the table. 
    table.Columns.Add(column); 

    // Add 10 rows and set values. 
    DataRow row; 
    for(int i = 0; i < 10; i++)
    { 
        row = table.NewRow(); 
        row["Price"] = i + 1; 

        // Be sure to add the new row to the 
        // DataRowCollection. 
        table.Rows.Add(row); 
    } 
}

 

 2. 向数据表中添加列

   DataColumn 的主要作用就是添加到 DataTable 中。添加的方法有两个:1. 显示的使用构造函数,然后将引用添加到集合中。2. 表内创建 DataColumn 对象,也就是在集合中直接添加。以下示例向 DataTable 中添加了四列。

DataTable workTable = new DataTable("Customers");

DataColumn workCol = workTable.Columns.Add("CustID", typeof(Int32));
workCol.AllowDBNull = false;
workCol.Unique = true;

workTable.Columns.Add("CustLName", typeof(String));
workTable.Columns.Add("CustFName", typeof(String));
workTable.Columns.Add("Purchases", typeof(Double));

 

3. 定义主键

  在将一个单独的 DataColumn 标识为 DataTable 的 PrimaryKey 时,表会自动将列的 AllowDBNull 属性设置为 false,并将 Unique 属性设置为 true。 如果是多列主键,则只有 AllowDBNull 属性自动设置为 false。 

//一列
workTable.PrimaryKey = new DataColumn[] {workTable.Columns["CustID"]};

// Or

DataColumn[] columns = new DataColumn[1];
columns[0] = workTable.Columns["CustID"];
workTable.PrimaryKey = columns;
//多列
workTable.PrimaryKey = new DataColumn[] {workTable.Columns["CustLName"], 
                                         workTable.Columns["CustFName"]};

// Or

DataColumn[] keyColumn = new DataColumn[2];
keyColumn[0] = workTable.Columns["CustLName"];
keyColumn[1] = workTable.Columns["CustFName"];
workTable.PrimaryKey = keyColumn;

4.创建 AutoIncrement 列

  只要将 AutoIncrement 属性设置为 true。此列的值就会自动递增了。可以设置递增的初始值,和步进大小。同时,要把 ReadOnly 属性设置为 true。

DataColumn workColumn = workTable.Columns.Add(
    "CustomerID", typeof(Int32));
workColumn.AutoIncrement = true;
workColumn.AutoIncrementSeed = 200;
workColumn.AutoIncrementStep = 3;

 


参考文献:http://msdn.microsoft.com/zh-cn/library/system.data.datacolumn(v=vs.90)



posted @ 2012-08-01 13:17  疯狂鼠标垫  阅读(20727)  评论(0编辑  收藏  举报