从昨天开始,我就在这个问题上磨牙。我想使用视图检索数据库中的记录,这是我的代码:
try {
Class.forName("org.postgresql.Driver").newInstance();
Connection Conn = DriverManager.getConnection("jdbc:postgresql://{ipaddress}/database?user=postgres&password=password");
Statement Stmt = Conn.createStatement();
String sqlCommand = "SELECT num, ip_address, ftp_user, ftp_password, ftp_location, site FROM table_view WHERE site = 'test' ";
ResultSet RS = Stmt.executeQuery(sqlCommand);
while (RS.next()) {
data.add(RS.getInt("num")
+ "=>" + RS.getString("ip_address")
+ "=>" + RS.getString("ftp_user")
+ "=>" + RS.getString("ftp_password")
+ "=>" + RS.getString("ftp_location"));
}
// Clean up after ourselves
RS.close();
Stmt.close();
Conn.close();
}
catch (SQLException E) {
System.out.println("SQLException: " + E.getMessage());
System.out.println("SQLState: " + E.getSQLState());
System.out.println("VendorError: " + E.getErrorCode());
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
}
我知道上面使用的查询会返回一行,因为我试图在pgAdmin中运行它,但确实如此。但是,当我使用该代码执行此操作时,它不会进入while(RS.next())
循环,这是在您提取数据的时候,对吧?
我一直在使用这些代码行,它工作正常。不知怎的,它没有回应这个。该视图由我在连接中使用的用户拥有。此外,我尝试使用视图中使用的查询,选择查询在创建为视图之前,它返回1行但在运行代码时仍然相同,它不返回任何数据。
我做错了吗?或者我缺少的东西?观点是一个问题吗?请帮忙。感谢。
我还尝试更改类似的查询:
String sqlCommand = "SELECT num, ip_address, ftp_user, ftp_password, ftp_location, site FROM table_view WHERE site = 'test' "
+ " UNION "
+ " SELECT 0, '', '', '', '', '' ";
并进入while循环但只接受添加的union选择。我非常确定第一个选择返回一行。