SqlClient.SqlCommand Bombing Out

时间:2011-05-05 18:45:11

标签: asp.net sql ado.net

还是.NET新手,但这对我来说还不错。我无法弄清楚发生了什么。我正在尝试向SqlCommand添加1个参数。它是SQL Server中的一个整数,我正在向它传递一个整数。

它挂在Command.Parameters.Add(PolicyNo)代码行上,并因“内部错误”而无法处理。

我也试过

  

Command.Parameters.AddWithValue(“@ PolicyNumber”,PolicyNo)

但无济于事。它用相同的错误消息轰炸出来。这是代码:

Public Function GetPolicyObj(ByVal PolicyNo As Integer) As PolicyInfo Implements ILetterWriter.GetPolicyObj
    Dim SQLcon As New SqlClient.SqlConnection

    'Establish the connection
    SQLcon.ConnectionString = "Data Source=Hosed;Initial Catalog=MyCat;User ID=Goofy;Password=OpenSesame;"
    SQLcon.Open()

    Using Command As New SqlClient.SqlCommand("sp_GetPolicyInfo", SQLcon)
        Command.CommandType = CommandType.StoredProcedure
        Command.Parameters.Add(PolicyNo) 'Bombs on this line
        Command.Connection.Open()
        Dim reader As SqlClient.SqlDataReader = Command.ExecuteReader

任何想法?

谢谢, 杰森

5 个答案:

答案 0 :(得分:1)

您是否尝试过创建这样的参数:

    Dim param as new SqlParameter()
    param.ParameterName = "ParamName"
    param.Value         = PolicyNo
    Command.Parameters.Add(param)

答案 1 :(得分:0)

不完全确定这是否应该是问题,但是你没有给参数对象一个名字,只传递会引发异常的值,你必须给参数一个名字

Command.Parameters.Add(new SqlParameter("PolicyNo",PolicyNo))

答案 2 :(得分:0)

Command.Parameters.Add()将SqlParameter对象作为其参数。所以你不能只发送整数。

http://www.csharp-station.com/Tutorials/AdoDotNet/Lesson06.aspx

答案 3 :(得分:0)

尝试:

Command.Parameters.AddWithValue("@PolicyNo", PolicyNo);

答案 4 :(得分:0)

也许您可以尝试明确输入参数:

Command.Parameters.Add("@PolicyNumber", SqlDbType.Int)
Command.Parameters("@PolicyNumber").Value = PolicyNo

确保您的参数名称和数据类型与存储过程中的内容匹配。