Postgresexception:查询未返回任何结果。
我试图在表中插入一些行…我正在使用postgressql-7.2.jar。
我得到以下exception
org.postgresql.util.PSQLException:查询未返回任何结果。
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:255)
我已经使用Google搜索,并提出了可能的原因
-
使用
executeUpdate()
方法或execute()
方法代替executeQuery()
方法。 -
这可能是因为jar子问题; 尝试其他版本的postgresjar子。
-
在某些地方,他们保存它可能是因为堆空间错误。
我已经尝试了所有这三种解决方案,但它们都没有工作……
我没有粘贴代码,因为我刚刚使用了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
您尝试使用executeQuery()
运行什么类型的SQL语句? 它不应该是INSERT或UPDATE – 这些不是查询。
没有发布实际的SQL语句,代码示例或表格的样子 – 实际上很难帮助您解决问题。 没有具体细节我们所能做的就是猜测。
插入行的语句不会返回任何行作为结果,而不是SELECT。