0

以下の ASP.NET (VB) コードがあります。私の目標は、1 つのパラメーターを受け入れるストアド プロシージャの出力を取得し、その情報をデータ テーブルに格納することです。

        Dim strConnection1 As String = System.Configuration.ConfigurationManager.AppSettings("Rdf2012")
        Dim conn1 As System.Data.SqlClient.SqlConnection
        conn1 = New System.Data.SqlClient.SqlConnection(strConnection1)
        Dim cmd1 As New SqlCommand
        Dim prm1 As New SqlParameter
        Dim dtDataTable1 As DataTable
        cmd1.Connection = conn1
        cmd1.CommandText = "usp_GetDetails"
        cmd1.CommandType = CommandType.StoredProcedure
        prm1 = cmd1.Parameters.Add(strProgramID, SqlDbType.VarChar, 50)
        prm1.Direction = ParameterDirection.Input

        conn1.Open()

        Dim dataAdapter As New SqlDataAdapter
        dataAdapter.SelectCommand = cmd1

        Dim ds1 As New DataSet
        dataAdapter.Fill(ds1)
        conn1.Close()

        dtDataTable1 = ds1.Tables("Table1")

プログラムは次の場所で停止します

    dataAdapter.Fill(ds1) and says:

@1012952-4403 はプロシージャ usp_GetDetails のパラメータではありません

ストアド プロシージャは次のようになります。

    ALTER PROCEDURE [dbo].[usp_GetDetails]
@ProId VARCHAR(20) = NULL
    AS
4

3 に答える 3

1

間違った方法でパラメータを作成しています。これを試してください:

Dim strConnection1 As String = System.Configuration.ConfigurationManager.AppSettings("Rdf2012")
    Dim conn1 As System.Data.SqlClient.SqlConnection
    conn1 = New System.Data.SqlClient.SqlConnection(strConnection1)
    Dim cmd1 As New SqlCommand
    Dim dtDataTable1 As DataTable
    cmd1.Connection = conn1
    cmd1.CommandText = "usp_GetDetails"
    cmd1.CommandType = CommandType.StoredProcedure
    cmd1.Parameters.Add("@ProId",strProgramID)

    conn1.Open()

    Dim dataAdapter As New SqlDataAdapter
    dataAdapter.SelectCommand = cmd1

    Dim ds1 As New DataSet
    dataAdapter.Fill(ds1)
    conn1.Close()

    dtDataTable1 = ds1.Tables("Table1")
于 2012-08-02T20:40:01.453 に答える
1

strProgramID が何と等しいかを確認します。パラメータ名が必要な場所にパラメータ値を渡している可能性があります。こうなったら交換

Dim prm1 As New SqlParameter
....
prm1 = cmd1.Parameters.Add(strProgramID, SqlDbType.VarChar, 50)
prm1.Direction = ParameterDirection.Input

 cmd1.Parameters.AddWithValue("@ProId",strProgramID)
于 2012-08-02T20:38:27.397 に答える
1

あなたがする必要があります

prm1 = cmd1.Parameters.AddWithValue ("@ProID", strProgramID)

それ以外の

 prm1 = cmd1.Parameters.Add(strProgramID, SqlDbType.VarChar, 50) 
 prm1.Direction = ParameterDirection.Input 

特に指定のない限り、方向は入力されたものとみなされます。

于 2012-08-02T20:34:13.057 に答える