java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
atcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)
atcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:897)
atcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:886)
atcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:860)
atcom.mysql.jdbc.StatementImpl.checkForDml(StatementImpl.java:463)
atcom.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1324)
atcom.test.database.DBManager.query(DBManager.java:81)
今天跑测试代码的时候遇到了这个问题,
网上搜索的时候,看到了这个博客↓
http://blog.csdn.net/cherishme1988/article/details/7399225
于是我就试了一下,不过我没有execute这个函数,我的DBManager里面定义的一个是update,一个是query函数,
之前也没有注意,两个函数内容写的比较相近:
public ResultSet query(String sql) {
ResultSet rst = null;
Statement stmt = getStatement();
System.out.println("stmt = " + stmt);
try {
rst = stmt.executeQuery(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rst;
}
public int update(String sql) {
Statement stmt = getStatement();
int result = 0;
try {
result = stmt.executeUpdate(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
就没注意是用了哪个,反正都是执行我传入的sql,
今天报错了才发现,其实是因为这两个函数的返回值不同,一个是返回了int,一个是返回了ResultSet,用的时候不一样,还是有区别的,
我把我的 db.query(sql)改成了 db.update(sql)之后,果然就不报错了~
以后编程多长个心眼儿啊~~~