von nahemoth » Fr, 28.05.2010 14:33
fast

unten muss es heissen
Code: Alles auswählen
Else
Statement.executeUpdate("INSERT INTO t_users VALUES('"+oName+"','"+oPasswort+"');")
End If
spielt das da eigentlich eine Rolle ob man
executeUpdate oder
executeQuery verwendet ?
p.s.: du hättest mir nicht vorkauen müssen, bissel was sollt ich auch noch selbst machen, aber danke !
edit:
hm, jetzt setzt er mir immer noch ne Zeile rein, in der kein name steht, aber ein md5-string
der code sieht mittlerweile wie folgt aus:
Code: Alles auswählen
Sub Main
REM Name aus Textfeld holen
odoc=thisComponent
odrawpage=odoc.drawpage
oform=odrawpage.forms.getByName("Benutzer_anlegen")
oText=oform.getByName("Name")
oName=oText.getCurrentValue()
REM Passwort aus Textfeld Holen
oText=oform.getByName("Passwort")
oPasswort=oText.getCurrentValue()
REM Daten in Tabelle schreiben
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("Weblogin")
Connection = DataSource.GetConnection("","")
Statement = Connection.createStatement()
REM ResultSet = Statement.executeUpdate("INSERT INTO t_users VALUES('"+oName+"','"+oPasswort+"');")
ResultSet = Statement.executeQuery("SELECT `name` FROM t_users WHERE `Name` = '" +oName+"'")
If ResultSet.Next Then
If MsgBox("Benutzername bereits vergeben" & Chr(13) & "Passwort für " & oName & " ändern?", 36, "Hinweis") = 6 Then
Statement.executeUpdate("UPDATE t_users SET `passwort` = '" & oPasswort & "' WHERE `name` = '" & oName & "'")
End If
Else
Statement.execute("INSERT INTO t_users VALUES('"+oName+"','"+oPasswort+"');")
End If
REM Felder zurücksetzen
oText=oform.getByName("Name")
oText.Text = ""
oText=oform.getByName("Passwort")
oText.Text = ""
oform.Reload
und die beiden trigger:
Code: Alles auswählen
USE `weblogin`;
DELIMITER //
CREATE
TRIGGER `weblogin`.`md5ize_on_insert`
BEFORE INSERT ON `weblogin`.`t_users`
FOR EACH ROW
BEGIN
SET NEW.Passwort=md5( NEW.Passwort );
END//
CREATE
TRIGGER `weblogin`.`md5ize_on_update`
BEFORE UPDATE ON `weblogin`.`t_users`
FOR EACH ROW
BEGIN
SET NEW.Passwort=md5( NEW.Passwort );
END//
fast ;)
unten muss es heissen
[code]Else
Statement.executeUpdate("INSERT INTO t_users VALUES('"+oName+"','"+oPasswort+"');")
End If[/code]
spielt das da eigentlich eine Rolle ob man [i]executeUpdate[/i] oder [i]executeQuery[/i] verwendet ?
p.s.: du hättest mir nicht vorkauen müssen, bissel was sollt ich auch noch selbst machen, aber danke !
edit:
hm, jetzt setzt er mir immer noch ne Zeile rein, in der kein name steht, aber ein md5-string
der code sieht mittlerweile wie folgt aus:
[code]Sub Main
REM Name aus Textfeld holen
odoc=thisComponent
odrawpage=odoc.drawpage
oform=odrawpage.forms.getByName("Benutzer_anlegen")
oText=oform.getByName("Name")
oName=oText.getCurrentValue()
REM Passwort aus Textfeld Holen
oText=oform.getByName("Passwort")
oPasswort=oText.getCurrentValue()
REM Daten in Tabelle schreiben
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("Weblogin")
Connection = DataSource.GetConnection("","")
Statement = Connection.createStatement()
REM ResultSet = Statement.executeUpdate("INSERT INTO t_users VALUES('"+oName+"','"+oPasswort+"');")
ResultSet = Statement.executeQuery("SELECT `name` FROM t_users WHERE `Name` = '" +oName+"'")
If ResultSet.Next Then
If MsgBox("Benutzername bereits vergeben" & Chr(13) & "Passwort für " & oName & " ändern?", 36, "Hinweis") = 6 Then
Statement.executeUpdate("UPDATE t_users SET `passwort` = '" & oPasswort & "' WHERE `name` = '" & oName & "'")
End If
Else
Statement.execute("INSERT INTO t_users VALUES('"+oName+"','"+oPasswort+"');")
End If
REM Felder zurücksetzen
oText=oform.getByName("Name")
oText.Text = ""
oText=oform.getByName("Passwort")
oText.Text = ""
oform.Reload
[/code]
und die beiden trigger:
[code]USE `weblogin`;
DELIMITER //
CREATE
TRIGGER `weblogin`.`md5ize_on_insert`
BEFORE INSERT ON `weblogin`.`t_users`
FOR EACH ROW
BEGIN
SET NEW.Passwort=md5( NEW.Passwort );
END//
CREATE
TRIGGER `weblogin`.`md5ize_on_update`
BEFORE UPDATE ON `weblogin`.`t_users`
FOR EACH ROW
BEGIN
SET NEW.Passwort=md5( NEW.Passwort );
END//[/code]