日期:2014-05-20  浏览次数:20501 次

Access数据库 PassWord字段名 很头疼的改密码问题
C# code
/// <summary>
        /// 修改一条密码
        /// </summary>
        public bool UpdatePassWord(string UserName, string PassWord)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("update Admin set ");
            strSql.Append("[PassWord]=@PassWord");
            strSql.Append(" where UserName=@UserName");
            OleDbParameter[] parameters = {
                    new OleDbParameter("@UserName", OleDbType.VarChar,50),
                    new OleDbParameter("@PassWord", OleDbType.VarChar,50)};
            parameters[0].Value = UserName;
            parameters[1].Value = PassWord;
            int rows = DBUtility.DbHelperAccess.ExecuteNonQuery(strSql.ToString(), CommandType.Text, parameters);
            if (rows > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }


调用该方法时不能更改密码

当将:strSql.Append("[PassWord]=@PassWord");
改为:strSql.Append("[PassWord]='1111'");

执行成功....  

于是认为是参数命名问题。

可当改了:@PassWord
为:@_PassWord

还是不能改密码。

大虾们求解,这是为什么呢?

------解决方案--------------------
改成试试

StringBuilder strSql = new StringBuilder();
strSql.Append("update Admin set ");
strSql.Append("[PassWord]=@PassWord");
strSql.Append(" where UserName=@UserName");
OleDbParameter[] parameters = {
new OleDbParameter("@PassWord", OleDbType.VarChar,50),
new OleDbParameter("@UserName", OleDbType.VarChar,50)
};
parameters[0].Value = PassWord;
parameters[1].Value = UserName;

------解决方案--------------------
顺序问题,参数名和赋值要一致