0

Я пытаюсь выполнить хранимую процедуру и поместить данные в datagrid вручную (без использования .net-мастера). Я использую vb.net и asp.net в visual studio.Попытка вызова хранимой процедуры с использованием VB ASPX

Вот мой код, но я не могу понять, где я ошибаюсь.

Imports System.Data.Sql, 
Imports System.Data.SqlClient 
Imports System.Diagnostics 
Imports System 
Imports System.Configuration 
Imports System.Data 
Imports System.Collections.Generic   
Partial Public Class WebForm3 
Inherits System.Web.UI.Page 



Dim myConn As New SqlConnection(System.Configuration.ConfigurationManager.AppSettings("ConnectionString")) 

Public Cmd As New SqlCommand 
Private _storedProc As String 

Dim Conn As New SqlConnection(ConfigurationManager.AppSettings("ConnectionString").ToString) 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

    If Not IsPostBack Then 
     Dim dt As SqlDataReader 
     Cmd.CommandType = CommandType.StoredProcedure 
     Cmd.CommandText = "proc_getTEST" 
     Cmd.Connection = Conn 

     Conn.Open() 

     Try 
      dt = Cmd.ExecuteReader 
      GridView1.DataSource = dt 
      GridView1.DataBind() 
      Conn.Dispose() 
     Catch ex As Exception 
     End Try 
    End If 
End Sub 
End Class 

Любые советы?

ответ

2

Вместо DataReader вы можете использовать SqlDataAdapter, где вы можете установить SqlConnection и SqlCommand для выполнения, затем вызвать метод Fill для SqlDataAdapter, передавая DataTable, который хотите заполнить.

Поскольку ваш DataReader возвращает 2 набора результатов, для этого вам необходимо использовать DataSet. Вы по-прежнему будете использовать SqlDataAdapter для этой цели, но вместо передачи DataTable в методе Fill вы передаете DataSet, и он будет создавать 2 DataTables внутри этого DataSet.

+0

так что-то вроде: ' Попробуйте дт = New DataTable da.Fill (дт) GridView1.DataSource = дт GridView1.EmptyDataText = "Не найдено записей" GridView1.DataBind() Conn.Dispose() Catch ex As Exception End Try' – Rexxo

+0

Попробуйте прокомментировать строку «Conn.Dispose()», потому что DataReader требуется непрерывное соединение –

+0

Это сработало, спасибо, приятель! – Rexxo

Смежные вопросы