私のWebアプリケーションは、クリックするとデータベースから情報を取得する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'を持って、コードから渡す必要があります。 –