2011-08-02 28 views
0

我有一个问题,当我试图将数据插入到HSQLDB使用Java类: 的代码是:Java和HSQLDB接入到问题

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.text.ParseException; 




    public class Main { 
     public static void main(String[] args) throws ParseException { 
      try { 
       Connection con = null; 
       String url = "jdbc:hsqldb:file:../db/db"; 
       Class.forName("org.hsqldb.jdbcDriver"); 
       con = DriverManager.getConnection(url, "sa", null); 
       Statement statement = con.createStatement(); 
       Statement stm1 = con.createStatement(); 

       statement.executeUpdate("INSERT INTO \"vacDeGroupe\"(\"type\") VALUES ('test')"); 
       ResultSet rs = stm1.executeQuery("SELECT * FROM \"vacDeGroupe\""); 
       while(rs.next()) { 
        System.out.println(rs.getString("type")); 
       } 

       stm1.close(); 
       statement.close(); 
       con.close(); 

      } 
      catch(ClassNotFoundException e) { 

      } catch (SQLException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 

     } 

如果我exec的这段代码我有我的项目+新的我有INSERT INTO我的数据库。 但是,如果我只执行executeQuery()后,我插入的行不在我的数据库中。 我检查过,autoCommit是正确的。

......我不明白发生了什么事。

(我是法国人,所以我很抱歉,如果有一定的英文错误)

回答

1

executeUpdate的INSERT,不executeQuery。并且它不返回ResultSet;它是受影响的行数。

+0

谢谢我已经改变了这一点,但这只是一个错误,在我的测试过程中介绍了为什么它不起作用。 问题仍然是:当我执行“插入到”和executeQuery它的工作,我可以阅读我插入的新行,但是当(执行代码插入行后)我只执行executeQuery我没有我之前插入的所有表格。 所以我认为在插入表格时存在问题,但我不明白在哪里以及为什么...... 我希望你能理解这个问题。 – Firebayll

+0

OK,finaly我找到了答案在其他职位: 我已经用两个选项启动了连接: hsqldb.write_delay =假 关机=真 所以我加入他们在我的字符串URL: 字符串url =“jdbc:hsqldb:file:../ db/db; hsqldb.write_delay = false; shutdown = true”; 它的工作原理! – Firebayll