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

简单的数据库问题,请教,谢谢
public   static   readonly   string   ConnString   =   @ "Provider   =   Microsoft.Jet.OLEDB.4.0;Data   Source   =   Data\storage.mdb "
public   static   readonly   string   ChangePassword   =   "update   users   set   userPassword=@userNewPassword   where   userName=@userName "

OleDbConnection   conn   =   new   OleDbConnection(ConnString);
OleDbCommand   cmd   =   new   OleDbCommand(Constants.ChangePassword,conn);
OleDbParameter   paramUserName   =   new   OleDbParameter( "@userName ",   userName);
cmd.Parameters.Add(paramUserName);
OleDbParameter   paramUserNewPassword   =   new   OleDbParameter( "@userNewPassword ",   userNewPassword);
cmd.Parameters.Add(paramUserNewPassword);
try
                                {
                                        conn.Open();
                                      cmd.ExecuteNonQuery();                                
                                        conn.Close();
                                        return   true;
                                       
                                }
                                catch   (OleDbException   ex)
                                {
                                        return   false;
                                }

请问   cmd.ExecuteNonQuery(),参数正确,怎么在数据库中无法更新,请各位大哥多多指教?小弟刚学c#不久

------解决方案--------------------
参数顺序 ~
------解决方案--------------------
给楼主整理一下,希望能够帮上忙:
1 检查数据库文件,是否为只读,若NTFS检查是否有权限问题
2 检查数据库结构,是否存在外键或主键约束问题。可将该语句直接放入Access的查询中执行看是否正确。
3 逐行调试程序语句,看执行cmd.ExecuteNonQuery()后有没有Exception内容

其他应该没有什么问题了。补充一下,楼主的代码写得很乱。。。
------解决方案--------------------
/// <summary>
/// 新建用户资料
/// </summary>
/// <param name= "sacc "> </param>
/// <param name= "spw "> </param>
/// <param name= "snanme "> </param>
/// <param name= "slv "> </param>
/// <returns> </returns>
public bool saveUser(string sacc, string spw, string snanme, string slv,string dTime)