Bevor wir zum Code kommen, möchte ich kurz erwähnen, dass ich eine Idee hatte, wie ich einen Benutzer im MySQL anlegen könnte. Natürlich alles ohne ADO und MyODBC. Aber irgendwie will mir das doch nicht so gelingen wie ich es mir einst vorgestellt habe.
Nun, wir befinden uns in der register-Form
Option Explicit
' Die Deklarationen sind fast wie bei ADO
' Connection-Object
Private oConn As New MYSQL_CONNECTION
' Recordset-Object
Private oRs As MYSQL_RS
' Servername und Benutzerdaten
Private Const sServer1 As String = "localhost"
Private Const sUsername1 As String = "root"
Private Const sPassword1 As String = "tester123"
Private Const sDBName1 As String = "mysql"
Dim sUserName_reg As String
Dim sPassword_reg As String Soweit auch alles kein Problem.
Nun möchte ich, dass, sobald die Form register geladen wird, die Verbindung hergestellt wird
Private Sub Form_Load()
On Error Resume Next
oConn.OpenConnection sServer1, _
sUserName1, sPassword1, sDBName1
' Statusabfrage
If (oConn.State = MY_CONN_CLOSED) Then
' Falls Verbindung nicht geöffnet, Fehlerangabe!
MySQL_Error
Else
' Bei erfolgreicher Verbindung, Verbindungsdaten ausgeben
MsgBox "Connected to Database: " & oConn.DbName, _
vbInformation, "MySQL-Testprojekt"
End If
End Sub ' Fehlerausgabe bei Verbindungsfehler
Private Function MySQL_Error() As Boolean
With oConn.Error
If .Number = 0 Then Exit Function
MsgBox "Error " & .Number & ": " & .Description
MySQL_Error = True
End With
End Function Die Verbindung steht. Alles positiv soweit.
Sobald ich auf Abbrechen klicke, soll die Verbindung zum Server beendet und die Form geschlossen werden.
' Verbindung beenden und Unload
Private Sub cmdAbbrechen_Click()
If Not oConn Is Nothing Then oConn.CloseConnection
If MySQL_Error() = False Then
Set oConn = Nothing
Unload Me
End If
End Sub Jetzt kommt das Herzstück meines Anliegens.
Private Sub cmdRegistrieren_Click()
Dim sSQL As String
sUserName_reg = Text1.Text'Eingabe des Usernamens
sPassword_reg = Text2.Text'Eingabe des Passwortes
' Benutzer erstellen
'An dieser Stelle erscheint die Zeile rot.
'Die Meldung lautet: "Erwartet:Anweisungsende"
sSQL = "GRANT SELECT INSERT UPDATE DELETE CREATE DROP INDEX ALTER ON *.* TO" & _
"" & sUserName_reg & "@" & "localhost" IDENTIFIED BY sPassword_reg;
oConn.Execute sSQL
If MySQL_Error() = False Then
MsgBox "Benutzer" & sUserName_reg & "wurde erstellt."
End If
End Sub Wie man im Kommentar meinseits lesen kann, erscheit die Zeile rot:
sSQL = "GRANT SELECT INSERT UPDATE DELETE CREATE DROP INDEX ALTER ON *.* TO " _
& sUserName_reg & "@" & "localhost" IDENTIFIED BY sPassword_reg; Natürlich war ich auch schon so schlau und probierte, anstatt die in rot erscheinde Zeile, diese hier:
sSQL = "CREATE USER " & sUserName_reg Aber, sobald ich das Programm mit dem CREATE USER-Befehl starte, und den Usernamen gerd in das Textfeld eingebe und anschliessend die Schaltfläche cmdRegistrieren betätige, kommt eine Messagebox mit folgende Meldung "Error 1064:You have an error in your SQL syntax in near 'USER gerd' at line1"
Jemand eine Idee? |