简体   繁体   English

asp.net(VB)<>不是存储过程的参数

[英]asp.net (VB) <> is not a parameter for stored procedure

I have the following ASP.NET (VB) code below. 我下面有以下ASP.NET(VB)代码。 My goal is to get the output of a stored proc that accepts 1 parameter and store that info into a data table: 我的目标是获取接受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")

Program stops at 程序在

    dataAdapter.Fill(ds1) and says:

@1012952-4403 is not a parameter for procedure usp_GetDetails @ 1012952-4403不是过程usp_GetDetails的参数

This is what the stored proc looks like: 存储过程如下所示:

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

You need to do 你需要做

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

instead of 代替

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

Direction will be assumed to be input unless otherwise specified. 除非另有说明,否则将假定为方向输入。

Verify what strProgramID is equal to. 验证什么strProgramID等于。 You might be passing parameter value where parameter name is expected. 您可能在需要参数名称的地方传递参数值。 If that's the case, replace 如果是这种情况,请更换

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

with

 cmd1.Parameters.AddWithValue("@ProId",strProgramID)

You are creating parameter in a wrong way, try this: 您以错误的方式创建参数,请尝试以下操作:

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")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM