Seite 1 von 1
Writer zu MySQL per Makros
Verfasst: Mo 17. Dez 2012, 10:58
von chilly_bang
Hallo!
Ich möchte einen im Writer (LO 3.6.4) per Maus markierten Text per Shortcut (Makros-Start) in eine entfernte (gehostete) MySQL 5.1.63-Datenbank schreiben. SSH-Zugang/Root-Zugriff auf den Datenbank Server habe ich nicht, Zugangsdaten schon. Wie mache ich das?
Vielen Dank für alle Ratschläge und Anleitungen und beste Grüße aus Berlin
Eugen
Re: Writer zu MySQL per Makros
Verfasst: Mo 17. Dez 2012, 22:24
von gogo
Ganz so einfach ist das nicht, Du musst Folgendes machen:
1. eine Base-Datenbank erstellen, die die Verbindungsinformation zur Datenbank herstellt. Diese Datenbank muss in Deiner LO-Installation angemeldet sein (wird eh automatisch gemacht)
2. Brauchst Du ein Makro, das Folgendes macht:
A) markierten Text ermitteln
B) SQL-Statement erstellen mit dem in der Datenbank ein neuer Datensatz angelegt werden kann
C) Verbindung zur Datenbank aufbauen
D) für diese Verbindung ein Statement-Objekt kreieren
E) mit der Methode .ExecuteUpdate des Statement-Objektes das SQL-Statement ausführen
Code: Alles auswählen
'ermittelt den derzeit markierten Text
sText = thiscomponent.currentselection.getbyindex(0).String
'verpackt den markierten Text in ein SQL-insert-Statement
sSQL = "Insert into Tabellenname (ID, Textfeld) values (null, '" & sText & "');"
'Stellt die Verbindung zur Datenbank her:
oDatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
oDataSource = oDatabaseContext.getByName("Datenbankname_wie_sie_in_LO_registriert_ist")
oInteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
oConnection = oDataSource.ConnectWithCompletion(oInteractionHandler)
'erstellt das SQL-Statement
oStatement= oConnection.createStatement
'fuehrt das Insert aus:
oStatement.executeUpdate(sSQL)
... das war's

... so in etwa
Re: Writer zu MySQL per Makros
Verfasst: Di 18. Dez 2012, 18:13
von chilly_bang
Vielen Dank! Nur noch eine Frage, bevor ich mich in die Materie eintauche:
Ich muss eigentlich in eine entfernte, im Web gehostete MySQL-Datenbank schreiben. Wie ist die Verbindung der Base-Datenbank, die in meiner LO-Installation angemeldet ist, und der entfernten MySQL-Datenbank? Soviel ich verstanden habe, in der Erklärung geht alles um die Base-Datenbank, oder? Muss ich erst alles in die lokale Base-Datenbank einfügen und erst dann in die entfernte MySQL transferieren?
Danke und Gruß
Eugen
Re: Writer zu MySQL per Makros
Verfasst: Di 18. Dez 2012, 18:56
von gogo
Die Base-Dateim ist nur dazu da die Verbindungsinformation zu speichern, d.h. das Erstellen und Warten der Datenbank sollte immer über die entsprechende Software (wird meist vom Anbieter bereitgestellt, MyPHPAdmin etc.) erfolgen.
Zuerst solltest Du mal testen wie gut Base mit diesem Webserver zusammenarbeitet, und welcher Treiber sich da am besten eignet - Remote-Datenbanken "im Internet" haben darüberhinaus auch die Eigenschaften die Verbindung alle paar Sekunden zu droppen - d.h. man hat in der Regel immer nur einen "Snapshot", und für fast jede Aktion in der Datenverarbeitung muss neu conneted werden. Ist etwas mühsam, aber wenn man mal die entsprechenden Funktionen hat, läuft's eigentlich.
Mein Tip:
1. Erstelle mal eine Tabelle in der DB, dann ...
2. sammelst Du folgende Verbindungsinformationen:
Datenbankname (z.B.: DB_065822)
Server (z.B.: mysql.webserver.com)
Benutzername
Passwort
die Java-Treiberklasse heisst normalerweise: "com.mysql.jdbc.Driver"
3. Du musst in LO einen Classpath zu dem Java-Archiv, oder dem Java-Ordner festlegen, sonst kann der Treiber nciht gefunden werden.
4. Erstellst Du eine neue Base Datei, mit "Verbindung zu einer bestehenden Datenbank" ... schau in diese 2 Links, da sollte genug Info drin sein um mal den einen oder anderen Fuß auf den Boden zu bekommen:
http://www.libreoffice-forum.de/viewtop ... =10&t=6524
http://www.tu-chemnitz.de/urz/anwendung ... mysql.html
Kleiner Tipp: Die Buttons "Verbindung testen" bzw. "Klasse testen" sollten funktionieren

Re: Writer zu MySQL per Makros
Verfasst: Mi 19. Dez 2012, 10:37
von chilly_bang
Vielen Dank ! Damit kann ich schon mal ordentlich loslegen. ich werd die Fortschritte berichten.