|
字段定义好之后,接下来我们就可以加入记录了。要为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>
 |