Dat een mens zo knettergek kan worden van een zo simpel stukje code...
Voor het creëren van een aanmeldscherm wil ik een test tegen de database uitvoeren.
Daarvoor schiet ik een SELECT FROM af op een MySQL DB, en het resultaat daarvan is het ID nummer van de gebruiker
(ja, gebruikers met hetzelfde wachtwoord is een probleem, zit nog in testfase, staan maar 2 unieke wachtwoorden in tabel
)
Omdat ik continu foutmeldingen krijg over de connectie met de DB heb ik wat checks ingebouwd in de code om de status van de connectie te checken. De connectie lukt ook gewoon, zo draait op hetzelfde scherm een pulldown menu (combobox) waarvan de waarden uit de MySQL DB komen.
Onderstaand de code die ik nu gebruik:
omdat ik op dit moment aan het testen ben met EXECUTESCALAR gebruik ik max(gebruiker_id) in het SQL statement om te zorgen dat ik maar 1 record terugkrijg.
Als ik regel 11 en 12 uitschakel, dan wordt de connectie netjes opgebouwd.
Zet ik ze aan dan krijg ik deze foutmelding:
System.InvalidOperationException: Connection must be valid and open
Google laat me helaas in de steek, en kom dus geen poot verder.
Zo moeilijk moet het toch niet zijn om je variable te laden met het result van je query
Voor het creëren van een aanmeldscherm wil ik een test tegen de database uitvoeren.
Daarvoor schiet ik een SELECT FROM af op een MySQL DB, en het resultaat daarvan is het ID nummer van de gebruiker
code:
1
| select gebruiker_id from gebruikers where wachtwoord=SHA1('testest') |
(ja, gebruikers met hetzelfde wachtwoord is een probleem, zit nog in testfase, staan maar 2 unieke wachtwoorden in tabel
Omdat ik continu foutmeldingen krijg over de connectie met de DB heb ik wat checks ingebouwd in de code om de status van de connectie te checken. De connectie lukt ook gewoon, zo draait op hetzelfde scherm een pulldown menu (combobox) waarvan de waarden uit de MySQL DB komen.
Onderstaand de code die ik nu gebruik:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| Private Sub butlogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butlogin.Click
Dim conn As MySqlConnection = New MySqlConnection
Dim cmd As MySqlCommand = New MySqlCommand("select max(gebruiker_id) from gebruikers where wachtwoord=SHA1('testest')")
conn.ConnectionString = serverstring
Try
If conn.State = ConnectionState.Closed Then
conn.Open()
'Dim antwoord As Integer = cmd.ExecuteScalar
MsgBox(cmd.ExecuteScalar)
MsgBox("MySQLconnectie geslaagd:")
Else
conn.Close()
MsgBox("MySQLconnectie is dicht")
End If
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub |
omdat ik op dit moment aan het testen ben met EXECUTESCALAR gebruik ik max(gebruiker_id) in het SQL statement om te zorgen dat ik maar 1 record terugkrijg.
Als ik regel 11 en 12 uitschakel, dan wordt de connectie netjes opgebouwd.
Zet ik ze aan dan krijg ik deze foutmelding:
System.InvalidOperationException: Connection must be valid and open
Google laat me helaas in de steek, en kom dus geen poot verder.
Zo moeilijk moet het toch niet zijn om je variable te laden met het result van je query