必须声明标量变量"@username".如何克服它

par*_*rab 0 c#

我的代码有问题总是遇到我不理解的错误.请帮助我的代码我想从db for login页面检索用户详细信息

 string uname = TextBox1.Text.Trim();
        string pass = TextBox2.Text.Trim();
        try
        {
            con.Open();
            string query = "SELECT user_name, user_password FROM [user] where user_name=@username and user_password=@password";
            cmd.Parameters.Add("@username", SqlDbType.VarChar).Value = uname;
            cmd.Parameters.Add("@password", SqlDbType.VarChar).Value = pass;
            cmd = new SqlCommand(query, con);
            cmd.ExecuteNonQuery();
            rd = cmd.ExecuteReader();
            if (rd.HasRows)
            {
                Response.Write("Login successful");

            }
            else
            {
                Response.Write("login Unsucessful");
            }
        }
        catch (Exception)
        {
            throw;
        }
        finally
        {
            con.Close();
        }
    }    
Run Code Online (Sandbox Code Playgroud)

Jac*_*ert 5

您需要cmd在添加参数之前创建.您的代码应如下所示:

        con.Open();
        string query = "SELECT user_name, user_password FROM [user] where user_name=@username and user_password=@password";
        cmd = new SqlCommand(query, con);
        cmd.Parameters.Add("@username", SqlDbType.VarChar).Value = uname;
        cmd.Parameters.Add("@password", SqlDbType.VarChar).Value = pass;
Run Code Online (Sandbox Code Playgroud)

编辑:正如@ekad所说,你不需要 cmd.ExecuteNonQuery();