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

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里的数据库里的密码给改掉,这个代码是有问题的,我不知道应该怎么改了,请大家帮下忙了
...全文
229 29 打赏 收藏 转发到动态 举报
写回复
用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)
目录 总体设计 2 概要设计 2 详细设计 3 调试分析 11 测试数据及截图 11 时间复杂度分析 15 问题思考 15 算法的进设想 15 课设总结体会 15 附录 17 程序说明 17 源代码 17 主要参考文献 30 总体设计 通过此系统可以实现如下功能:   1).录入:可以录入航班情况(数据存储在一个数据文件中)   2).查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞 抵达城市,航班票价,票价折扣,确定航班是否满仓);   可以输入起飞抵达城市,查询飞机航班情况;   3).订票:(订票情况存在一个数据文件中)   可以订票,如果该航班已经无票,可以提供相关可选择航班;   4).退票: 可退票,退票后相关数据文件;   客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。   5).航班信息:   当航班信息变可以航班数据文件 概要设计 每个模块的算法设计说明如下: (1)录入模块: 查找单链表的链尾,在链头插入一个"航班信息"的新结点。 (2)浏览模块: 顺着单链表输出航班信息。 (3)模块: 输入密码,确认是否有权限对航班信息进行,有则进行,否则不能。 提供两种方式:添加航班和对已有的航班信息进行动(和删除),1添加航线 ,0对已有的航班信息进行动(和删除)。 对已有的航班信息进行动(和删除):顺着单链表查找,若找到则进行相关操 作。 (4)查询模块: 提供两种查方式:按航号和起飞抵达城市查询,0代表按航号查询,1代表按起飞抵达 城市查询。 顺着单链表查找,如果与航班号(起飞抵达城市)一致,输出相关信息并询问乘客是 否要订票,若订进入订票模块;否则,查询不成功。 (5)订票模块: 查找乘客要订的航班号,判断此航班是否有空位,有则输入乘客有关信息,订票成 功;否则查找这个月此乘客起飞城市和降落城市的有空位航班,供乘客选择,若有则订 票,若无则订票不成功并把此乘客的信息录入此航班等候订票队列中,退出订票。 (6)退票模块: 输入要退票的乘客姓名以及所退票的编号,查找乘客资料的链表中是否有这位乘客, 有则删去此结点,并判断是否有等候订票的乘客(有则通知等候订票乘客订票,无则余 票加乘客所退票数);无则退票失败。 (7)文件模块: 顺着单链表把链表的信息写入文件。 详细设计 由于此系统流程图太多,流程图所对应的源代码较长,所占篇幅也较大,并且流程图 所对应的源程序在订票系统源程序中都有,这里就不再赘述。需要说明的是插入、查找 、和删除这些线性表的基本操作的流程图在订票系统源程序中没有单独函数,是因 为此系统主要是运用线性表的基本操作解决实际问题,具体问题所对应的基本操作代码 有所不同,但思维是相同的,所以这几个操作的源代码已经对应写入了其他具体操作的 函数中,这里也不再给出。 根据订票系统功能的需要定义了如下的结构体: typedef struct wat_ros /*等候订票乘客的信息*/ { char name[20];/*姓名*/ char phone[15];/*等候订票乘客的联系方式*/ struct wat_ros *next; }qnode,*qptr; typedef struct pqueue { qptr front;/*等候替补客户名单域的头指针*/ qptr rear;/*等候替补客户名单域的属指针*/ }linkqueue; typedef struct ord_ros { char name[20];/*客户姓名*/ char IDnum[20];/*客户有效证件的编号*/ char airnum[7];/*航班号*/ int dpl;/*订票量*/ char piaohaio[20];//票的编号,由航班号起飞日期此航班订票前的余票量 struct ord_ros *next; }Lnode ,*linklist; typedef struct airline { char qdname[20];/*起点站名*/ char zhname[20];/*终点站名 */ char air_num[7];/*航班号*/ char plane_num[10];/*飞机型号*/ char year[5]; char month[3]; char day[3];/*飞行日期*/ char qhour[3]; char qminute[3];/*起飞时间*/ char jhour[3]; char jminute[3];/*降落时间*/ float zhekou;/*没有折扣为十折*/ float price;/*票价*/ int tkt_amt;/*乘员定额*/ int tkt_sur;/*余票量*/ Lnode *o
本系统共分三个用户:个人用户可以管理自己的信息,管理自己的简历,也可以实时浏览企业发布的招聘信息,按自己的要求筛选出合适的企业从而决定报名,并可以在企业应答之后收到相应的回复。求职申请模块是该系统的核心模块。个人用户只有通过使用该模块的一些功能,才能向企业发布求职申请,与企业之间建立联系;企业也才能收到求职者的信息进行后续的操作。个人用户在成功登录系统后,一般会按照下面的步骤进行操作:1、浏览企业信息:在个人用户的主界面上,会显示出所有已被企业发布过的招聘信息的主要内容,如果需要深入了解企业,则可以点击后面附带的按钮查看详细信息。2、检索企业信息:该功能可以让个人用户根据不同的检索条件,对企业进行筛选。比如:职位类别、薪资范围、发布时间。用户可以选择其中的一种进行筛选,也可以选择多种进行联合检索。3、发出求职申请:个人用户在浏览完各种招聘信息后,可以向一个或多个心仪的企业发出求职申请。但对同一家企业,只能申请一次。4、等候通知:用户在每次申请过后,便会生成一条相应的求职记录,它会显示求职者当前申请的状态,让求职者了解到简历是否通过。企业用户可以管理本公司的登记信息,管理招聘公告,也可以实时浏览求职者的个人信息,决定是否录用,并向其发送回复。企业用户通过该模块可以实现以下几个功能:1、发布招聘信息:招聘信息只有发布,才能被求职者所看到,他们才能向相应的企业发送申请。一个企业只能发布一则招聘信息。2、撤销招聘信息:企业如果不再需要招聘,则可以撤销掉招聘信息。其他人都不会浏览到该招聘信息。招聘信息已发布状态,才能被撤销。3、筛选人才信息:企业用户成功登陆系统后,会看到所有被发布的求职信息。企业也可根据需要,对求职者的专业、薪资要求、简历发布时间、毕业学校条件进行检索,显示出满足条件的求职者。4、发送通知:当有求职者向企业发送申请后,这条求职记录会被企业看到,企业可根据求职者的简历决定是否同意他的请求,从而向他发出通知。管理员用户主要对于注册的个人求职者和企业用户的基本信息进行管理操作。

110,571

社区成员

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

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

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