Можно ли повторно использовать DataTable в .net?Вот пример из кода:
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, все значениявернитесь правильно для каждой клетки, а не только для некоторых.