it168旗下专业技术社区
本帖最后由 wodsfsdfs 于 2013-2-1 18:07 编辑
DataTable是DataSet中一个对象,它与数据库表的概念基本一致,简单起见,你就可以把它认成是数据库DataSet中的表。1. 创建一个DataTable
DataTable创建器跟使用DataSets创建器差不多,可以跟一个参数,用以指定表名。例如:
dim MyTable as DataTable MyTable = New DataTable("Test") MyTable.CaseSensitive = False
MyTable.MinimumCapacity = 100 其中CaseSensitive属性指定是否区分大小写,这里指定不区分,CaseSensitive属性是否打开对于查找、排序、过滤等操作有很大的影响。MinimumCapacity属性指定创建时保留给数据表的最小记录空间。另外还有一个TableName的属性,它指定数据表的名称,例如下面两种方式创建的表是一样的。
1) dim MyTable as DataTable MyTable=New DataTable(“test”)
2) dim MyTable as New DataTable MyTable.TableName=”test”
2. 创建表列
一个DataTable又含有一个表列(Columns)的集合。表列的集合形成了表的数据结构,就如同数据库概念中,字段对应于表一样。我们可以使用Columns集合的Add方法向表中添加表列。该方法带有两个参数,一个是表列名,一个是该列的数据类型。由于我们通常在定义表列时,是使用.net构架中的数据类型,而非数据库的数据类型,所以需要使用GetType方法把.net架构的数据类型转换成数据库中的数据类型。例如:我们建立一个客户信息表(Customer),它含有三个字段:
用户姓名(CUNM) 字符型 客户编号(CUNO) 字符型用户序号(IDNO) 整型
Dim MyTable as DataTable Dim MyColumn as DataColumn
MyTable = new DataTable("Customer") MyColumn = MyTable.Columns.Add("CUNM",GetType("String") )
MyColumn = MyTable.Columns.Add("CUNO",GetType("String") ) MyColumn = MyTable.Columns.Add("IDNO",GetType("int32") ) 3. 创建表达式列
asp.net甚至允许创建一些依赖于其他表达式的表列,这样做的好处是,体现了表列之间的某种自然的联系。要创建表达式表列,首先要指定表列的DataType属性,它表明了表达式运算结果的数据类型;然后设置表列的Expression属性为所需的表达式。
例如:一个很明显的例子是利息税,它为总金额*税率*0.2。在同一表中总金额为total列,税率为rate列,利息税为tax列。它们的关系如下:
Dim tax As DataColumn = New DataColumn tax.DataType = GetType("Currency") tax.Expression = "total *rate*0.20"
也可以: MyTable.Columns.Add(“tax”,GetType(“Currency”),”total*rate*0.20)
4. 使用自增列在一些数据库中,我们会发现有这样一种数据类型,通常称作系统序号,当我们向表中增加一条记录时,该字段会自动累加,以后我们可以通过这一唯一序号来标识每一条记录。在asp.net中,同样也可以实现类似的功能,这就是自增表列的使用。
定义自增表列实际上是对DataColumn对象的三个属性:AutoIncrement、AutoIncrementSeed、AutoIncrementStep的使用。 AutoIncrement属性,指定是否打开自增功能。 AutoIncrementSeed属性,指定自增的起始值。
AutoIncrementStep属性,指定自增的步长。例如: dim MyTable as New DataTable
dim MyColumn as DataColumn MyColumn=MyTable.Columns.Add(“Sqno”,GetType(“int32”))
MyColumn.AutoIncrement=True ‘打开自增功能MyColumn.AutoIncrementSeed=0
‘自增从0值起始MyColumn.AutoIncrementStep=2 ‘每次增长2
5. 建立主键值通常在一个表中,我们会定义一个主键,它能够唯一标识该表中的每一条记录。主键可以为表中的一个表列,也可以为几个表列的集合。主键不能为空,而且不能重复,我们可以用DataColumn的两个属性AllowNull和Unique来实现(DataColumn1.AllowNull=False DataColumn1.Unique=True)。最后DataTable对象的PrimaryKey属性指定主键。
例如: dim MyColumn as DataColumn dim MyTable as DataTable
… MyColumn=MyTable.Columns(“CUNO”) MyColumn.AllowNull=False MyColumn.Unique=True
MyTable.PrimaryKey=MyColumn 当键值为几个表列的集合时:
dim MyColumn as DataColumn() MyColumn(0)=MyTable.Columns(“col1”)
MyColumn(1)=MyTable.Columns(“col2”) …
MyTable.PrimaryKey=MyColumn
来自rudltiy514的贴子