MySQL-Datenbank bei Programminstallation konfigurieren/mitliefern

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • MySQL-Datenbank bei Programminstallation konfigurieren/mitliefern

    Hey.

    Ich habe in Java eine Desktop-Applikation geschrieben, die die MySQL-Datenbank verwendet.
    Ich möchte dem Anwender ersparen, dass er die Datenbank selbst konfigurieren muss (neue Datenbank anlegen, Rechte setzen, Zugangsdaten eingeben, ...), da sich normale Benutzer nicht mit der Datenbankverwaltung auskennen.
    Weiss jemand, wie man bei der Programminstallation od. dem ersten Programmstart (in Java) die Datenbank entsprechend konfigurieren kann
    ODER
    bei der Programminstallation einen angepassten MySQL-Server auf dem Rechner installieren lassen kann?

    Gruß,
    SargTeX
  • Naja wenn du auf Benutzerfreundlichkeit gehst und wie du selber schon sagst sich nicht jeder mit Datenbanksystemen auskennt musst du nat. auch bedenken dass nicht jeder auf seinem Rechner Mysql installiert hat.
    Für solche Fälle bieten sich Datenbankmanagementsysteme wie HSQLDB oder Derby an.
    Kannst dich ja mal drüber informieren.

    Wenn Mysql installiert ist kannst du doch einfach beim start schauen ob die Datenbank vorhanden ist und wenn nicht sie erstellen und danach eben die Tabellen. Wo hakt es denn genau?
  • Hey.

    Habe nun ein Großteil des Programms auf SQLite umgeschrieben, nachdem kleinere Tests erfolgreich funktioniert haben.
    Ein Problem: Wie lese ich mit Java die insert-id einer tabelle aus?
    Habe Stundenlang gegoogelt, und etwas a la "CALL IDENTITY()" gefunden. Ich möchte die ID aber zurückgeben und muss sie daher in einer Java-Variable abspeichern.

    Jemand ne Idee oder nen Beispiel?

    Mein Versuch:

    Quellcode

    1. //test-function:
    2. public static void main(String[] args) {
    3. HSQLDatabase.getInstance("db").execute("INSERT INTO menschen2 (name,alter) VALUES('Karl', 13)");
    4. ResultSet result = HSQLDatabase.getInstance("db").query("CALL IDENTITY();");
    5. System.out.println(result.getRow());
    6. }
    7. //query-function:
    8. public ResultSet query(String expression) {
    9. try {
    10. Statement st = getConnection().createStatement();
    11. ResultSet rs = st.executeQuery(expression);
    12. return rs;
    13. } catch (SQLException ex) {
    14. System.err.println("Error: "+expression);
    15. new ErrorMessage(ex);
    16. }
    17. return null;
    18. }
    19. //execute-function:
    20. public void execute(String query) {
    21. try {
    22. Statement st = getConnection().createStatement();
    23. st.executeUpdate(query);
    24. } catch (SQLException ex) {
    25. System.err.println("Error: "+query);
    26. new ErrorMessage(ex);
    27. }
    28. }
    Alles anzeigen


    Gruß,
    SargTeX
  • Hey.

    Nachdem ich statt nur in Google und die Dokumentation auch noch mal einige Support-Foren durchsucht hab, bin ich zu folgender Lösung gekommen (Methoden query() und execute() siehe Post oben):

    Quellcode

    1. HSQLDatabase.getInstance("db").execute("INSERT INTO menschen2 (id,name,alter) VALUES(NULL,'Karl', 13)");
    2. ResultSet result = HSQLDatabase.getInstance("db").query("CALL IDENTITY()");
    3. result.next();
    4. System.out.println(result.getInt(1));


    Problem war das fehlende result.next(), bei anderen Tests mit result.first() kam bei mir eine Fehlermeldung.


    Thread das mir das Problem gelöst hat: sourceforge.net/projects/hsqld…/forum/73674/topic/174736


    Danke für alles!

    Gruß,
    SargTeX