当前位置:编程学习 > C#/ASP.NET >>

C#密码修改疑问

 sql = "update UserInfo set Password='" + textBox3.Text.Trim() + "'where user='" + textBox1.Text.Trim() + "'";
                        cmd.CommandText = sql;
                        try
                        {
                            DB.cn.Close();
                            DB.cn.Open();
                            cmd.ExecuteNonQuery();
                            DB.cn.Close();
                            this.Close();
                            MessageBox.Show("密码修改成功!", "成功提示");
                        }
                        catch(OleDbException er)
                        {
                            //if (DB.cn.State == ConnectionState.Open)
                            //    DB.cn.Close();
                            MessageBox.Show("无法修改密码!\n"+er.Message);
                            return;
                        
                        }
                       

以上是密码修改的一段程序,运行时总说 update语句有错!!!!
帮指点一下!! --------------------编程问答-------------------- "'where user='"这里少个空格,而且一般不推荐使用直接SQL语句,防注入 --------------------编程问答-------------------- " + textBox3.Text.Trim() + "

这东西本来就是 string
你不用再加引号了。
--------------------编程问答-------------------- 呃。我看错了。不好意思。 --------------------编程问答-------------------- 问一下 andybang  少个空格???
--------------------编程问答-------------------- 'where要变成' where,之间要有空格 --------------------编程问答-------------------- 建立楼主还是使用参数来传递值,一来不容易写错,二来安全性比较好 --------------------编程问答-------------------- 谁帮我看一下啊   !!!还是不行! --------------------编程问答-------------------- 不是空格的问题
where前面有'隔开  不影响where
楼主你把sql 输出来啊 --------------------编程问答-------------------- 语法错误应该是单号号有问题吧?楼主查看一下,单引号是不是输入法状态下输入的? --------------------编程问答-------------------- 在where前加上空格还是不行  ,奇怪!!高人指点一下!! --------------------编程问答-------------------- sql = "update UserInfo set Password='" + textBox3.Text.Trim() + "'where user='" + textBox1.Text.Trim() + "'";

把sql.toString(),然后放在数据库查询分析器中执行看看,能看到根据具体的错误提示。怀疑是你的txtBox1.Text内容有问题。 --------------------编程问答-------------------- 高人快进  !!空格我已经加上了  还是不行!! --------------------编程问答--------------------
引用 11 楼 computerfox 的回复:
sql = "update UserInfo set Password='" + textBox3.Text.Trim() + "'where user='" + textBox1.Text.Trim() + "'";

把sql.toString(),然后放在数据库查询分析器中执行看看,能看到根据具体的错误提示。怀疑是你的txtBox1.Text内容有问题。

 update 语句没有问题 --------------------编程问答--------------------
引用 12 楼 yanpengtao 的回复:
高人快进  !!空格我已经加上了  还是不行!!

  动手能力太差了 --------------------编程问答-------------------- sql = "update UserInfo set Password='" + textBox3.Text.Trim() + "'where user='" + textBox1.Text.Trim() + "'";

你看下你自己数据库里的password和user列名是否和这个更新语句里的列名一样 --------------------编程问答-------------------- 拷贝出来试了一下,没问题啊。看一下字段名称有没写错 --------------------编程问答-------------------- 还 是不行!加了空格我 感觉就没有错了    为什么还是不行  --------------------编程问答-------------------- sql = "update UserInfo set Password='" + textBox3.Text.Trim() + "'where user='" + textBox1.Text.Trim() + "'";

或者就是你那sql 前面定义 string 了吗? --------------------编程问答-------------------- 字段 名称对着呢
没错!!! --------------------编程问答-------------------- 字段名称都对着呢
--------------------编程问答--------------------  try
  {
  DB.cn.Close();
  DB.cn.Open();
  cmd.ExecuteNonQuery();
  DB.cn.Close();
  this.Close();
  MessageBox.Show("密码修改成功!", "成功提示");
  }

你看下你try下面为什么数据库先关了然后再开然后再关呢...
--------------------编程问答-------------------- 和数据库里的字段名称是一致的   
--------------------编程问答-------------------- 还是不行!!!奇怪了 --------------------编程问答-------------------- 低调路过 --------------------编程问答-------------------- 调试一下,可以看到具体的错误出处啊,你把报错的内容写出来大家才能帮你找问题啊。直接把运行过的sql写出来看一下。 --------------------编程问答-------------------- 先在查询分析器里把SQL语句运行一下看能不能通过啊?如果行,那就是代码问题;如果不行,那就是SQL语句问题。再来找原因。 --------------------编程问答-------------------- sql = "update UserInfo set Password='" + textBox3.Text.Trim() + "' where [user]='" + textBox1.Text.Trim() + "'";

试试这个 --------------------编程问答-------------------- password和user
用方括号括起来,像27楼的。 --------------------编程问答-------------------- user 是关键字。。。。需要加上[user] --------------------编程问答-------------------- 设下断点,取出sql语句放到查询分析器中试下不就知道了么?
以后这样的题目最好不要放在论坛上来,学会自己动手解决问题,以后你写程序难道还把我们大家带在身边不成 --------------------编程问答-------------------- 设下断点,取出sql语句放到查询分析器中试下不就知道了么?
以后这样的题目最好不要放在论坛上来,学会自己动手解决问题,以后你写程序难道还把我们大家带在身边不成 --------------------编程问答-------------------- 设下断点,取出sql语句放到查询分析器中试下不就知道了么?
以后这样的题目最好不要放在论坛上来,学会自己动手解决问题,以后你写程序难道还把我们大家带在身边不成 --------------------编程问答-------------------- 说了好多次了,用命名参数!

引用楼主 yanpengtao 的回复:
 sql = "update UserInfo set Password='" + textBox3.Text.Trim() + "'where user='" + textBox1.Text.Trim() + "'";
                        cmd.CommandText = sql;
                        try
           ……
--------------------编程问答-------------------- sql = "update UserInfo set Password='" + textBox3.Text.Trim() + "' where user='" + textBox1.Text.Trim() + "'";

设个断点  把SQL拷贝出来,在SQL查询分析器中执行以下看看结果 --------------------编程问答-------------------- 设断点吧!一步一步调~! --------------------编程问答-------------------- sql = "update UserInfo set Password='" + textBox3.Text.Trim() + "'where user='" + textBox1.Text.Trim() + "'";

断点一下,没猜错的话,是你的SQL组合有问题,应该是

sql = "update UserInfo set Password=" + textBox3.Text.Trim() + "where user=" + textBox1.Text.Trim() + "";
SQL组合的时候不要 ' --------------------编程问答-------------------- 可以使用参数传递啊
sql = "update UserInfo set Password = @PASSWORD Where User=@User";
SqlParameter[] parameters = new SqlParameter[]
{
    new SqlParameter(@PASSWORD,textBox3.Text.Trim()),
    new SqlParameter(@User,textBox1.Text.Trim()),
};

int a =0;
SqlConnection con = new SqlConnection("数据库连接语句")
using (OracleCommand cmd = new OracleCommand(sql, con))
{
    cmd.Parameters.AddRange(parameters);
    a = Convert.ToInt32(cmd.ExecuteScalar().ToString());
    cmd.Clone();
    cmd.Dispose();
}

if(a>0)
{
    //成功
}
else
{
    //失败
} --------------------编程问答-------------------- SqlParameter[] parameters = new SqlParameter[]
{
  new SqlParameter(@PASSWORD,textBox3.Text.Trim()),
  new SqlParameter(@User,textBox1.Text.Trim())
};


第三行的最后一个逗号去掉 --------------------编程问答-------------------- 高吼路过 --------------------编程问答-------------------- 路过,学习了~ --------------------编程问答-------------------- 去掉第一个“DB.cn.Close();”试试。 --------------------编程问答--------------------

写的什么东西? --------------------编程问答-------------------- 下个断点,走到这一步时将sql语句复制出来,在数据库中执行一下看提示什么错误,再来改你程序中的语句! --------------------编程问答--------------------
这个问题也有这么多人纠结``  --------------------编程问答-------------------- 顶一下 --------------------编程问答-------------------- 非常感谢 falconfei  28楼的哥们  你太牛了!!解决了
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,