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内容有问题。 --------------------编程问答-------------------- 高人快进 !!空格我已经加上了 还是不行!! --------------------编程问答--------------------
update 语句没有问题 --------------------编程问答--------------------
动手能力太差了 --------------------编程问答-------------------- 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语句放到查询分析器中试下不就知道了么?
以后这样的题目最好不要放在论坛上来,学会自己动手解决问题,以后你写程序难道还把我们大家带在身边不成 --------------------编程问答-------------------- 说了好多次了,用命名参数!
--------------------编程问答-------------------- 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#