在Windows中执行存储过程 [英] Executing Stored procedure in Windows

查看:78
本文介绍了在Windows中执行存储过程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在执行登录时用户验证的任务.我面临存储过程的问题.存储过程的输入参数丢失

过程或函数"prcCheckLogin"需要未提供的参数"@Username"."这是抛出异常

存储过程:

I am in the task of doing user validation on login. I am facing an issue with stored procedure. The input parameter for stored procedure is missing

"Procedure or function ''prcCheckLogin'' expects parameter ''@Username'', which was not supplied." this is exception thrown

Stored Procedure:

CREATE PROCEDURE [dbo].[prcCheckLogin]
@Username NVARCHAR(12), @Password NVARCHAR(12)
AS
BEGIN

(SELECT UserInfo.userID,Userinfo.userName,Userinfo.password,Userinfo.userType
 FROM [dbo].[UserInfo] WHERE UserInfo.userName = @Username AND UserInfo.[password] = @Password)
END


public class UserADO
    {

 public User CheckUser(User objUser)
        {
          
DataSet ds = new DataSet();
            DataTable dt = new DataTable();
            User objuser = null;
            objConnection.GetConnection(); --method to open connection
            string sUsername = objUser.Username;
            string sPassword = objUser.Password;
            try
            {
                SqlParameter[] sqlparams = {
                new SqlParameter("@Username",objUser.Username),
                new SqlParameter("@Password",objUser.Password),
            };
                ds = objConnection.GetDataSet("prcCheckLogin",sqlparams);
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    objuser = new User(Convert.ToInt32(ds.Tables[0].Rows[i]["userID"].ToString()), ds.Tables[0].Rows[i]["userName"].ToString(), ds.Tables[0].Rows[i]["password"].ToString(), Convert.ToInt32(ds.Tables[0].Rows[i]["userType"].ToString()));
                }
            }
}

GetDataSet()
public DataSet GetDataSet(string sql, SqlParameter[] parameters)
        {
            DataSet dataset = new DataSet();
            SqlDataAdapter adapter = new SqlDataAdapter();
            SqlCommand cmd = new SqlCommand(sql, this.sconnConnection);
            foreach (SqlParameter p in parameters)
            {
                cmd.Parameters.Add(p);
            }
            adapter.SelectCommand = cmd;
            adapter.Fill(dataset);
            return dataset;
        }


帮助我从出错的地方继续进行

在此先感谢


Help me to proceed where I''ve gone wrong

Thanks in advance

推荐答案

您没有在此ds = objConnection.GetDataSet("prcCheckLogin");
中传递SqlParameter 尝试这个.
You are not passing SqlParameter in this ds = objConnection.GetDataSet("prcCheckLogin");
Try this.
ds = objConnection.GetDataSet("prcCheckLogin", sqlparams);


0)在我看来,您没有将参数传递给GetDataSet().

1)您的代码看起来有些古怪.例如,您有一个try而没有catch.
0) It looks to me like you''re not passing the parameters to GetDataSet().

1) Your code looks a bit wonky. For instance, you have a try with no catch.


您未传递@Username值的意思是

objUser.Username = Txtusername.Text;
bjUser.Password = Txtpassword.Text;

首先传递值,然后才执行.
Your not passing @Username value means

objUser.Username = Txtusername.Text;
bjUser.Password = Txtpassword.Text;

frst u pass the values then only it will execute.


这篇关于在Windows中执行存储过程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆