字段定义好之后,接下来我们就可以加入记录了。要为DataTable 加入记录首先要先产生DataRow 对象,这个对象是由DataTable 的NewRow 方法所产生,例如下列程序代码片段所示:
...
Dim drRow As DataRow 'DataRow 是由Table 产生, 所以不需要使用New 运算
子
drRow = dtTable.NewRow() 'dtTable 依照Colunm 的架构产生DataRow
我们利用DataTable 产生DataRow 时,DataTable 会依照Columns 集合中的字段架构的定义来产生一个独立的DataRow 对象。因为DataTable 是依照字段的架构来产生DataRow 对象,所以新产生的DataRow 对象中会有一个和DataTable 内的Columns 集合架构一样的Columns 集合:
以下为DataRow 对象常用的属性:
我们可以利用DataRow 对象的Item 属性来设定或传回纪录中字段的数据,如下程序代码片段所示:
drRow.Item("UserId") = "Charles" '以传入Key 来指定
或
drRow(1) = "1234" '省略Item 的简略写法,并传入Index 来指定
由于这个DataRow 对象是独立的对象,DataTable 在产生DataRow 时并没有将它加入自己的Rows 集合内;所以我们设定完DataRow 对象中的数据后,还必须使用DataTable 对象中Rows集合的Add 方法将DataRow 加入到我们的DataTable 内,如下程序代码片段所示:
dtTable.Rows.Add(drRow) '将DataRow 对象加入DataTable 中
例如下图在DataTable 中加入了两笔记录:
在DataTable 对象中有许多笔记录,每一笔记录中都有许多字段。要取得指定的记录可以利用DataTable 对象中Rows 集合的Item 属性来指定。例如下列程序代码片段将第一笔记录的第一个栏为值取回:
Dim strFiled As String
strField = dtTable.Rows.Item(0).Item(0) '将第一笔数据的第一个字段取回
或
strFiled = dtTable.Rows(0).Item(0) '省略Rows 的Item 属性也可以
或
strFiled = dtTable.Rows(0)(0) '省略全部的Item 属性也接受
下列范例产生了上述架构的使用者自订DataTable 对象,并填入三笔记录后,再将DataTable的内容显示出来:
<%@Import Namespace=System.Data.ADO%>
<%@Import Namespace=System.Data%>
<Script Language="VB" Runat="Server">
Sub Page_Load(Sender As Object, e As EventArgs)
Dim dtTable As DataTable = New DataTable()
Dim dcColumn As DataColumn = New DataColumn()
Dim drRow As DataRow 'DataRow 是由Table 产生, 所以不需要使用
New 运算子
Dim shtI As Short
dcColumn.ColumnName = "UserId" '设定字段名称
dcColumn.DataType = System.Type.GetType("System.String") '设定
字段型态
dcColumn.AllowNull = False '不允许空白
dtTable.Columns.Add(dcColumn) '将字段的定义加入DataTable
'对象的Column 集合里
dcColumn = New DataColumn() '再产生一个新的DataColumn 对象
dcColumn.ColumnName = "UserPwd" '设定字段名称
dcColumn.DataType = System.Type.GetType("System.String") '设
定字段型态
dcColumn.AllowNull = False '不允许空白
dtTable.Columns.Add(dcColumn) '将字段的定义加入DataTable
'对象的Column 集合里
For shtI = 0 To 2
drRow = dtTable.NewRow() 'dtTable 依照Colunm 的架构产生
DataRow
drRow("UserId") = "账号" & (shtI+1).ToString '以Key 来取得
drRow(1) = (shtI+1).ToString '以Index 来取得
dtTable.Rows.Add(drRow)
Next
For shtI = 0 To 2
Response.Write(dtTable.Rows(shtI)("UserId") & _
", 密码: " & dtTable.Rows(shtI)("UserPwd") & "<br>")
Next
End Sub
</SCRIPT>