###前提・実現したいこと
JavaからJDBCドライバ(sqlite3.20Driver)を用いてsqlite3.20上のデータベースを触ろうとしています。接続は完了し、結果も返ってきているのですがなぜかデータベース上のデータが更新されません。
DBviererを用いても、やはり更新されていないようです。
何が原因かわかりません。
もしよろしければ、DBに結果が反映されない原因を推測していただきたいです。
ちなみに、コマンドライン上で行ったものはデータが更新されています。
###該当のソースコード
package test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class testJDBC
{
public static void main(String[] args) throws ClassNotFoundException
{
// load the sqlite-JDBC driver using the current class loader
Class.forName("org.sqlite.JDBC");
Connection connection = null; Statement statement=null; try { // create a database connection connection = DriverManager.getConnection("jdbc:sqlite:test.sqlite"); connection.setAutoCommit(false); statement = connection.createStatement(); statement.setQueryTimeout(30); // set timeout to 30 sec. statement.executeUpdate("drop table if exists person"); statement.executeUpdate("create table person (id integer, name string)"); statement.executeUpdate("insert into person values(1, 'leo')"); statement.executeUpdate("insert into person values(2, 'yui')"); statement.executeUpdate("insert into person values(3, 'kyoko')"); ResultSet rs = statement.executeQuery("select * from person"); while(rs.next()) { // read the result set System.out.println("name = " + rs.getString("name")); System.out.println("id = " + rs.getInt("id")); } connection.commit(); } catch(SQLException e) { // if the error message is "out of memory", // it probably means no database file is found System.err.println(e.getMessage()); } finally { try { if(connection != null) connection.close(); } catch(SQLException e) { // connection close failed. System.err.println(e); } }
}
}
###試したこと
Autocommitを変更してみる。
###補足情報(言語/FW/ツール等のバージョンなど)
sqlite3.20
Java
Eclipse 4.70
当方プログラム経験はかなり浅いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/02 11:57