2016-04-25 94 views
0

我有一个包含用户信息的数据库,并且我希望在任何给定时间都使用公共静态方法来返回数据库整数,而不必为每个整数都做出空白,但它会给出我这个错误:“未通过SQLite JDBC驱动程序实现”

0 
java.sql.SQLException: not implemented by SQLite JDBC driver 
    at org.sqlite.jdbc3.JDBC3PreparedStatement.unused(JDBC3PreparedStatement.java:466) 
    at org.sqlite.jdbc3.JDBC3PreparedStatement.executeQuery(JDBC3PreparedStatement.java:506) 
    at dysanix.main.checkUserColumnInt(main.java:726) 
    at dysanix.main.main(main.java:50) 

这是我的代码:

public static int checkUserColumnInt(String column, String user) { 
     try { 
      Connection connection = DriverManager.getConnection("jdbc:sqlite:Database.db"); 
      String query = "Select ? from userSettings WHERE user = ?"; 
      PreparedStatement statement = connection.prepareStatement(query); 

      statement.setString(1, column); 
      statement.setString(2, user); 

      ResultSet result = statement.executeQuery(query); 

      result.next(); 
      int columnResult = result.getInt(column); 
      return columnResult; 
     } catch (Exception e) { 
      e.printStackTrace(); 
      return 0; 
     } 
    } 

是否有人明白我在做什么错?我尝试了谷歌的事情,但改变代码绕着我从一个错误移到下一个......所以我现在不再确定这一点。

在此先感谢!

编辑:我正在运行的JDBC驱动程序的sqlite-JDBC-3.8.11.2.jar

+0

您正在使用哪个SQLite驱动程序,以及哪个版本? – Kai

+0

@凯啊,忘了提! “sqlite的-JDBC-3.8.11.2.jar”。现在更新问题,谢谢! –

+0

请注意,在您的catch块中,>从未执行,因为。你尝试调试它吗?第一行之后是否有有效的连接对象? –

回答

4

PreparedStatement.executeQuery(String sql)未实现。我想你只想打电话给executeQuery()。该查询已由PreparedStatement定义。

+0

谢谢!你太聪明了!当移动到PreparedStatement时,我忘了删除它!然而,现在我得到一个新的错误...我正在前移动到PrepareStatement(ResultSet关闭)之前得到一个 - 更新我的问题 –

+0

哦大声笑,我已经更新了这一个现在..我在我的混乱努力保持这个网站的清洁..嘿。我会用'while(result.next()){}'循环来做到这一点吗?因为我已经试过了,它给了我同样的错误。 :(唯一的代码在我的主要是:'Class.forName(“org.sqlite.JDBC”); System.out.println(checkUserColumnInt(“coins”,lastUser));' –

+0

新问题...我回滚这个问题让你保持意识。 – Kai