Мое веб-приложение состоит из списка URL-адресов, которые извлекают информацию из базы данных при нажатии. Приложение работает хорошо, используя следующую нестандартный хранимую процедуру подхода:Сохраненная процедура не отображает данные при нажатии URL-адреса
кода:
Retrieve the connection string stored in the Web.config file.
Dim connectionString As [String] = ConfigurationManager.ConnectionStrings("dbName_dbConnectionString").ConnectionString
Dim connection As New SqlConnection(connectionString)
connection.Open()
Dim mySQLQuery As String
Dim vID As String
vID = Request.QueryString("submittalList")
mySQLQuery = "SELECT submittalsInfo.CategoryID, submittalsInfo.url, submittalsInfo.headerName, submittalsInfo.FileName FROM submittals INNER JOIN submittalsInfo ON submittals.CategoryID = submittalsInfo.CategoryID WHERE (submittalsInfo.CategoryID = submittals.CategoryID) AND submittalsInfo.CategoryID = '" & vID & "' AND submittalsInfo.isActive = '1' ORDER BY submittalsInfo.FileName"
Dim myCommand As New SqlCommand(mySQLQuery, connection)
Dim myReader1 As SqlDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
While (myReader1.Read())
showSubHeader.Text = myReader1.GetString(2).ToString + ":"
showurls.Text = showurls.Text + "<div>" + myReader1.GetString(1).ToString + "</div>"
End While
connection.Close()
... Я пытаюсь произвести те же результаты, используя хранимую процедуру. Ниже моя установка:
магазин Процедура:
ALTER PROCEDURE [dbo].[showSubmittals]
AS
Begin
SELECT submittalsInfo.CategoryID, submittalsInfo.url, submittalsInfo.headerName, submittalsInfo.FileName FROM submittals INNER JOIN submittalsInfo ON submittals.CategoryID = submittalsInfo.CategoryID WHERE (submittalsInfo.CategoryID = submittals.CategoryID) AND submittalsInfo.CategoryID = '" & vID & "' AND submittalsInfo.isActive = '1' ORDER BY submittalsInfo.FileName
END
... и вот код я использую, чтобы назвать его:
'Retrieve the connection string stored in the Web.config file.
Dim connectionString As [String] = ConfigurationManager.ConnectionStrings("webname_dbConnectionString").ConnectionString
Dim connection As New SqlConnection(connectionString)
Dim myCommand As New SqlCommand()
myCommand.CommandType = CommandType.StoredProcedure
myCommand.CommandText = "showSubmittals"
myCommand.Connection = connection
Try
connection.Open()
Dim myReader1 As SqlDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
While (myReader1.Read())
showSubHeader.Text = myReader1.GetString(2).ToString + ":"
showurls.Text = showurls.Text + "<div>" + myReader1.GetString(1).ToString + "</div>"
End While
Catch ex As Exception
Throw ex
Finally
connection.Close()
connection.Dispose()
End Try
... Проблема я встретив что страница (URL) не дает никаких результатов при щелчке по URL. Ниже показано, как мой URL настроен, я пытаюсь для отображения результатов на странице showSubmittals.aspx, которая содержит серверный код (мой подход) я объяснил выше:
<asp:HyperLink ID="HyperLink1" runat="server" Text="Accessories" NavigateUrl="~/showSubmittals.aspx?submittalList=1" CssClass="submittalsLinks" />
Могу ли я пожалуйста некоторая помощь в том, как я могу выполнить эту задачу, используя подход хранимой процедуры? Заранее спасибо
Сохраняет ли хранимая процедура данные при запуске в SSMS? Хранимая процедура с сервера SQL должна возвращать данные точно так же, как запрос. SQL-сервер не похож на Oracle; он не нуждается в контрольном курсоре. – Doug
Вы пытались отлаживать и видеть, выполняется ли цикл while после выполнения команды? –
Почему ваша хранимая процедура имеет синтаксис vb конкатенации строк? Вам нужно иметь параметр 'vId' в вашем сохраненном proc и передать его из кода. –