为什么返回sqlite异常?

时间:2013-06-18 05:02:38

标签: java eclipse sqlite

我不知道我应该怎么做“不支持PreparedStatment”例外。

我的代码是

connection = connectToDB();
        print("Connection Success");

        String sql = "Create Table test(id Integer primary key not null," +
                 "name Varchar(32)," +
                 "age Integer)";
        Statement statement = connection.createStatement();
        statement.execute(sql);
        print("Created Table");

        sql = "Insert into test Values(1, 'Mr.Maeda', 23)";
        statement.execute(sql);
        print("Inserted Data");

        ResultSet result;
        sql = "select * from test";
        PreparedStatement preStatement = connection.prepareStatement("select * from test where age = ?");
        preStatement.setString(1, "23");
        result = preStatement.executeQuery(sql);
        while(result.next()){
            print(result.getString(result.getRow()));               
        }

我正在使用eclipse&的java。

2 个答案:

答案 0 :(得分:1)

更改

result = preStatement.executeQuery(sql);

result = preStatement.executeQuery();

PreparedStatement.executeQuery()不会将查询字符串作为参数,因为它已经准备好了。

答案 1 :(得分:0)

你需要在调用记录时调用executeUpdate()而不是执行:

 sql = "Insert into test Values(1, 'Mr.Maeda', 23)";
 statement.executeUpdate(sql);

而不是

 sql = "Insert into test Values(1, 'Mr.Maeda', 23)";
 statement.execute(sql);

execute和executeUpdate之间的区别:

  

boolean execute()在此PreparedStatement中执行SQL语句   object,可以是任何类型的SQL语句。

     

<强>的executeUpdate()             执行此PreparedStatement对象中的SQL语句,该对象必须是SQL数据操作语言(DML)语句,例如INSERT,UPDATE或DELETE;或者什么都不返回的SQL语句,例如DDL语句。

有关详细信息,请参阅javadocs