【发布时间】:2018-01-03 20:13:31
【问题描述】:
我无法通过查询获得行数。我已经为此使用了 JDBC 连接。但是,它没有显示任何错误,而是停止执行该过程。
这是我的代码
Transaction transaction=null;
Connection c = null;
Statement stmt = null;
ResultSet result;
try {
Class.forName("org.postgresql.Driver");
c = DriverManager.getConnection(
"jdbc:postgresql://192.168.1.7:5432/"+userDB,
"postgres", "openerp");
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getClass().getName() + ": " + e.getMessage());
System.exit(0);
}
int count = 0;
try {
LOGGER.info("In try of get");
factory = HibernateUtil.connectDB(userDB);
LOGGER.info("Connected to DB");
//Open Session
session = factory.openSession();
//Begin Transaction
transaction = session.beginTransaction();
LOGGER.info("Beginning the transaction");
stmt = c.createStatement();
String sql = "SELECT COUNT(*) FROM mycontent_messages where status = '0'";
count = stmt.executeUpdate(sql);
LOGGER.info("successfully got count : "+count);
c.commit();
stmt.close();
c.close();
我得到的例外是
org.postgresql.util.PSQLException: A result was returned when none was expected.
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:307)
at net.vsspl.mycontent.daoimpl.contentImpl.getUnreadCount(contentImpl.java:379)
at net.vsspl.mycontent.services.countUnreadMessages.main(countUnreadMessages.java:49)
它会记录到“开始交易”。之后它什么都没有显示。我的代码有问题吗?
【问题讨论】:
-
你知道不会抛出异常吗?您是否记录了
try块中引发的任何异常? -
你确定 status 是 varchar 类型的吗?
-
此外,我不认为 executeUpdate 对那个 sql 是正确的 :-)
-
我认为将
executeUpdate更改为executeQuery? -
org.postgresql.util.PSQLException:返回结果时没有预期。在 org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:307) 在 net.vsspl.mycontent.daoimpl.contentImpl.getUnreadCount(contentImpl.java:379) 在 net.vsspl.mycontent.services.countUnreadMessages.main(countUnreadMessages .java:49)