Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 过程需要未提供的参数,尽管提供了参数且不为null_C#_Sql_Asp.net_Stored Procedures_Code Behind - Fatal编程技术网

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;}因此,由于页面已加载,因此用户已登录。。。。