我不知道我应该怎么做“不支持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。
答案 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