数据库无法更新vb.net中的文本框值

时间:2014-12-19 05:29:25

标签: asp.net vb.net textbox

我正在使用vb.net在Web应用程序中执行更新配置文件。首先我读取数据库并将数据放入文本框,然后我更改文本框内的数据并单击“更新”按钮。问题是当我单击按钮时,它不会更新我在文本框中输入的最新值。它仍将更新我从数据库中读取的值。

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)            Handles Me.Load
    Dim item1 As String = CType(Session.Item("UserAccount"), String)
    txtUsername.Enabled = False

    conn.Open()
    sql1 = "Select * From [Users] WHERE username='" & item1 & "'"
    cmd = New SqlCommand(sql1, conn)
    dr = cmd.ExecuteReader
    dr.Read()

    If dr.HasRows Then
        txtUsername.Text = dr.Item("username")
        password = dr.Item("password")
        txtFirstName.Text = dr.Item("firstname")
        txtLastName.Text = dr.Item("lastname")
        txtDob.Text = dr.Item("dob")
        txtEmail.Text = dr.Item("email")
        txtNumber.Text = dr.Item("phone")
        txtAddress.Text = dr.Item("address")
    End If
    dr.Close()
    conn.Close()
End Sub

'在此图像上方是我从数据库中读取的内容。

   Protected Sub btnUpdate_Click(sender As Object, e As EventArgs) Handles btnUpdate.Click
    Dim errFirstName As Boolean = True
    Dim errLastName As Boolean = True
    Dim errCPassword As Boolean = True
    Dim errNPassword As Boolean = True
    Dim errDob As Boolean = True
    Dim errEmail As Boolean = True
    Dim errNumber As Boolean = True
    Dim errAddress As Boolean = True
    Dim newFName, newLName, newPassword, newAddress, newNumber, newEmail, newDob As String

    If txtFirstName.Text = "" Then
        txtFirstName.BackColor = Drawing.Color.LightPink
        lblFirstName.Text = "cannot be empty"
    ElseIf Not Regex.Match(txtFirstName.Text, "^[a-zA-Z_ ]*$", RegexOptions.IgnoreCase).Success Then

。 。

这是“更新”按钮点击。 这是我对文本框中的值进行所有验证的地方

         If errNPassword = False And errCPassword = False And errFirstName = False And            errLastName = False And errDob = False And errEmail = False And errNumber =             False And errAddress = False Then
        conn.Open()
        sql2 = "Update [Users] Set password='" & newPassword & "', firstname='" & newFName & "', lastname='" & newLName & "', dob='" & newDob & "', address='" & newAddress & "', email='" & newEmail & "', phone='" & newNumber & "' WHERE username='" & txtUsername.Text & "'"

        cmd = New SqlCommand(sql2, conn)
        cmd.ExecuteNonQuery()

        conn.Close()
        Response.Redirect(String.Format("~/index.aspx?"))
    Else
        Dim message As String = "Please correct the error above"
        Dim sb As New System.Text.StringBuilder()
        sb.Append("<script type = 'text/javascript'>")
        sb.Append("window.onload=function(){")
        sb.Append("alert('")
        sb.Append(message)
        sb.Append("')};")
        sb.Append("</script>")
        ClientScript.RegisterClientScriptBlock(Me.GetType(), "alert", sb.ToString())
        Exit Sub 'break
    End If

这就是我如何将文本框的值更新到用户名匹配的数据库。

1 个答案:

答案 0 :(得分:1)

您的网页正在回发并运行相同的代码,您必须将If Not IsPostBack添加到Page_Load

   Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)            Handles Me.Load

    If Not IsPostBack
    Dim item1 As String = CType(Session.Item("UserAccount"), String)
    txtUsername.Enabled = False

    conn.Open()
    sql1 = "Select * From [Users] WHERE username='" & item1 & "'"
    cmd = New SqlCommand(sql1, conn)
    dr = cmd.ExecuteReader
    dr.Read()

    If dr.HasRows Then
        txtUsername.Text = dr.Item("username")
        password = dr.Item("password")
        txtFirstName.Text = dr.Item("firstname")
        txtLastName.Text = dr.Item("lastname")
        txtDob.Text = dr.Item("dob")
        txtEmail.Text = dr.Item("email")
        txtNumber.Text = dr.Item("phone")
        txtAddress.Text = dr.Item("address")
    End If
    dr.Close()
    conn.Close()
    End If
End Sub