Beim Versuch, in einer lokalen Datenbank mit einer Dateieigenschaft mithilfe von JDBC und Apache Derby zu verbinden, erhalte ich die folgende Ausnahme:zu JDBC Anschluss
java.sql.SQLException: Database 'Mobsters' not found.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.handleDBNotFound(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source)
at org.apache.derby.jdbc.InternalDriver$1.run(Unknown Source)
at org.apache.derby.jdbc.InternalDriver$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.derby.jdbc.InternalDriver.getNewEmbedConnection(Unknown Source)
at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:208)
at com.adrian.mobsters.gui.controllers.MainController.getDBConnection(MainController.java:401)
at com.adrian.mobsters.gui.controllers.MainController$2.call(MainController.java:388)
at com.adrian.mobsters.gui.controllers.MainController$2.call(MainController.java:376)
at javafx.concurrent.Task$TaskCallable.call(Task.java:1423)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.lang.Thread.run(Thread.java:748)
Caused by: ERROR XJ004: Database 'Mobsters' not found.
at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
at org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(Unknown Source)
... 22 more
ich eine Eigenschaft bin mit file:
create=true
databaseName=Mobsters
user=myuser
password=mypw!
shutdown=true
Ich weiß, dass die Datenbank nicht existiert. Sollte dies nicht die Datenbank erstellen? Dies ist eine eingebettete Anwendungsdatenbank, die erstellt werden sollte, wenn sie nicht existiert.
Code Setup Datenbankverbindung verwendet:
public void initializeDB() {
Task<Void> task = new Task() {
@Override
protected Void call() throws Exception {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
Properties properties = loadDBProperties();
// Decide on the db system directory: <userhome>/.addressbook/
String userHomeDir = System.getProperty("user.home", ".");
String systemDir = userHomeDir + "/.mobsters";
new File(systemDir).mkdir();
// Set the db system directory.
System.setProperty("derby.system.home", systemDir);
getDBConnection(properties);
MobsterDBUtils.createMobsterTable(getDBConnection());
return null;
}
};
new Thread(task).start();
}
public void getDBConnection(Properties properties) {
String url = "jdbc:derby:";
try {
connection.set(DriverManager.getConnection(url, properties));
} catch (SQLException ex) {
Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, null, ex);
}
}
public Properties loadDBProperties() {
Properties prop = new Properties();
InputStream is = MainController.class.getResourceAsStream("/derby/DerbyConfig.properties");
try {
prop.load(is);
} catch (IOException ex) {
Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, null, ex);
}
return prop;
}
Soweit ich weiß, ist die Eigenschaften-Datei richtig importiert werden:
(dies ist nicht vertrauliche Login-Daten)
FYI. Keine der Antworten sind Antworten, sie sollten gelöscht werden. Gangster! = Gangster. Versuchen Sie, denselben Fall zu verwenden. Wenn "Mafiosi" auf irgendeinen Speicherort abgebildet werden, könnte es die Groß-/Kleinschreibung beachten. Wenn das funktioniert, werde ich es als Antwort posten – efekctive
@efekctive das Problem war shutdown = true sollte nur hinzugefügt werden, wenn die Verbindung geschlossen wird. Dies könnte jedoch die Antwort auf mein anderes Problem sein: Die Datenbank speichert nicht, initialisiert aber. –