nee*_*ang 4 java sql sql-server oracle
我有以下查询,我使用java PreparedStatement执行:
String dml=insert into users(name, addr, city, sex, dob) values(?,?,?,?,?);
PreparedStatement stmt = conn.prepareStatement(dml);
stmt.setString(1,"abcd");
stmt.setString(2,"def");
stmt.setString(3,"ghij");
stmt.setString(4,"m");
stmt.setString(5,"1-Jan-1987");
stmt.executeQuery();
Run Code Online (Sandbox Code Playgroud)
它在数据库是Oracle时成功执行,但是当数据库是Microsoft SQL时,它会抛出异常"java.sql.SQLException: The executeQuery method must return a result set".有人可以告诉我这里有什么问题.为什么同样的查询在oracle中成功执行但不在microsft sql中执行?
Pre*_*gha 13
答案在消息中--ExecuteQuery需要一个结果集.请改用executeUpdate.
从以上链接:
boolean execute()在此PreparedStatement对象中执行SQL语句,该对象可以是任何类型的SQL语句.
ResultSet executeQuery()在此PreparedStatement对象中执行SQL查询,并返回查询生成的ResultSet对象.
int executeUpdate() 执行此PreparedStatement对象中的SQL语句,该语句必须是SQL INSERT,UPDATE或DELETE语句; 或者不返回任何内容的SQL语句,例如DDL语句.
它在oracle上工作的事实可能只是你发现不能依赖的副作用.