ExecuteNonQuery始终返回-1 [英] ExecuteNonQuery always return -1

查看:90
本文介绍了ExecuteNonQuery始终返回-1的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



Iam尝试使用ExecuteNonQuery()通过我的应用程序重置密码。使用下面给出的代码我可以重置密码,但评论显示为用户名和密码没有 匹配,再试一次......。在数据库表中,值被更改.ExecuteNonQuery总是返回-1。以下代码有什么问题?



Hi,
Iam trying to reset my password through my application using ExecuteNonQuery().Using the code given below Iam able to reset the password but the comment is showing as "Username and password doesn''t match,try again......".And in the database table the value is changed.ExecuteNonQuery is always returning -1.What is the problem with the below code?

protected void btnSaveClick(object sender,EventArgs e)
        {
            try
            {
                if (txtbxNewPassword.Text != txtxbxRetypePassword.Text)
                {
                    lblMessage.Visible = true;
                    txtxbxRetypePassword.Text = "";
                }
                else
                {
                    int changed= Utilities._dbManager.GetLoginCredential(txtbxUserName1.Text,txtbxOldPassword.Text,txtbxNewPassword.Text);
                    if(changed!=-1)
                    {
                        lblMessage.Text = "Succesfully saved......";
                        lblMessage.Visible = true;
                    }
                    else
                    {
                        lblMessage.Text = "Username and password doesn't match,try again......";
                        lblMessage.Visible = true;
                    }

                }
            }
            catch (Exception ex)
            {
                _logger.Error("Inside LoginPage:btnSaveClick" + ex.Message);
                throw;
                throw;
            }
        }





数据库管理员: -





Tn the database Manager:-

#region Get Login credential
        public int GetLoginCredential(string username,string oldpassword,string newPassword)
        {
            try
            {
                var user = new User();
                _sqlConnection.Open();
                SqlCommand sqlcmd = new SqlCommand("GetLoginIdenity", _sqlConnection);
                sqlcmd.CommandType = CommandType.StoredProcedure;
                sqlcmd.Parameters.Add(new SqlParameter("@username", username));
                sqlcmd.Parameters.Add(new SqlParameter("@oldpassword",oldpassword));
                sqlcmd.Parameters.Add(new SqlParameter("@newPassword", newPassword));
                int affected = sqlcmd.ExecuteNonQuery();
                sqlcmd.Dispose();
                _sqlConnection.Close();
                return affected;
            }
            catch (Exception ex)
            {

                _logger.Error("Inside DbManager::GetLoginCredential " + ex.Message);
                throw;
            }
        }
        #endregion





我的sql server storedprocedure是: -



And my sql server storedprocedure is:-

@username varchar(50) = 0, 
	@oldpassword varchar(50) = 0,
	@newPassword varchar(50)
	
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	Update dbo.tbl_Login set UserPassword=@newPassword where Username=@username and UserPassword=@oldPassword 
END

推荐答案

嗨danil,

可能会有所帮助

Hi danil,
May be it will help
@username varchar(50) = 0, 
	@oldpassword varchar(50) = 0,
	@newPassword varchar(50)
	
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT OFF;--If NOCOUNT is ON then do not return affected no. of rows.
 
    -- Insert statements for procedure here
	Update dbo.tbl_Login set UserPassword=@newPassword where Username=@username and UserPassword=@oldPassword 
END





编码很开心。



Be Coding be happpy.


在你的程序中你需要放一行

SET NOCOUNT OFF;
in your procedure you need to put one line
SET NOCOUNT OFF;


http://www.c-sharpcorner.com/UploadFile/satyapriyanayak/change-a-password-in-Asp-Net/ [ ^ ]


这篇关于ExecuteNonQuery始终返回-1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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