Avatar billede WebHost Nybegynder
22. august 2015 - 18:52 Der er 15 kommentarer og
1 løsning

Hjælp til mysql connection select and insert and update

Hej

Jeg er igang med at lære asp.net og er stødt på et problem da jeg er igang med at lave en windows service som skal kun se min domain i gemmen og så skal den oprette et par poster og her efter updater domain men så er det jeg under mig hvorfor jeg skal have flere connection til database for at kun dette at jeg ikke kan bruge den connection jeg har

Min kode er lige nu
        Using conn As New MySqlConnection("server=localhost;database=mydb;uid=myuser;pwd=mypass;")
            conn.Open()
            Using DebitorDomain As New MySqlCommand("SELECT * FROM debitor INNER JOIN debitor_domain ON debitor.debitorID=debitor_domain.debitorID WHERE debitor.debitorID>0 and debitor_domain.DomainLast<=CURDATE() ORDER BY debitor_domain.domainID", conn)
                Using DomainRS As MySqlDataReader = DebitorDomain.ExecuteReader
                    If DomainRS.HasRows = True Then
                        While DomainRS.Read

                            Using DomainConn As New MySqlConnection("server=localhost;database=mydb;uid=myuser;pwd=mypass;")
                                DomainConn.Open()
                                Dim UpDomain As New MySqlCommand("UPDATE debitor_domain SET DomainLast=ADDDATE(DomainLast,DomainPeriode*365) WHERE DomainID=@DomainID", DomainConn)
                                UpDomain.Parameters.AddWithValue("@DomainID", DomainRS("DomainID"))
                                UpDomain.ExecuteNonQuery()

                            End Using

                        End While
                    End If
                End Using

            End Using

        End Using

og her er det jeg er ked af jeg skal lave nye connection til database hver gang jeg skal lave nåde i den.
Avatar billede arne_v Ekspert
22. august 2015 - 20:25 #1
Du behoever kun en ny connection naar du skal lave noget nyt *og* du ikke er faerdig med det foregaaende.

Og det er vel meget logisk.

Koger du pasta i en gryde saa har du brug for en ny gryde til tomat sovsen hvis pastaen ikke er faerdig endnu.
Avatar billede WebHost Nybegynder
22. august 2015 - 20:39 #2
Hej..

Nu er mit script ikke færdig. men jeg syndes det er sært at jeg skal have flere connection. eller genbruge min connection som jeg kan i classic asp..
Avatar billede arne_v Ekspert
22. august 2015 - 21:12 #3
Du kna godt genbruge den connection, hvis du er faerdig med din foerste operation, men det er du ikke i koden ovenfor.
Avatar billede WebHost Nybegynder
23. august 2015 - 07:01 #4
Hvordan vil du da gøre det hvis du skal loop en tableA og insert tableB og updater TableA
Avatar billede arne_v Ekspert
23. august 2015 - 15:23 #5
Jeg ville nok:
- bruge 2 connections
- men putte den anden connection uden for while loekken saa den bliver genbrugt
Avatar billede WebHost Nybegynder
23. august 2015 - 16:10 #6
Ok, kan jeg lokke dig til at lave et script så jeg kan forstår det helt riget ?

gerne som svar så bliver jeg total glad ;)
Avatar billede arne_v Ekspert
23. august 2015 - 19:46 #7
Utestet:


Using selcon As New MySqlConnection("server=localhost;database=mydb;uid=myuser;pwd=mypass;")
Using updcon As New MySqlConnection("server=localhost;database=mydb;uid=myuser;pwd=mypass;")
    selcon.Open()
    updcon.Open()
    Using selcmd As New MySqlCommand("SELECT * FROM debitor INNER JOIN debitor_domain ON debitor.debitorID=debitor_domain.debitorID WHERE debitor.debitorID>0 and debitor_domain.DomainLast<=CURDATE() ORDER BY debitor_domain.domainID", selcon)
    Using updcmd As New MySqlCommand("UPDATE debitor_domain SET DomainLast=ADDDATE(DomainLast,DomainPeriode*365) WHERE DomainID=@DomainID", updcon)
        updcmd.Parameters>Add("@DomainID", MySqlDbType.Int32)
        Using selrdr As MySqlDataReader = selcmd.ExecuteReader
            While selrdr.Read
                updcmd.Parameters("@DomainID").Value = selrdr("DomainID")
                updcmd.ExecuteNonQuery()
            End While
        End Using
    End Using
    End Using
End Using
End Using
Avatar billede WebHost Nybegynder
23. august 2015 - 20:51 #8
Hej Igen Supper

mangler bare at den også skal oprette en post..
hvordan vil du gøre dette i det her script ?
Avatar billede arne_v Ekspert
23. august 2015 - 21:20 #9
Du kan nok bruge den samme connection til update og insert - bare omdoebd den til updinscon og lav en inscmd.
Avatar billede WebHost Nybegynder
24. august 2015 - 05:53 #10
Hvorfor omdøbe dem. Jeg skal jo både oprette post og updater hovde post. ;)

første skal jeg se om der er domain der er ved at udløbe og hvis der de er det så skal
der laves en faktura herefter skal de så updater sådan at der ikke bliver lave en ny faktura.
Avatar billede arne_v Ekspert
24. august 2015 - 14:52 #11
updcon antyder at det er en connection for update

updinscon antyder at det er en connection til update og insert

gode navne goer det nemmere at foelge koden
Avatar billede WebHost Nybegynder
24. august 2015 - 16:05 #12
Jeg har prøvet og nåde virker og nåde virker ikke..

Using Conn1 As New MySqlConnection("server=localhost;database=mydb;uid=myuser;pwd=mypass;")
            Using Conn2 As New MySqlConnection("server=localhost;database=mydb;uid=myuser;pwd=mypass;")
                Using Conn3 As New MySqlConnection("server=localhost;database=mydb;uid=myuser;pwd=mypass;")
                    Conn1.Open()
                    Conn2.Open()
                    Conn3.Open()
                    Using DebitorDomain As New MySqlCommand("SELECT * FROM debitor INNER JOIN debitor_domain ON debitor.debitorID=debitor_domain.debitorID WHERE debitor.debitorID>0 and debitor_domain.DomainLast<=CURDATE() ORDER BY debitor_domain.domainID", Conn1)
                        'Oprettels af faktura

                        Using DebitorOrder As New MySqlCommand("INSERT INTO debitor_order (`OrderNr`, `DebitorID`) VALUES ('1', @DebitorID)", Conn2)
                            DebitorOrder.Parameters.Add("@DebitorID", MySqlDbType.Int32)
                            Using myDebitorOrder As MySqlDataReader = DebitorOrder.ExecuteReader
                                While myDebitorOrder.Read
                                    'Oprettels af orderline
                                    DebitorOrder.Parameters("@DebitorID").Value = myDebitorOrder("DebitorID")
                                    DebitorOrder.ExecuteNonQuery()
                                End While
                            End Using
                        End Using

                        'Updatering af Domain
                        Using DebitorDomainRS As New MySqlCommand("UPDATE debitor_domain SET DomainLast=ADDDATE(DomainLast,DomainPeriode*365) WHERE DomainID=@DomainID", Conn3)
                            DebitorDomainRS.Parameters.Add("@DomainID", MySqlDbType.Int32)
                            Using myDebitorDomain As MySqlDataReader = DebitorDomainRS.ExecuteReader
                                While myDebitorDomain.Read
                                    DebitorDomainRS.Parameters("@DomainID").Value = myDebitorDomain("DomainID")
                                    DebitorDomainRS.ExecuteNonQuery()
                                End While
                            End Using
                        End Using

                    End Using

                End Using


            End Using
        End Using

Jeg har prøvet med at sætte et del ind som kan oprette en post men den bliver ved med at give fejl. som jeg ikke lige kan forstå.. Dog er jeg komme op på 3 connection..
Avatar billede arne_v Ekspert
25. august 2015 - 03:12 #13
Du skal kun have en reader for select ikke for insert og update.
Avatar billede arne_v Ekspert
25. august 2015 - 03:13 #14
Og generelt hvis du vil have hjaelp til en fejl, saa er det meget nemmere at hjaelpe hvis du skriver hvad fejlen er.

:-)
Avatar billede WebHost Nybegynder
25. august 2015 - 06:31 #15
Undskyld jeg ikke lige fik smit fejl på ..

Jeg har prøvet at rette det til så jeg ikke få fejl

Conn1.Open()
                    Conn2.Open()
                    Conn3.Open()
                    Using DebitorDomain As New MySqlCommand("SELECT * FROM debitor INNER JOIN debitor_domain ON debitor.debitorID=debitor_domain.debitorID WHERE debitor.debitorID>0 and debitor_domain.DomainLast<=CURDATE() ORDER BY debitor_domain.domainID", Conn1)
                        'Oprettels af faktura
                        Using DebitorOrder As New MySqlCommand("INSERT INTO debitor_order (`OrderNr`, `DebitorID`) VALUES ('1', @DebitorID)", Conn2)
                            DebitorOrder.Parameters.Add("@DebitorID", MySqlDbType.Int32)

                            'Oprettels af orderline
                            DebitorOrder.Parameters("@DebitorID").Value = 1
                            DebitorOrder.ExecuteNonQuery()
                        End Using

                        'Updatering af Domain
                        Using DebitorDomainRS As New MySqlCommand("UPDATE debitor_domain SET DomainLast=ADDDATE(DomainLast,DomainPeriode*365) WHERE DomainID=@DomainID", Conn3)
                            DebitorDomainRS.Parameters.Add("@DomainID", MySqlDbType.Int32)
                            Using myDebitorDomain As MySqlDataReader = DebitorDomainRS.ExecuteReader
                                While myDebitorDomain.Read
                                    DebitorDomainRS.Parameters("@DomainID").Value = myDebitorDomain("DomainID")
                                    DebitorDomainRS.ExecuteNonQuery()
                                End While
                            End Using
                        End Using

                    End Using

Men så updater den ikke domain efter den har oprette en order til debitor 1.
som jeg ikke har kun få lov at hente fra DebitorDomain

Før da jeg have den på sage den bare at den ikke kun finde null.
Avatar billede WebHost Nybegynder
13. april 2016 - 15:08 #16
lukket. da jeg har opgive.
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

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