【发布时间】:2011-09-12 23:07:07
【问题描述】:
是否可以在 .net 中重复使用 DataTable? 以下是代码隐藏的示例:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' the stored proc
Dim SqlQuery As String = "some_silly_stored_proc"
Dim conn As String = My.Settings.csSomeProject
Using dbcon = New SqlConnection()
Using cmd As New SqlCommand(SqlQuery, dbcon)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@SomeSillyParamID", SqlDbType.Int)
cmd.Parameters("@SomeSillyParamID").Value = pn.Silly_now
Using myCommand As New SqlDataAdapter()
Dim sillyDS As New DataSet()
dbcon.ConnectionString = conn
dbcon.Open()
myCommand.SelectCommand = cmd
myCommand.Fill(sillyDS)
dbcon.Close()
r.someResultRows = sillyDS.Tables(0)
r.someResultRowsAgain = sillyDS.Tables(1)
' etc...
End Using
End Using
End Using
当我尝试在代码隐藏中重新访问 DataTable 时, 原始结果集不会随所有返回 如果事件在 Page_Load 事件之外触发,则正确的数据。
如果我在后面的代码中使用此代码进行测试, 一些带有整数和小数的列回来了 为 0 而不是它们的原始值。例如, 第 1 行第 2 列的值返回为 0 而不是整数 82。
Dim var1, var2, var3, var4, var5, var6 As String
Dim _r As DataRow
For Each _r In r.sillyDS.Tables(0)
var1 = _r(0).ToString()
var2 = _r(1).ToString()
var3 = _r(2).ToString()
var4 = _r(3).ToString()
var5 = _r(4).ToString()
var6 = _r(5).ToString()
Next
然而,如果 .aspx 页面上有一个类似的“For Each”循环, 每个单元格的所有值都正确返回, 不只是一些。
【问题讨论】:
标签: asp.net vb.net ado.net datatable dataset