メモリ内のsqliteデータベースにテーブルを作成しようとしています。私はgetConnection
メソッドでデータベースへの接続を初期化するテーブルを作成するためにcreateTable
というメソッドを持っています。私は012を行うとメモリ内のsqliteデータベースにエラーメッセージなしでテーブルを作成できません
public void insert() {
try {
final Connection connection = getConnection();
final Statement statement = connection.createStatement();
statement.executeUpdate(
"INSERT INTO videos (title, path, category) VALUES ('test title', 'test path', 'test category');");
statement.close();
connection.close();
} catch (final SQLException e) {
LOGGER.warn("Failed to insert.", e);
}
}
:
private void createTable() {
try {
final Connection connection = getConnection();
final Statement statement = connection.createStatement();
statement.execute(
"CREATE TABLE videos (id INTEGER PRIMARY KEY, title VARCHAR(255), description TEXT, path TEXT, category VARCHAR(255), published INTEGER DEFAULT 0, created TIMESTAMP DEFAULT CURRENT_TIMESTAMP);");
statement.close();
connection.close();
} catch (final SQLException e) {
LOGGER.warn("Failed to create table.", e);
}
}
のgetConnection
private static Connection getConnection() {
try {
Class.forName("org.sqlite.JDBC");
return DriverManager.getConnection("jdbc:sqlite:");
} catch (final Exception e) {
LOGGER.warn("Failed to get connection.", e);
throw new RuntimeException(e);
}
}
私はシンプルinsert
方法を書いたデータベースをテストするには、次のcreateTableが
this.createTable(); this.insert();
は、私は次のエラーを得た:sqliteの-JDBCさんがV
3.20.0
:私は
org.xerialを使用しています接続の場合 2017-09-17 22:38:02 WARN Database:128 - Failed to insert.
org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (no such table: videos)
at org.sqlite.core.DB.newSQLException(DB.java:909)
at org.sqlite.core.DB.newSQLException(DB.java:921)
at org.sqlite.core.DB.throwex(DB.java:886)
at org.sqlite.core.NativeDB._exec_utf8(Native Method)
at org.sqlite.core.NativeDB._exec(NativeDB.java:87)
at org.sqlite.jdbc3.JDBC3Statement.executeUpdate(JDBC3Statement.java:116)...
。
テーブルが作成されない理由はありますか?私は例外や何かを見ていない。 SQLFiddle for the example aboveは問題ありません。私が正しくthe documentationを読めば
同じデータベース接続を使用する場合は機能しますか? – Thilo