Postgresexception:查询未返回任何结果。

我试图在表中插入一些行…我正在使用postgressql-7.2.jar。

我得到以下exception

org.postgresql.util.PSQLException:查询未返回任何结果。
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:255)

我已经使用Google搜索,并提出了可能的原因

  1. 使用executeUpdate()方法或execute()方法代替executeQuery()方法。

  2. 这可能是因为jar子问题; 尝试其他版本的postgresjar子。

  3. 在某些地方,他们保存它可能是因为堆空间错误。

我已经尝试了所有这三种解决方案,但它们都没有工作……

我没有粘贴代码,因为我刚刚使用了statement.executeUpdate(queryString)insert语句将数据加载到表中但仍然出现此错误。

有人可以帮我解决这个问题吗?

这段代码非常适合我运行PostgreSQL 8.1及其驱动程序。 也许它可以成为找出你的错误的模板。

您需要一个名为PERSON的表,其中包含PERSON_ID,FIRST_NAME,LAST_NAME列。 我将PERSON_ID作为自动递增的主键。

 package persistence; import java.sql.*; import java.util.*; public class DatabaseUtils { private static final String DEFAULT_DRIVER = "org.postgresql.Driver"; private static final String DEFAULT_URL = "jdbc:postgresql://localhost:5432/party"; private static final String DEFAULT_USERNAME = "pgsuper"; private static final String DEFAULT_PASSWORD = "pgsuper"; public static void main(String[] args) { String driver = ((args.length > 0) ? args[0] : DEFAULT_DRIVER); String url = ((args.length > 1) ? args[1] : DEFAULT_URL); String username = ((args.length > 2) ? args[2] : DEFAULT_USERNAME); String password = ((args.length > 3) ? args[3] : DEFAULT_PASSWORD); Connection connection = null; try { connection = createConnection(driver, url, username, password); DatabaseMetaData meta = connection.getMetaData(); System.out.println(meta.getDatabaseProductName()); System.out.println(meta.getDatabaseProductVersion()); String sqlQuery = "SELECT PERSON_ID, FIRST_NAME, LAST_NAME FROM PERSON ORDER BY LAST_NAME"; System.out.println("before insert: " + query(connection, sqlQuery, Collections.EMPTY_LIST)); connection.setAutoCommit(false); String sqlUpdate = "INSERT INTO PERSON(FIRST_NAME, LAST_NAME) VALUES(?,?)"; List parameters = Arrays.asList( "Foo", "Bar" ); int numRowsUpdated = update(connection, sqlUpdate, parameters); connection.commit(); System.out.println("# rows inserted: " + numRowsUpdated); System.out.println("after insert: " + query(connection, sqlQuery, Collections.EMPTY_LIST)); } catch (Exception e) { rollback(connection); e.printStackTrace(); } finally { close(connection); } } public static Connection createConnection(String driver, String url, String username, String password) throws ClassNotFoundException, SQLException { Class.forName(driver); if ((username == null) || (password == null) || (username.trim().length() == 0) || (password.trim().length() == 0)) { return DriverManager.getConnection(url); } else { return DriverManager.getConnection(url, username, password); } } public static void close(Connection connection) { try { if (connection != null) { connection.close(); } } catch (SQLException e) { e.printStackTrace(); } } public static void close(Statement st) { try { if (st != null) { st.close(); } } catch (SQLException e) { e.printStackTrace(); } } public static void close(ResultSet rs) { try { if (rs != null) { rs.close(); } } catch (SQLException e) { e.printStackTrace(); } } public static void rollback(Connection connection) { try { if (connection != null) { connection.rollback(); } } catch (SQLException e) { e.printStackTrace(); } } public static List> map(ResultSet rs) throws SQLException { List> results = new ArrayList>(); try { if (rs != null) { ResultSetMetaData meta = rs.getMetaData(); int numColumns = meta.getColumnCount(); while (rs.next()) { Map row = new HashMap(); for (int i = 1; i <= numColumns; ++i) { String name = meta.getColumnName(i); Object value = rs.getObject(i); row.put(name, value); } results.add(row); } } } finally { close(rs); } return results; } public static List> query(Connection connection, String sql, List parameters) throws SQLException { List> results = null; PreparedStatement ps = null; ResultSet rs = null; try { ps = connection.prepareStatement(sql); int i = 0; for (Object parameter : parameters) { ps.setObject(++i, parameter); } rs = ps.executeQuery(); results = map(rs); } finally { close(rs); close(ps); } return results; } public static int update(Connection connection, String sql, List parameters) throws SQLException { int numRowsUpdated = 0; PreparedStatement ps = null; try { ps = connection.prepareStatement(sql); int i = 0; for (Object parameter : parameters) { ps.setObject(++i, parameter); } numRowsUpdated = ps.executeUpdate(); } finally { close(ps); } return numRowsUpdated; } } 

您尝试使用executeQuery()运行什么类型的SQL语句? 它不应该是INSERT或UPDATE – 这些不是查询。

没有发布实际的SQL语句,代码示例或表格的样子 – 实际上很难帮助您解决问题。 没有具体细节我们所能做的就是猜测。

插入行的语句不会返回任何行作为结果,而不是SELECT。