1

我不知道我应该如何处理“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。

4

2 回答 2

1

改变

result = preStatement.executeQuery(sql);

result = preStatement.executeQuery();

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

于 2013-07-13T19:26:24.487 回答
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);

执行和执行更新的区别:

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

executeUpdate() 执行此 PreparedStatement 对象中的 SQL 语句,该语句必须是 SQL 数据操作语言 (DML) 语句,例如 INSERT、UPDATE 或 DELETE;或不返回任何内容的 SQL 语句,例如 DDL 语句。

有关更多信息,请阅读javadocs

于 2013-06-18T05:07:55.597 回答