SQL-Installation abfragen

Status
Nicht offen für weitere Antworten.
M

modestiny

Mitglied
Hi, ich mal wieder,

folgendes:

Ich schreibe grade ein Install-Prog für eine Anwendung. Beides, Install-Prog und Anwendung sind in Java geschrieben. Nun arbeitet die zu installierende Anwendung mit MySQL zusammen. Dafür muß ich aber bei der Installation (mal lieber vorsichtshalber ;) ) abfragen ob MySQL schon auf dem Rechner ist oder nicht. Sollte es nicht installiert sein, wird es durch das Install-Prog installiert. Ist es schon auf dem Rechner... mal lieber nicht drüber installieren ;)

Nun meine Frage. Ist es mit Java möglich abzufragen ob schon eine MySQL-Installation vorliegt (man bedenke: MySQL muß ja nicht gestartet sein, also einfach mal schauen ob man zu MySQL connecten kann funtz nicht). Außerdem soll das Ganze auf Windoof, Linux und MacOS laufen (denke da gibt es unterschiede).

Danke im Vorraus

Lars
 
M

mvitz

Top Contributor
1) Sicher, dass das ganze Automatisch gehen muss? Das könnte bestimmt viel Arbeit werden, einfacher wäre es bestimmt, wenn man einfach den Benutzer, der installiert fragt ob es schon installiert ist und ob er es von deinem Programm installieren möchte oder manuell selber. Ich würde es zumindest nicht toll finden, wenn dein Programm einfach mySQL installiert.

2) Weiß ja nicht, was das für ein Programm ist, aber wie wäre es evtl. mit einer DB die nicht so groß ist wie mySQL z.B. H2 da ist die ganze DB eine Datei und braucht nicht installiert werden. Ist evtl wesentlich einfacher als extra mySQL zu installieren.
 
M

modestiny

Mitglied
Danke für Deine Antwort.

zu 1) Daran habe ich auch schon gedacht, den User zu fragen. Nun ist es so, daß die zu installierende Software in zwei Varianten zur Verfügung stehen soll. Eine Enterprise-Version (hier wird wohl ein Admin die Installation vornehmen und wissen ob er schon ein MySQL-Server hat oder nicht) und eine Standalone-Version (hier könnte der User evtl. unwissent darüber sein ob er einen MySQL-Server hat oder nicht (denke an eine installation von XAMPP, wo MySQL ja gleich mitinstalliert wird) und/oder ihm fehlt evtl. das Wissen, wie man einen MySQL-Server installiert und konfiguriert, damit dieser mit meiner Anwendung zusammen arbeitet).

Als Programmierer muß man ja immer an die DAU's denken ;)

zu 2) MySQL habe ich gewählt, da es schon sehr umfangreiche Daten sind, die gespeichert werden sollen.
 
tfa

tfa

Top Contributor
Programmier deine Software so, dass sie mit allen Datenbanken (für die es JDBC-Treiber gibt) funktioniert. Dann kann der Kunde frei wählen, welches DB-Produkt er einsetzt. Die einfache Variante liefert dann ebene eine vorkonfigurierte H2 oder Derby mit.
Umfangreiche Daten (was immer das heißen mag) kann man auch in die Java-DBs packen, oder hast du da schlechte Erfahrungen?
 
M

modestiny

Mitglied
Schlechte Erfahrungen habe ich nicht um genau zu sein habe ich bisher nur mit MySQL gearbeitet.

Aber davon abgesehen, habe ich auch vor andere DB's zu unterstützen. Den Anfang wollte ich aber nun eben mit MySQL machen, da dies ja schon fast als defakto Standart gesehen werden kann. Aber egal welche DB ich im enteffekt einsetze, das Problem bleibt das Gleiche. Ich muß mich entweder auf den User verlassen, daß er weiß ob er diese DB schon installiert hat (selber oder durch irgendein Packet (XAMPP)) oder ich versuche es festzustellen ob schon eine Installation vorliegt und frage dann den Benutzer ob dieser DB-Server verwendet werden soll oder ob ein neuer installiert werden soll.
 
M

maki

Gast
Da sind ja einige Irrtümer drinnen..

zu 2) MySQL habe ich gewählt, da es schon sehr umfangreiche Daten sind, die gespeichert werden sollen.
Genau dann, nämlich bei großen Datenmengen nimmt man keine MySQL DB.

Den Anfang wollte ich aber nun eben mit MySQL machen, da dies ja schon fast als defakto Standart gesehen werden kann.
Von wem?
Von Leuten die dass erste mal mit einer DB arbeiten?
Sorry, aber MySQL ist überbewerted, gibt besseres für lau. Und wehe man verwendet MyISAM Tabellen, dann hat man genaugenommen keine relationale DB mehr, inkl. aller Konsequenzen.

Aber egal welche DB ich im enteffekt einsetze, das Problem bleibt das Gleiche. Ich muß mich entweder auf den User verlassen, daß er weiß ob er diese DB schon installiert hat (selber oder durch irgendein Packet (XAMPP)) oder ich versuche es festzustellen ob schon eine Installation vorliegt und frage dann den Benutzer ob dieser DB-Server verwendet werden soll oder ob ein neuer installiert werden soll.
Eben nicht, mit JavaDB/Derby, H2, HSQLDB braucht man keine vorhandene DB Installation und damit hat man die Probleme mit denen du dich rumschlägst eben nicht mehr.
 
M

modestiny

Mitglied
ok maki

ich will Dir da gar nicht wiedersprechen (in keinem Punkt), ich lasse mich auch gerne von anderen DB überzeugen.

Ich war halt nur der Annahme, das MySQL ne gute Wahl wäre, da, und ich glaube da kannst auch Du mir nicht wiedersprechen, MySQL bei vielen Web-Service-Anbietern als DB eingesetzt wird. Die meisten PHP und Java Beispiele, die mit Datenbank-Programmierung zu tun haben, sich auf MySQL stützen.

Gut wie dem auch sei.

Wie sieht es denn mit der Performanz der unterschiedlichen DB's (einschließlich MySQL) aus? Wenn ich das im Inet richtig gelesen habe ist H2 z.B. in Java geschrieben. Gut ist ja auch nicht strafbar. Aber es ist doch dann wohl zu erwarten, das eine DB, die in Java geschrieben wurde, nicht so schnell arbeitet wie eine die plattformabhängig in einer Hochsprache wie z.B. C/C++ geschrieben wurde.

Wäre schön, wenn ich zu den DB's, die so zur Verfügung stehen, mal ein paar Meinungen von Euch hören könnte bezüglich Performanz, Plattformunterstützung, Lizenzform.

Danke
 
M

mvitz

Top Contributor
H2 Database Engine

da gibts ne Übersicht über die Geschwindigkeiten. Inwiefern die Aussagekräftig ist, kann ich dir nicht sagen.

Edit: Kommt auch auf die Menge/Größe der Daten, Anzahl der Zugriffe und Anzahl der User an, die mit der Datenbank arbeiten sollen.
 
R

raiL

Top Contributor
Wenn du sowieso mit Java arbeitest kannst du eine Java DB im Embedded Modus laufen lassen und dann fliegt der ganze Netzwerkoverhead schonmal raus (ja den gibts auch auf locahost). Und was du meinst sind keine Web-Service anbieter sondern Hoster. Webservice ? Wikipedia
 
S

Spacerat

Gast
Ist die Frage eigentlich darauf abgezielt welche DB verwendet werden soll, oder ging es nicht doch eher darum, ob der Service der letztendlich verwendeten DB schon vorhanden ist?
Code:
Runtime rt = Runtime.getRuntime();
Process p = rt.exec("sc query mysql");
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
boolean service = true;
while((line = in.readLine()) != null) {
  line = line.toLowerCase();
  if(line.contains("openservice failed")) {
    service = false;
    break;
  }
}
System.out.println("Service " + ((service)? "installed" : "not installed"));
Das arbeitet wunderbar auf NT basierenden Windows Rechnern. Für Linux und andere Systeme gibt's mit Sicherheit auch solche Möglichkeiten. Und wo ich schon dabei bin... eine weitere Möglichkeit wäre, den User nach der Portnummer des Dienstes zu fragen. Ein DAU würde zu 99% 1. hier keinen angeben und 2. dann auch den Standardport nicht verändert haben. Diesen Port kann man dann auch ganz System-Unabhängig in Java abfragen.
 
ARadauer

ARadauer

Top Contributor
Genau dann, nämlich bei großen Datenmengen nimmt man keine MySQL DB.[/qutoe]
von welchen datenmengen reden wir hier?
ich benutze private mysql tabellen mit über 5 mio datensätze und hab zugriffszeiten im >5ms Bereich... was will man mehr
 
M

mvitz

Top Contributor
Ist die Frage eigentlich darauf abgezielt welche DB verwendet werden soll, oder ging es nicht doch eher darum, ob der Service der letztendlich verwendeten DB schon vorhanden ist?
Code:
Runtime rt = Runtime.getRuntime();
Process p = rt.exec("sc query mysql");
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
boolean service = true;
while((line = in.readLine()) != null) {
  line = line.toLowerCase();
  if(line.contains("openservice failed")) {
    service = false;
    break;
  }
}
System.out.println("Service " + ((service)? "installed" : "not installed"));
Das arbeitet wunderbar auf NT basierenden Windows Rechnern. Für Linux und andere Systeme gibt's mit Sicherheit auch solche Möglichkeiten. Und wo ich schon dabei bin... eine weitere Möglichkeit wäre, den User nach der Portnummer des Dienstes zu fragen. Ein DAU würde zu 99% 1. hier keinen angeben und 2. dann auch den Standardport nicht verändert haben. Diesen Port kann man dann auch ganz System-Unabhängig in Java abfragen.

Funktioniert dann aber auch nur, wenn die DB aktuell läuft oder?
 
S

Spacerat

Gast
nein... geht auch wenn der Dienst nicht gestartet wurde. Das mit "sc" zumindest. Bei der Portabfrage wird allerdings nur ein laufender Dienst erkannt.
 
E

eliot

Bekanntes Mitglied
Hallo,

wir hatten ein ganz ähnliches Problem, nur dass wir psql nutzen und auch mit
ausliefern.

Bei Installation (Enterprise) einfach abfragen, ob eine DB schon vorhanden ist
und den User die Angaben machen lassen (setzt voraus, dass db läuft).

Einzalplatz-Lösung (Dau Modus): DB mitinstallieren (binry, ohne installer),
und sicherstelle, dass der Port frei ist. Beim Start der App die DB starten,
beim Beenden der App, DB beenden. Das war's

BTW Mysql gibts auch als Bin Archiv

regards
eliot
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M SQL-Developer Installation: Unable to launch the Java Virtual Machine Located at path msvcr100.dll Allgemeine Java-Themen 1
W Javac nicht bei Installation installiert Allgemeine Java-Themen 9
S Java Installation Fehlercode 1603 Allgemeine Java-Themen 9
E Programm auf Installation prüfen Allgemeine Java-Themen 1
G Ant Probleme bei einer Installation die Apache ant+ivy verwendet Allgemeine Java-Themen 14
F Java Error, bei Installation, Start und dem Control Panal Allgemeine Java-Themen 8
S Probleme mit JAVA-Installation Allgemeine Java-Themen 3
S comm API dowload ? und Installation? Allgemeine Java-Themen 4
P Installation beim Kunden Allgemeine Java-Themen 7
A Java ohne Java-Installation? Allgemeine Java-Themen 5
S Java-Installation unter Sun OS Allgemeine Java-Themen 3
S Java offline Installation Allgemeine Java-Themen 6
A Installation von Java ME Programm auf Sony Ericsson Handy Allgemeine Java-Themen 3
D installation/inbetriebnahme JAI Allgemeine Java-Themen 3
K Programm-Installation Allgemeine Java-Themen 5
G ausführbares JavaProjekt ohne Installation Allgemeine Java-Themen 13
G Installation von Java scheitert Allgemeine Java-Themen 6
V Java-Programm vom USB-Stick ohne Runtime-Installation Allgemeine Java-Themen 18
S Silent Installation von JRE 1.6 unter Vista Allgemeine Java-Themen 1
R Erkennung der Java-Installation im Batch-File Allgemeine Java-Themen 2
S Probleme bei der Installation Allgemeine Java-Themen 2
L Java ohne Installation benutzen? Allgemeine Java-Themen 2
@ Installation von Java 6 Allgemeine Java-Themen 8
K JDK Installation - JRE ebenfalls? Allgemeine Java-Themen 3
K Jakarta JMeter Installation durchführen Allgemeine Java-Themen 1
B Installation neuer Packages Allgemeine Java-Themen 8
A Nach JBuilder Installation - startet nicht Allgemeine Java-Themen 3
R Neustart / Fehler bei Java-Installation Allgemeine Java-Themen 3
T Fehler bei Java-Installation Allgemeine Java-Themen 2
G Installation diverser Bibliotheken in Eclipse. Allgemeine Java-Themen 3
scitex Case statt if else Abfragen?! Allgemeine Java-Themen 8
O Datentypen Wie kann ich den Typ einer ArrayList abfragen ? Allgemeine Java-Themen 7
VfL_Freak KeyEvent.VK_TAB im KeyListener abfragen Allgemeine Java-Themen 13
cool_brivk24 Variablen abfragen von Boolean von anderer Klasse Allgemeine Java-Themen 12
B Generelle Frage bei einer Webanwendung / Reduzierung von DB Abfragen Allgemeine Java-Themen 1
E Status eines USB Mikrofon abfragen Allgemeine Java-Themen 2
D TextBox Abfragen Allgemeine Java-Themen 2
kodela aktuelle Position des Hauptfensters abfragen Allgemeine Java-Themen 12
J Tonhöhe & Lautstärke abfragen? Allgemeine Java-Themen 3
K USB infos unter Linux abfragen? Allgemeine Java-Themen 2
P Threads Parallelisierte DB-Abfragen mit variabler Anzahl an Threads Allgemeine Java-Themen 4
M Variableninhalte dynamisch abfragen Allgemeine Java-Themen 12
A Erste Schritte If Abfragen + Scanner Allgemeine Java-Themen 7
Z AD Abfragen mit Java! Allgemeine Java-Themen 3
L Abfragen ob Threads fertig Allgemeine Java-Themen 3
chuxXo BasicPlayer - Beendigung Abfragen (Allgemein) Allgemeine Java-Themen 21
P Name der Parent Klasse abfragen Allgemeine Java-Themen 8
H In windowClosing() abfragen, ob STRG gedrückt wurde Allgemeine Java-Themen 8
M Aktuelle Systemzeit und Datum abfragen Allgemeine Java-Themen 2
M CapsLock abfragen wenn Fenster wieder aktiviert wird Allgemeine Java-Themen 5
P Variablen Werte der Objektvariablen mit getFields() abfragen Allgemeine Java-Themen 2
P Klassen Template-Klasse für Datenbank-Abfragen erstellen Allgemeine Java-Themen 2
J XML Inhalt von Web abfragen Allgemeine Java-Themen 6
D Von mehreren Objekten eine Eigenschaft abfragen Allgemeine Java-Themen 11
S HTTP Filmgenre aus dem Internet abfragen! Allgemeine Java-Themen 6
M Zahl aktiver Threads einer Gruppe verlässlich abfragen Allgemeine Java-Themen 3
R Was ist hier falsch? Abfragen Allgemeine Java-Themen 3
E Unique Ids abfragen? Allgemeine Java-Themen 5
Airwolf89 Wahrheitstabelle abfragen Allgemeine Java-Themen 3
M ständiges abfragen einer .txt Allgemeine Java-Themen 2
S Zeitserver Abfragen und in Date speichern Allgemeine Java-Themen 5
V Hostname abfragen gelingt nicht immer Allgemeine Java-Themen 2
H Windows abfragen Allgemeine Java-Themen 2
M Enter Taste in Konsole abfragen Allgemeine Java-Themen 2
N IP-Adresse Eingabe abfragen? Allgemeine Java-Themen 4
J Mit Scanner-Klasse eine Datei zeilenweise einlesen und nur bestimmte Zeichen abfragen Allgemeine Java-Themen 11
C Batchdatei ausführen und Ergebnisse abfragen Allgemeine Java-Themen 8
M Vermeiden von instanceof Abfragen Allgemeine Java-Themen 3
Z Wetterdaten abfragen Allgemeine Java-Themen 5
J Zweiter Prozess der alle x Sekunden etwas abfragen soll Allgemeine Java-Themen 2
R Zugriffsrechte abfragen Allgemeine Java-Themen 2
R boolean im Bean abfragen Allgemeine Java-Themen 18
G Checkboxen abfragen,Auswahl sichern, JTable laden Allgemeine Java-Themen 2
G Mausbewegung abfragen? Allgemeine Java-Themen 2
C Binärbereich einer Variablen abfragen Allgemeine Java-Themen 8
S Datenbank Abfragen mit großen Datenmengen Allgemeine Java-Themen 22
H Mit Java Desktop abmessungen height/width abfragen Allgemeine Java-Themen 20
H Sekunden messen wie lange h.ibernate/jdbc abfragen brauchen Allgemeine Java-Themen 7
G Abfragen des types Allgemeine Java-Themen 7
I Am System angemeldeten Benutzer abfragen Allgemeine Java-Themen 11
P verfügbare COM Schnitstellen abfragen Allgemeine Java-Themen 4
P <null> in einer DB abfragen Allgemeine Java-Themen 4
S Wie Carriage Return Line Feed abfragen. Allgemeine Java-Themen 6
T Hibernate Criteria Queries - Abfragen von Collection-Members Allgemeine Java-Themen 2
E Viele if Abfragen auf viele Strings --> Alternative zu if Allgemeine Java-Themen 8
T Tastatur global abfragen Allgemeine Java-Themen 2
M Map gezielt abfragen? Allgemeine Java-Themen 5
MQue Vereinfachung von if- Abfragen Allgemeine Java-Themen 21
Chris_1980 Mausbewegung abfragen Allgemeine Java-Themen 4
E Events von inneren Klasse abfragen Allgemeine Java-Themen 7
B jre version in der html-datei für ein applet abfragen Allgemeine Java-Themen 5
S Prozessorauslastung abfragen Allgemeine Java-Themen 2
C Tastatureingabe in einem Frame abfragen Allgemeine Java-Themen 2
R Thread.sleep - abfragen Allgemeine Java-Themen 4
S Name der ausführenden jar-Datei abfragen Allgemeine Java-Themen 11
S Abfragen der Komponente bei actionperformed Allgemeine Java-Themen 2
A Dateistatus abfragen und Datei löschen sobald kein Zugriff Allgemeine Java-Themen 7
G JavaMail - Message vom Server, wie abfragen? Allgemeine Java-Themen 2
J Name des aktuell aktiven Windows-Fensters abfragen? Allgemeine Java-Themen 4
T Bittorrent TRACKER abfragen mit JAVA Allgemeine Java-Themen 4

Ähnliche Java Themen

Anzeige

Neue Themen


Oben