首页 > 解决方案 > 出现服务器错误 - 这是什么意思?

问题描述

这个错误信息是什么意思我做错了?

“/”应用程序中的服务器错误。

过程或函数“Campaign_ProcessClick_4”需要未提供的参数“@UserAgent”。

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Data.SqlClient.SqlException:过程或函数“Campaign_ProcessClick_4”需要未提供的参数“@UserAgent”。

源错误:

         Line 164:                End If
         Line 165:                cmdProcessClick.Parameters.Add(New SqlParameter("@Ip", 
         Data.SqlDbType.NVarChar, 15)).Value = Ip
         Line 166:                **cmdProcessClick.ExecuteNonQuery()**
         Line 167:                If cnn.State = Data.ConnectionState.Open Then
         Line 168:                cnn.Close()

这是功能

        Using cmdProcessClick As New SqlCommand(spToUse, cnn)
            cmdProcessClick.CommandType = Data.CommandType.StoredProcedure
            cmdProcessClick.Parameters.Add(New SqlParameter("@CampaignId", 
         Data.SqlDbType.Int)).Value = CampaignId
            cmdProcessClick.Parameters.Add(New SqlParameter("@LinkId", 
         Data.SqlDbType.Int)).Value = LinkId
            cmdProcessClick.Parameters.Add(New SqlParameter("@SubId", 
         Data.SqlDbType.TinyInt)).Value = SubId
            cmdProcessClick.Parameters.Add(New SqlParameter("@UserAgent", Data.SqlDbType.Text)).Value = UserAgent

            If Trim(Len(Referrer)) > 0 Or Trim(Referrer) <> String.Empty Then
                cmdProcessClick.Parameters.Add(New SqlParameter("@Referrer", 
            Data.SqlDbType.NVarChar, 100)).Value = Referrer
            Else
                cmdProcessClick.Parameters.Add(New SqlParameter("@Referrer", 
             Data.SqlDbType.NVarChar, 100)).Value = DBNull.Value
            End If
            cmdProcessClick.Parameters.Add(New SqlParameter("@Ip", 
           Data.SqlDbType.NVarChar, 15)).Value = Ip
            cmdProcessClick.ExecuteNonQuery()

标签: sqldatabasevb.netstored-procedures

解决方案


您的 SQL 查询可能包含以下内容:

SomeField = @UserAgent

但是 @UserAgent 没有被添加为命令的参数。

@Id在调用之前,您需要做一些类似于您正在做的事情ExecuteNonQuery

' optionally change the SqlDbType and length
' you must change MyUserAgentValue to an actual value 
cmdProcessClick.Parameters.Add(New SqlParameter("@UserAgent", Data.SqlDbType.NVarChar, 64)).Value = MyUserAgentValue

推荐阅读