Yiai Yiko
Yiai Yiko

Reputation: 13

Nothing changes when I click update

When I click on my Update button the below function is called but the DB is not updating. The syntax is correct but i cannot figure it out where I'm missing something. Any suggestion?

Private Sub UpDateRecord()
    Dim connString As String = ConfigurationManager.ConnectionStrings("dbx").ConnectionString
    Dim cmdString As String = "UPDATE hpn " & _
                                  "SET " &_ 
                                      "Day = @Day, " & _ 
                                      "FullName =@FullName, " & _  
                                      "Balance = @Balance, " & _  
                                      "Deposit = @Deposit, " & _  
                                      "Withdraw = @Withdraw, " & _ 
                                      "CashIn = @CashIn, " & _ 
                                      "CashOut = @CashOut, " & _ 
                                      "Spend = @Spend, " & _ 
                                      "Total = @Total " & _
                                  "WHERE ID = @ID"
    Using conn As New OleDbConnection(connString)
        conn.Open() 'conn.Open() before creating OleDbCommand Obj
        Using cmd As New OleDbCommand(cmdString, conn)
            cmd.Parameters.AddWithValue("@Day", TextBox1.Text)
            cmd.Parameters.AddWithValue("@FullName", TextBox2.Text)
            cmd.Parameters.AddWithValue("@Balance", TextBox3.Text)
            cmd.Parameters.AddWithValue("@Deposit", TextBox4.Text)
            cmd.Parameters.AddWithValue("@Withdraw", TextBox5.Text)
            cmd.Parameters.AddWithValue("@CashIn", TextBox6.Text)
            cmd.Parameters.AddWithValue("@CashOut", TextBox7.Text)
            cmd.Parameters.AddWithValue("@Spend", TextBox8.Text)
            cmd.Parameters.AddWithValue("@Total", TextBox9.Text)
            cmd.Parameters.AddWithValue("@ID", Me.ID)
        End Using
    End Using
End Sub

Upvotes: 0

Views: 55

Answers (1)

Simo
Simo

Reputation: 953

How is it supposed to update the DB if you are not calling OleDbCommand.ExecuteNonQuery()?

Code fixed:

Using conn As New OleDbConnection(connString)
    conn.Open() 'conn.Open() before creating OleDbCommand Obj
    Using cmd As New OleDbCommand(cmdString, conn)
        cmd.Parameters.AddWithValue("@Day", TextBox1.Text)
        cmd.Parameters.AddWithValue("@FullName", TextBox2.Text)
        cmd.Parameters.AddWithValue("@Balance", TextBox3.Text)
        cmd.Parameters.AddWithValue("@Deposit", TextBox4.Text)
        cmd.Parameters.AddWithValue("@Withdraw", TextBox5.Text)
        cmd.Parameters.AddWithValue("@CashIn", TextBox6.Text)
        cmd.Parameters.AddWithValue("@CashOut", TextBox7.Text)
        cmd.Parameters.AddWithValue("@Spend", TextBox8.Text)
        cmd.Parameters.AddWithValue("@Total", TextBox9.Text)
        cmd.Parameters.AddWithValue("@ID", Me.ID)
        cmd.ExecuteNonQuery() 'THIS IS THE LINE YOU WERE MISSING
    End Using
    conn.Close() 'YOU FORGOT TO CLOSE THE CONNECTION
End Using

This code was full of mistakes:

  • It's always better to open the connection inside the right Using
  • You weren't calling OleDbCommand.ExecuteNonQuery() so all parameters was set but the query wasn't executed.
  • You weren't closing the connection.

Upvotes: 2

Related Questions