帮我改一下修改密码的代码,在线等候

awnu1988 2009-09-16 03:24:56
 private void button1_Click(object sender, EventArgs e)
{
string User_ID = textBox1.Text;
string User_PWD = textBox2.Text;
string a = textBox3.Text;
int count = 0;
try
{
string ConnectionString = "Data Source=fly;user=fly;password=fly";//写连接串
OracleConnection conn = new OracleConnection(ConnectionString);//创建一个新连接

conn.Open();
OracleCommand cmd = conn.CreateCommand();
cmd.CommandText = "select * from alarm_user where user_ID='" + User_ID + "'";//在这儿写sql语句
OracleDataReader odr = cmd.ExecuteReader();//创建一个OracleDateReader对象
string pwd = "";
while (odr.Read())//读取数据,如果odr.Read()返回为false的话,就说明到记录集的尾部了
{
count++;
pwd = odr.GetOracleString(1).ToString();
//MessageBox.Show(odr.GetOracleString(1).ToString());//输出字段1,这个数是字段索引,具体怎么使用字段名还有待研究
}
odr.Close();
cmd.Clone();
conn.Close();

if (count == 0)
{
MessageBox.Show("没有此用户");
textBox2.Text = "";
textBox1.Text = "";
this.textBox1.Focus();

}
else
{
if (User_PWD.Equals(pwd))
{
string ConnectionString = "Data Source=fly;user=fly;password=fly";//写连接串
OracleConnection conn1 = new OracleConnection(ConnectionString);//创建一个新连接

conn1.Open();
OracleCommand cmd1 = conn.CreateCommand();
cmd1.CommandText = "update alarm_user set user_pwd='" + a + "'";//在这儿写sql语句
OracleDataReader odr1 = cmd.ExecuteReader();//创建一个OracleDateReader对象
cmd1.Clone();
odr1.Close();
conn1.Close();
MessageBox.Show("修改成功!!");
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
}


else
{
MessageBox.Show("密码错误,请重新输入!");
textBox2.Text = "";
textBox3.Text = "";
this.textBox1.Focus();
}




}
}
catch (Exception ee)
{
MessageBox.Show(ee.Message.ToString());
}
}




就是一个用户修改密码的代码,输入账号,旧密码和新密码后实现把oracle里的数据库里的密码给改掉,这个代码是有问题的,我不知道应该怎么改了,请大家帮下忙了
...全文
238 29 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
awnu1988 2009-09-16
  • 打赏
  • 举报
回复
不过要修改一下
 private void button1_Click(object sender, EventArgs e)
{
string User_ID = textBox1.Text;
string User_PWD = textBox2.Text;
string a = textBox3.Text;
int count = 0;
try
{
string ConnectionString = "Data Source=fly;user=fly;password=fly";//写连接串
OracleConnection conn = new OracleConnection(ConnectionString);//创建一个新连接

conn.Open();
OracleCommand cmd = conn.CreateCommand();
cmd.CommandText = "select * from alarm_user where user_ID='" + User_ID + "'";//在这儿写sql语句
OracleDataReader odr = cmd.ExecuteReader();//创建一个OracleDateReader对象
string pwd = "";
while (odr.Read())//读取数据,如果odr.Read()返回为false的话,就说明到记录集的尾部了
{
count++;
pwd = odr.GetOracleString(1).ToString();
//MessageBox.Show(odr.GetOracleString(1).ToString());//输出字段1,这个数是字段索引,具体怎么使用字段名还有待研究
}
odr.Close();
cmd.Clone();
conn.Close();

if (count == 0)
{
MessageBox.Show("没有此用户");
textBox2.Text = "";
textBox1.Text = "";
this.textBox1.Focus();

}
else
{
if (User_PWD.Equals(pwd))
{

conn.Open();
OracleCommand cmd1 = conn.CreateCommand();
cmd1.CommandText = "update alarm_user set user_pwd='" + a + "' where User_ID ='"+User_ID+"'";//在这儿写sql语句 .不知道你的用户表里面的字段是不是这个.
// OracleDataReader odr1 = cmd1.ExecuteReader();//创建一个OracleDateReader对象
int i = cmd1.ExecuteNonQuery();
cmd1.Clone();
odr.Close();
conn.Close();
if(i > 0)
{
MessageBox.Show("修改成功!!");
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
}
}


else
{
MessageBox.Show("密码错误,请重新输入!");
textBox2.Text = "";
textBox3.Text = "";
this.textBox1.Focus();
}




}
}
catch (Exception ee)
{
MessageBox.Show(ee.Message.ToString());
}
}

awnu1988 2009-09-16
  • 打赏
  • 举报
回复
25楼正解,已解决...
awnu1988 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 libinguest 的回复:]
代码很乱,不过先改一处看看,先把你下面所有代码里的连接字符串改为1

if (User_PWD.Equals(pwd))
                    {
                        stringConnectionString1 = "Data Source=fly;user=fly;password=fly";//写连接串   
                        OracleConnection conn1 = new OracleConnection(ConnectionString1);//创建一个新连接 

                        conn1.Open();
                        OracleCommand cmd1 = conn.CreateCommand();
                        cmd1.CommandText = "update alarm_user set user_pwd='" + a + "'";//在这儿写sql语句
                        OracleDataReader odr1 = cmd.ExecuteReader();//创建一个OracleDateReader对象
                        cmd1.Clone();
                        odr1.Close();
                        conn1.Close();
                        MessageBox.Show("修改成功!!");
                        textBox1.Text = "";
                        textBox2.Text = "";
                        textBox3.Text = "";
                    }
[/Quote]


这个方法我试过了,虽然能正常运行,也能提示修改成功,可是在数据库里的信息却并没有被修改
加油馒头 2009-09-16
  • 打赏
  • 举报
回复
编译通不过。。。。。
duanfengo7 2009-09-16
  • 打赏
  • 举报
回复

private void button1_Click(object sender, EventArgs e)
{
string User_ID = textBox1.Text;
string User_PWD = textBox2.Text;
string a = textBox3.Text;
int count = 0;
try
{
string ConnectionString = "Data Source=fly;user=fly;password=fly";//写连接串
OracleConnection conn = new OracleConnection(ConnectionString);//创建一个新连接

conn.Open();
OracleCommand cmd = conn.CreateCommand();
cmd.CommandText = "select * from alarm_user where user_ID='" + User_ID + "'";//在这儿写sql语句
OracleDataReader odr = cmd.ExecuteReader();//创建一个OracleDateReader对象
string pwd = "";
while (odr.Read())//读取数据,如果odr.Read()返回为false的话,就说明到记录集的尾部了
{
count++;
pwd = odr.GetOracleString(1).ToString();
//MessageBox.Show(odr.GetOracleString(1).ToString());//输出字段1,这个数是字段索引,具体怎么使用字段名还有待研究
}
odr.Close();
cmd.Clone();
conn.Close();

if (count == 0)
{
MessageBox.Show("没有此用户");
textBox2.Text = "";
textBox1.Text = "";
this.textBox1.Focus();

}
else
{
if (User_PWD.Equals(pwd))
{

conn.Open();
OracleCommand cmd = conn.CreateCommand();
cmd.CommandText = "update alarm_user set user_pwd='" + a + "' where User_ID ='"+User_ID+"'";//在这儿写sql语句 .不知道你的用户表里面的字段是不是这个.
// OracleDataReader odr1 = cmd.ExecuteReader();//创建一个OracleDateReader对象
int i = cmd.ExecuteNonQuery();
cmd.Clone();
odr.Close();
conn.Close();
if(i > 0)
{
MessageBox.Show("修改成功!!");
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
}
}


else
{
MessageBox.Show("密码错误,请重新输入!");
textBox2.Text = "";
textBox3.Text = "";
this.textBox1.Focus();
}




}
}
catch (Exception ee)
{
MessageBox.Show(ee.Message.ToString());
}
}

风之影子 2009-09-16
  • 打赏
  • 举报
回复
代码很乱,不过先改一处看看,先把你下面所有代码里的连接字符串改为1

if (User_PWD.Equals(pwd))
{
string ConnectionString1 = "Data Source=fly;user=fly;password=fly";//写连接串
OracleConnection conn1 = new OracleConnection(ConnectionString1);//创建一个新连接

conn1.Open();
OracleCommand cmd1 = conn.CreateCommand();
cmd1.CommandText = "update alarm_user set user_pwd='" + a + "'";//在这儿写sql语句
OracleDataReader odr1 = cmd.ExecuteReader();//创建一个OracleDateReader对象
cmd1.Clone();
odr1.Close();
conn1.Close();
MessageBox.Show("修改成功!!");
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
}
luna1106 2009-09-16
  • 打赏
  • 举报
回复
至于string ConnectionString = "Data Source=fly;user=fly;password=fly";
这个问题,建议你在最开始就Public string ConnectionString = "Data Source=fly;user=fly;password=fly"; 这样会少很多麻烦
NewUser2008 2009-09-16
  • 打赏
  • 举报
回复
网上找一下SQl注入

awnu1988 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 newuser2008 的回复:]
没防SQL注入
[/Quote]

没明白,能具体讲一下么?
awnu1988 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 duanfengo7 的回复:]
if (User_PWD.Equals(pwd))
                    {
                        string ConnectionString = "Data Source=fly;user=fly;password=fly";//写连接串   
                        OracleConnection conn1 = new OracleConnection(ConnectionString);//创建一个新连接 
if下面的这两句去掉...还有在updata语句里面你应该加个条件..至少要知道你要更改的是哪个用户的密码吧..

[/Quote]

条件我已经加完了,是按照3楼说的那样加的,我按照你说的把那两个都去掉了,可还是提示无效操作,连接已关闭,我在前面已经有odr.Close();
cmd.Clone();
conn.Close();
NewUser2008 2009-09-16
  • 打赏
  • 举报
回复
没防SQL注入
duanfengo7 2009-09-16
  • 打赏
  • 举报
回复
if (User_PWD.Equals(pwd))
{
string ConnectionString = "Data Source=fly;user=fly;password=fly";//写连接串
OracleConnection conn1 = new OracleConnection(ConnectionString);//创建一个新连接
if下面的这两句去掉...还有在updata语句里面你应该加个条件..至少要知道你要更改的是哪个用户的密码吧..
awnu1988 2009-09-16
  • 打赏
  • 举报
回复
没有人能再帮着解释一下了么?
awnu1988 2009-09-16
  • 打赏
  • 举报
回复
我去掉了,可是当更改时就弹出一个对话框,说是无效操作,连接被关闭,这是怎么回事
yutian_01261027 2009-09-16
  • 打赏
  • 举报
回复
把下面的string ConnectionString = "Data Source=fly;user=fly;password=fly"去掉
你定义多了,程序肯定不能通过
awnu1988 2009-09-16
  • 打赏
  • 举报
回复
大家能否在我题目所给的代码里告诉我哪里需要修改,这样直观一点...
awnu1988 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 yutian_01261027 的回复:]
真晕,
string ConnectionString = "Data Source=fly;user=fly;password=fly";//写连接串   
OracleConnection conn1 = new OracleConnection(ConnectionString);//创建一个新连接 


ConnectionString 只是一个string变量,已经赋好值了,和你打开关闭数据库有什么关系

[/Quote]


你的意思是我只要把string ConnectionString = "Data Source=fly;user=fly;password=fly";//写连接串 这一句去掉了可以了呗
software820830 2009-09-16
  • 打赏
  • 举报
回复
写update 语句时,要注意一定要加上where条件,标出ID的编号,然后用一个整形初始值变量为零,试试是否被改变,如果改变为一的话,说明修改成功,如果为零的话,再去看ID对应抽出的外键表ID是否正确,总之,如果为零的话,则修改未成功,抛出自定义异常提示!
yutian_01261027 2009-09-16
  • 打赏
  • 举报
回复
真晕,
string ConnectionString = "Data Source=fly;user=fly;password=fly";//写连接串
OracleConnection conn1 = new OracleConnection(ConnectionString);//创建一个新连接


ConnectionString 只是一个string变量,已经赋好值了,和你打开关闭数据库有什么关系
awnu1988 2009-09-16
  • 打赏
  • 举报
回复
去掉就错了啊,因为之前的打开数据库在我用完之后就给关了,现在要再次打开数据库把那个去掉了不就打不开了么
加载更多回复(9)

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧