Postgres异常:查询未返回任何结果。

我正在尝试向表中插入一些行…我正在使用

我得到以下异常

org.postgresql.util.PSQLException:查询未返回任何结果。

在org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:255)

我已经用Google搜索了,建议的可能原因是

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

  2. 这可能是由于罐子问题引起的。尝试其他版本的postgres jar。

  3. 在某些地方保存它们可能是由于堆空间错误。

我已经尝试了所有三种解决方案,但是它们都不起作用…

因为我刚刚使用过,所以我不会粘贴代码statement.executeUpdate(queryString)。在

加载数据到表中,但我仍然得到这个错误。

有人可以帮我这个忙吗?

回答:

该代码非常适合我运行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<String, Object>> map(ResultSet rs) throws SQLException

{

List<Map<String, Object>> results = new ArrayList<Map<String, Object>>();

try

{

if (rs != null)

{

ResultSetMetaData meta = rs.getMetaData();

int numColumns = meta.getColumnCount();

while (rs.next())

{

Map<String, Object> row = new HashMap<String, Object>();

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<Map<String, Object>> query(Connection connection, String sql, List<Object> parameters) throws SQLException

{

List<Map<String, Object>> 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<Object> 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;

}

}

以上是 Postgres异常:查询未返回任何结果。 的全部内容, 来源链接: utcz.com/qa/420691.html

回到顶部