ich soll ein Referat über Java und Datenbanken halten. Meine Entwicklungsumgebung ist Eclipse. Ich habe auch alles soweit hinbekommen.
Ich habe mich mit einer bereits existierenden Datenbank verbunden und wollte anschließend eine Datenbank erzeugen.
Die Datenbank wird auch erzeugt, aber nach dem erstellen schmeißt er eine Exception.
Nicht wirklich. Das Semikolon wird in interaktiven Verbindungen benötigt, um das Ende des Befehls anzuzeigen. Bei nicht-interaktiven Verbindungen wie aus einer Programmiersprache heraus ist es grübeleigentlich unnötig.
Zusätzlich startet das Semikolon einen weiteren Befehl - und da dieser leer ist …
CREATE DATABASE liefert nunmal kein Ergebnis - in SQL/JDBC-Deutsch → keine Referenz auf ResultSet daher ist es auch nicht erlaubt (und auch nicht sinnvoll) resultSet = statement.executeQuery(“…”) zu verwenden, da executeQuery(…) so spezifizert ist, dass es IMMER ein ResultSet zu liefern hat, oder im Fehlerfall mit einer SQLException verlassen wird.
Auch wenn dein 2. Beispiel funktioniert, ist es dennoch nicht besonders sinnvoll executeUpdate() zu verwenden. Du koenntest ja mal die Handvoll Methoden anschauen die die java.sql.Statement bietet - sind nicht viel. Wenn du diese deine “Erkenntnis” auf andere DBMS anwendest, dann koenntest du auf die Nase fallen. Es gibt ja auch noch andere schöne DBMS wie MySQL und MSSQL …
Returns: a ResultSet object that contains the data produced by the given query; never null Throws: SQLException if a database access error occurs, this method is called on a
closed Statement or the given SQL statement produces anything other
than a single ResultSet object
Wahrscheinlich kennst du Eclipse auch noch nicht lange ? Da gibt es ein View das nennt sich JavaDoc … womit du dir die Quellcode-Documentation ansehen kannst.
Die Klasse (das Interface) java.sql.Statement bietet noch einige andere Methoden um Statements abzusetzen. Z.B kannst du java.sql.Statement.execute(“…”) verwenden dessen Rückgabewert (boolean) du in diesem Fall (CREATE DATABASE) auch ignorieren darfst.
Das ENCODING ist in dem Beispiel eigentlich völlig egal. Es handelt sich hierbei ja nur um ein Beispiel. Habe die Ehrenvolle Aufgabe bekommen, einen Vortrag über Java und Datenbanken zu halten. Ich habe meine Beispiele nochmals überarbeitet. Ich denke, ich habe jetzt dank eurer Hilfe ganz gut begriffen, wie ich so etwas vernünftig umsetze. Ich habe die Beispiele ja mit Absicht so einfach gehalten, da die Zuhörer des Vortrages Teilweise noch nie was mit SQL zu tun hatten. Das kommt erst im 3. Semester.
Es soll ja auch nur einen kleinen Einblick geben, wie SQL funktioniert und wie man mit Java auf eine PostgreSQL DB zugreifen könnte.
Ich beschäftige mich seid ~ 1/2 Jahr mit Eclipse und Java.
EDIT: Ich habe vor 2 Jahren mit PostgreSQL und C++ (Borland Builder) gearbeitet. Da konnte man sich das aber alles zusammen klicken.
Also diese Routine tuts für mich für gewöhnlich,ist ein Teil aus einem Programm
von mir das auch User, Tablespaces, Rechte, Tabellen u.s.w anlegt,vielleicht hilft es
Dir weiter.
****// Legt Postgres DB an und liefert bei Erfolg true zurück.public static boolean createdb(String db_name) throws Exception {
Hmm, also wenn Du das nicht für Dich selber brauchst ist das eigentlich
keine gute Idee solche “properitären” Sachen an SQL-Frischlinge weiterzugeben.
Die Datenbanken verhalten sich da ganz unterschiedlich und vielleicht
gehen die dann von der Denke aus, dass alles so wie bei Postgres
läuft.
Bei Oracle dauert z.B das anlegen einer neuen DB locker schon
mal 20 bis 30 Min (die der Create Database Prozess braucht) und
dann legt das Teil eine 400 MBytes “leere” Startdatenbank mit
nichts drin an (sowas solltest Du denen sagen).