Avatar billede troublemaker Nybegynder
07. oktober 2005 - 08:05 Der er 3 kommentarer og
1 løsning

Opdatering af flere rows i MySQL

Hej,

Jeg har lavet en lille kode som opdatere flere rows i en MySQL database. Mit problem er at jeg måtte åbne databasen 2 gange for at hente id'et og nogle timer først før jeg kunne opdatere det, dvs en SELECT og en UPDATE sql query.

Mit spørgsmål er så om man kan gøre det kun ved at bruge en connection eller bare lave min kode bedre?

Her er min kode:
    Protected Sub btnOk_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim intFritimer As Integer = 0
        Dim intTimer As Integer = System.Convert.ToInt32(txtTimer.Text)
        Dim intMinutter As Integer = System.Convert.ToInt32(txtMinutter.Text)

        Dim DBconSel As New MySqlConnection(System.Configuration.ConfigurationManager.AppSettings("DBcon"))
        Dim DBsqlSel As String = "SELECT Id, Fritimer FROM SKP WHERE Slettet = False"
        Dim DBcmdSel As New MySqlCommand(DBsqlSel, DBconSel)

        Dim DBconIns As New MySqlConnection(System.Configuration.ConfigurationManager.AppSettings("DBcon"))
        Dim DBsqlIns As String = "UPDATE SKP SET Fritimer = ?FRITIMER WHERE Id = ?ID"
        Dim DBcmdIns As New MySqlCommand(DBsqlIns, DBconIns)

        DBcmdIns.Parameters.Add(New MySqlParameter("?ID", MySqlDbType.Int32))
        DBcmdIns.Parameters.Add(New MySqlParameter("?FRITIMER", MySqlDbType.Int32))

        DBconSel.Open()
        DBconIns.Open()

        Dim DBreadSel As MySqlDataReader = DBcmdSel.ExecuteReader()

        While DBreadSel.Read
            If Request.QueryString("i" & DBreadSel.Item("Id")) = "1" Then
                If rblSymbol.SelectedValue = "1" Then
                    intFritimer = DBreadSel.Item("Fritimer") + ((intTimer * 60) + intMinutter)
                Else
                    intFritimer = DBreadSel.Item("Fritimer") - ((intTimer * 60) + intMinutter)
                End If

                DBcmdIns.Parameters("?ID").Value = DBreadSel.Item("Id")
                DBcmdIns.Parameters("?FRITIMER").Value = intFritimer
                DBcmdIns.ExecuteNonQuery()
            End If
        End While

        DBreadSel.Close()
        DBconIns.Close()
        DBconSel.Close()

        Response.Redirect("Default.aspx")
    End Sub
Avatar billede arne_v Ekspert
07. oktober 2005 - 08:31 #1
2 connections !
Avatar billede erikjacobsen Ekspert
07. oktober 2005 - 09:09 #2
...eller læs fra DBreadSel ind i en ArrayList, og opdater derefter ud fra denne ArrayList.
Avatar billede troublemaker Nybegynder
07. oktober 2005 - 10:00 #3
nå vel så bruger jeg bare 2 connections som her, da jeg ikke gider til at lave arraylist (det havde jeg os selv tænkt på)..

Fix lige et par svar ;)
Avatar billede arne_v Ekspert
07. oktober 2005 - 10:07 #4
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester