vb.net MySQL Query?

06/18/2013 14:57 Fantaztig#1
Huhu,

ich schreibe gerade an einem Programm das einige Daten in einer MySQL DB speichert. Das Verbinden funktioniert auch wunderbar, allerdings hängt das Programm immer bis zum Timeout wenn ich die Daten aus der Datenbank laden möchte..
Code:
Dim conn As MySqlConnection
        conn = New MySqlConnection
        conn.ConnectionString = "server=localhost;" _
                                              & "user id=root;" _
                                              & "password=;" _
                                              & "database=dba"

        conn.Open()
        Dim myAdapter As New MySqlDataAdapter
        Dim SQLAbfrage As String = "SELECT a FROM tablea WHERE b=11720"
        Dim myCommand As New MySqlCommand
        myCommand.Connection = conn
        myCommand.CommandText = SQLAbfrage

        myAdapter.SelectCommand = myCommand
        Dim myData As MySqlDataReader
        myData = myCommand.ExecuteReader <-- Dort läuft es ins Timeout!
        Try          
                If myData.HasRows Then
                    myData.Read()
                    MsgBox(myData.Item("a").ToString)

                End If
            Catch ex As MySqlException
                MsgBox(ex.Message)
            End Try
Was mich nervt, der Code ist eigentlich 1 zu 1 aus einem Tutorial übernommen.. Könnte es evtl an der DB liegen? Benutze MyIASM da sich das nachher performancetechnisch einfach rechnet..

Greetz
06/18/2013 15:11 'Aleo#2
Datenbankdaten im Programm ist das unsicherste was es gibt. Binnen ein paar Sekunden, bei keiner Obfuscation hat man die Daten und kann die Datenbank "zerstören"(Tabellen droppen etc.). Erstell dir lieber .php Dateien und verbinde dich dort mit der Datenbank und führe dort auch die Querys aus. Im Programm übergibst du dann einfach nur mehr die wichtigsten Daten per WebRequest(z.B. bei Registrierung: Passwort, Benurtzername.)

Beste Grüße,
'Aleo
06/18/2013 15:16 Fantaztig#3
Das ist mir bewusst, da ich das Programm allerdings nur lokal nutzen möchte würde ich es lieber über den 'einfachen' Weg machen, sollte ich dahingehen das Programm zu veröffentlichen wird es auf jeden Fall geändert.

PS: Es ist nichtmal die Beta der Alpha quasi UND das abrufen aus der DB ist der kleinste Teil des Programms ^.-
06/18/2013 15:19 'Aleo#4
Quote:
Originally Posted by Fantaztig View Post
Das ist mir bewusst, da ich das Programm allerdings nur lokal nutzen möchte würde ich es lieber über den 'einfachen' Weg machen, sollte ich dahingehen das Programm zu veröffentlichen wird es auf jeden Fall geändert.

PS: Es ist nichtmal die Beta der Alpha quasi, das abrufen aus der DB ist der kleinste Teil des Programms ^.-
Es wäre sehr hilfreich wenn du uns, dass Tutorial posten könntest(nur Link) und du solltest dir auch noch einmal anschauen ob da nicht irgendwo steht was für einen Typ man nutzen muss.

Edit: Ich weiß nicht ob es Absicht war aber du hast bei der Zeile:
Code:
Dim SQLAbfrage As String = "SELECT a FROM tablea WHERE b=11720"
Das a ohne Abstand geschrieben.

Beste Grüße,
'Aleo
06/18/2013 15:21 Fantaztig#5
Hier: [Only registered and activated users can see links. Click Here To Register...]
Ohne Md5 halt, sehe grad, benutzt auch MyIASM.
06/18/2013 15:23 'Aleo#6
Quote:
Originally Posted by Fantaztig View Post
Hier: [Only registered and activated users can see links. Click Here To Register...]
Ohne Md5 halt, sehe grad, benutzt auch MyIASM.
Du hast bei ExecuteReader die () vergessen.

Beste Grüße,
'Aleo
06/18/2013 15:28 Fantaztig#7
Macht keinen Unterschied...
Der Login funktioniert aber auf jeden Fall, hab das Passwort mal testweise geändert dann läuft es garnicht erst bis zur Problemstelle.
Hab auch schon mehrmals neu gestartet, DB, VS, kompletten Rechner.. Port stimmt auch.

Habe jetzt noch eine andere Variante probiert. Selbes Ergebnis..
Code:
Dim MySqlConnectionString As String = "Server=127.0.0.1;Uid=root;Pwd=;Database=dba;"
        mySqlObj = New MySql.Data.MySqlClient.MySqlConnection(MySqlConnectionString)
        mySqlObj.Open()
        Dim query As String = "SELECT * FROM tablea"
        Dim da As New MySql.Data.MySqlClient.MySqlDataAdapter(query, mySqlObj)
        Dim ds As New DataSet()
        da.Fill(ds)
06/19/2013 23:19 dready#8
Bist du dir sicher das deine DB keine Uncommited Changes hat ?
Das würde so ein verhalten auslösen, zum vb code muss wer anderes was sagen bevor ich am ende quark erzähl ;)
06/19/2013 23:49 Fantaztig#9
Quote:
Originally Posted by dready View Post
Bist du dir sicher das deine DB keine Uncommited Changes hat ?
Das würde so ein verhalten auslösen, zum vb code muss wer anderes was sagen bevor ich am ende quark erzähl ;)
Was sind Uncommited Changes? oO
Das einzige was ich umgestellt hab vom Standard ist eig die Schriftkodierung und der DB Typ.. :/
Der vb Code muss ja eigentlich richtig sein. Ich werd die DB morgen einfach mal komplett neu erstellen...
Worauf muss ich achten um keine uncommited changes zu kriegen? :P
06/25/2013 14:25 Fantaztig#10
Das Problem hat sich verflüchtigt.

Am DB Format lag es nicht, entweder an der Zeichencodierung oder daran das die Table einen Index hatte.. oO

Naja, danke trotzdem!
06/25/2013 15:42 'Aleo#11
Quote:
Originally Posted by Arthur2013 View Post
Oha habt ihr Ahnung...
Oha ist das ein unnötiger Beitrag.