You are not logged in.

  • Login

1

Thursday, October 28th 2010, 2:48pm

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

2

Thursday, October 28th 2010, 7:03pm

Muss es denn MySQL sein? Du könntest auch auf die JavaDB oder auf SQLite zurückgreifen.
Das ist deutlich einfacher.

Lg

3

Thursday, October 28th 2010, 7:09pm

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?

4

Thursday, October 28th 2010, 7:10pm

Ach mist d0nut :-P Zu spät ;)

5

Friday, October 29th 2010, 4:48pm

Hey.

Danke für die schnellen antworten :).
SQLite kam bereits aus einem anderen Forum, aber damit komm ich nicht so recht zurecht ;D.
HSQLDB sieht aber sehr ordentlich aus :). Werd mal mein Programm auf den Datensatz umschreiben und mich dann nochmal melden, wie es geklappt hat ;).

Gruß,
SargTeX

6

Sunday, October 31st 2010, 1:32pm

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:

Java Quellcode

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


Gruß,
SargTeX

7

Sunday, October 31st 2010, 4:33pm

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):

Java Quellcode

1
2
3
4
HSQLDatabase.getInstance("db").execute("INSERT INTO menschen2 (id,name,alter) VALUES(NULL,'Karl', 13)");
		ResultSet result = HSQLDatabase.getInstance("db").query("CALL IDENTITY()");
		result.next();
		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: http://sourceforge.net/projects/hsqldb/f…74/topic/174736


Danke für alles!

Gruß,
SargTeX

Similar threads

Social bookmarks