Imports System.Data
Imports System.Data.OleDb
Imports System.Web.Security
Partial Class password
    Inherits System.Web.UI.Page 
    Dim userid As String
    Dim wt As String
    Dim da As String    Private mystr As String, mysql As String, rs As String
    Private upd As New OleDb.OleDbDataAdapter
    Private myconn As New OleDbConnection()
    Private mycmd As New OleDbCommand()
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        mystr = "Provider = Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source =" & Server.MapPath("~\\App_data\\library.mdb")
        myconn.ConnectionString = mystr
        myconn.Open()
        
    End Sub    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        mysql = "SELECT * FROM [stu]" 'where [user]= ' " & Trim(user.Text) & "'"  AND  'where [问题]= ' " & Trim(wenti.Text) & "'"AND  'where [答案]= ' " & Trim(daan.Text) & "'"
        rs = ("update [stu] set [code]=' " & Trim(newcode.Text) & "' where 用户名='" & Trim(user.Text) & "'")
        upd.Update = rs
        mycmd.CommandText = mysql
        mycmd.Connection = myconn
        Dim myreader As OleDbDataReader = mycmd.ExecuteReader()
        If user.Text = "" Then
            message.Text = "请输入用户名!"
        Else
            If code.Text = "" Or newcode.Text = "" Then
                message.Text = "请输入新密码!"
           
                Else
                    If wenti.Text = "" Or daan.Text = "" Then
                        message.Text = "请输入解密问题和答案!"
                Else
                    While myreader.Read()
                        userid = myreader.Item(1)
                        wt = myreader.Item(3)
                        da = myreader.Item(4)
                    End While
                    If user.Text <> userid Then
                        message.Text = "用户名不对,请重新输入!"
                        user.Text = ""
                        code.Text = ""
                        newcode.Text = ""
                        wenti.Text = ""
                        daan.Text = ""
                    Else
                        If wenti.Text <> wt Or daan.Text <> da Then
                            message.Text = "问题或答案不对,请重新输入!"
                            code.Text = ""
                            newcode.Text = ""
                            wenti.Text = ""
                            daan.Text = ""
                        Else
                            'passward.Text = FormsAuthentication.HashPasswordForStoringInConfigFile(passward.Text, "MD5")
                            If code.Text <> newcode.Text Then
                                message.Text = "两个密码不相同!请重新输入!"
                                code.Text = ""
                                newcode.Text = ""
                                wenti.Text = ""
                                daan.Text = ""
                            Else                                Session("user") = "administrator"
                               rs = ("update [stu] set [code]='" & newcode.Text & "' where 用户名='" & user.Text & "'")
                                message.Text = "密码修改成功!请返回上一页面重新登录"
                            End If
                        End If
                    End If
                End If
            End If
        End If
    End Sub

解决方案 »

  1.   

    你这个完全不能执行的
    upd.Update = rs
            mycmd.CommandText = mysql
            mycmd.Connection = myconn
            Dim myreader As OleDbDataReader = mycmd.ExecuteReader()
            If user.Text = "" Then
                message.Text = "请输入用户名!"
            Else
                If code.Text = "" Or newcode.Text = "" Then
                    message.Text = "请输入新密码!"
    没有指定连接你能UPdate?为什么这里UP了下面又executeReader
    你是run还是Read?如果是Read你Read的数据呢?
    另外说点这几行中其它的问题
    code.text和newcode.text用or能判断为都是新密码没有输入?
    .................
    这一整片全都重写吧,这没有办法执行的,一堆烂码!参考一下历史贴
    http://bbs.csdn.net/topics/392131988
      

  2.   

    另外给你几个建议,像结构语句不要嵌套这么多层,例如你程序中的(我直接拷一下你的代码)
           End If
                            End If
                        End If
                    End If
                End If
            End If
    这么多层导致出现BUG的可能性增大和找出BUG的难度变高.
    mysql这样的关键字不要用作变量,
    注意一下编程规范,缩进什么的都在意一下,.....