Ich würds statt mit Code-Vandalismus mal mit RTFM probieren.. Du kannst dir doch nicht irgendwelche Befehle ausdenken und dich dann wundern, dass sie nicht funktionieren..
Im Netz, im Forum, in unseren FAQs dürftest du totgeschmissenw erden mit JDBC-Tutorials und Codefetzen.
Besten Dank für Eure Antworten, leider hat es nicht funktioniert. Hier nun mein gesamter Code:
Code:
package ch.essec.sherin;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
// javac HelloJDBC.java
// java -classpath /home/marnitz/ojdbc14.jar:/home/marnitz/ HelloJDBC
// jdbc:oracle:thin:@deanston.cs.uni-magdeburg.de:1521:tix
public class DatabaseRoom {
private static String query = null; // Anfragestring
private static Connection connection = null; //Verbindung zur Datenbank
private String description;
/**
* Oeffnen einer Datenbankverbindung
*/
public void initDBConnection(){
String url ="jdbc:mysql://localhost/hotelreservationssystem"; //URL zur Datenbank
String username = "root"; //Nutzername
String password = ""; //Passwort
// Holen des SQL-Treibers
try {
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException e1) {
e1.printStackTrace();
System.exit(1);
}
//Erstellung einer Verbindung zur Datenbank
try {
connection = DriverManager.getConnection(url, username, password);
//Ausfuehren einer DB-Anfrage
executeQuery();
//Schliessen der DB-Verbindung
connection.close();
}catch (SQLException e) {
e.printStackTrace();
}
}
/**
* Ausfuehrung der DB-Anfrage
*/
public void executeQuery(){
try {
/**
* Hier wird die DB-Anfrage gesetzt!!!!
*/
Room room = new Room();
description = room.getRoomDescription();
query = "insert into room VALUES (8, 150, 'Doppelzimmer', 0, " + description + ")";
//query = "select * from cocktail";
//Erzeugung eines Statements
Statement statement = connection.createStatement();
//Holen Ergebnismenge der Anfrage
statement.executeUpdate(query);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Übrigens wird mir folgende Fehlermeldung ausgegeben:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Zimmer)' at line 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3118)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1313)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1232)
at ch.essec.sherin.DatabaseRoom.executeQuery(DatabaseRoom.java:66)
at ch.essec.sherin.DatabaseRoom.initDBConnection(DatabaseRoom.java:41)
at ch.essec.sherin.RoomErfassung.main(RoomErfassung.java:10)
com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations allowed after connection closed.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:888)
at com.mysql.jdbc.Connection.checkClosed(Connection.java:1903)
at com.mysql.jdbc.Connection.createStatement(Connection.java:2962)
at com.mysql.jdbc.Connection.createStatement(Connection.java:2944)
at ch.essec.sherin.DatabaseRoom.executeQuery(DatabaseRoom.java:64)
at ch.essec.sherin.RoomErfassung.main(RoomErfassung.java:11)
Auch wenn ich das Manual anschaue, finde ich keinen Fehler...was mache ich bloss falsch?
dein erster Fehler ist schon mal dir weder die Tabelle in der Datenbank noch die Anfrage anzuschauen,
hinter jeder Query, die noch nicht sicher funktioniert gehört ein
System.out.println(query);
ich nehme mal an die Query lautet
"insert into room VALUES (8, 150, 'Doppelzimmer', 0, Zimmer)"
und in einem solchen Fall ist dein gesamtes Programm egal,
denn diese Query würde auch nicht funktionieren, wenn du sie direkt eintippen würdest, statt per Variable,
wie man Strings eingibt weißt du doch anscheinend:
da müssen einfache Anführungsstriche rum wie bei 'Doppelzimmer'