C# 过程需要未提供的参数,尽管提供了参数且不为null
我有以下存储过程:C# 过程需要未提供的参数,尽管提供了参数且不为null,c#,sql,asp.net,stored-procedures,code-behind,C#,Sql,Asp.net,Stored Procedures,Code Behind,我有以下存储过程: CREATE PROCEDURE [dbo].[SD_languagageDontMatch] (@param1 NVARCHAR(150)) AS BEGIN SET NOCOUNT ON; SELECT * FROM Languages WHERE Languages.ID_language not in (SELECT editorLanguage.IDlanguage FROM editorLanguage where editorLanguage.IDuser =
CREATE PROCEDURE [dbo].[SD_languagageDontMatch]
(@param1 NVARCHAR(150))
AS
BEGIN
SET NOCOUNT ON;
SELECT *
FROM Languages
WHERE Languages.ID_language not in (SELECT editorLanguage.IDlanguage FROM editorLanguage where editorLanguage.IDuser = @param1)
END
以及以下代码:
string strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
SqlConnection sqlConnection1 = new SqlConnection(strConnString);
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "SD_languagageDontMatch";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@param1", HttpContext.Current.User.Identity.GetUserId());
SqlDataReader reader;
cmd.Connection = sqlConnection1;
cmd.CommandType = CommandType.Text;
cmd.Connection = sqlConnection1;
sqlConnection1.Open();
reader = cmd.ExecuteReader();
//do stuff
reader.Close();
sqlConnection1.Close();
sqlConnection1.Dispose();
每次运行代码时,都会出现以下错误:
程序或函数“SD_languagageDontMatch”需要参数
“@param1”,未提供
我以前使用过存储过程,以前从未遇到过这种情况。一切似乎都是正确的。我直接在服务器上执行了存储过程,它工作得很好。我的代码有什么遗漏吗
谢谢
更新
我通过在声明参数之前打开SQL连接解决了这个问题:
sqlConnection1.Open();
cmd.CommandText = "SD_langDontMatch";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@param1", HttpContext.Current.User.Identity.GetUserId());
SqlDataReader reader;
reader = cmd.ExecuteReader();
用户必须登录才能运行代码,否则将无法加载页面……在这种情况下,HttpContext.Current.user.Identity.GetUserId可能返回null。示例中没有用于验证用户是否已登录的代码。如果这是MVC,请将authorized属性添加到该方法,然后重试。我还将在代码中显式地处理登录验证!User.Identity.IsAuthenticated{Response.Redirect/Account/Login;}因此,由于页面已加载,因此用户已登录。。。。