我在SQL开发人员中为Oracle R12数据库创建了一个SQL查询,该查询工作正常。有几个表/视图。所有这些对象都可以在我使用的LOGIN和PASSWORD下访问。
我使用JDBC驱动程序创建了一个旧的JAVA SE应用程序,并尝试从同一个源(数据库)中选择数据。它仅适用于某些对象(表,视图)。提到SQL查询我使用8个表,4个不工作(不是错误,只是空白数据)。
没有找到数据(没有错误,似乎他无法从该表/视图中读取任何行)
我有以下代码
try {
String query = "SELECT status_name FROM APPS.WSH_DELIVERABLE_TRIPS_V WHERE TRUNC(CREATION_DATE) = TRUNC(SYSDATE)";
//Database.getConnection().setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
PreparedStatement prep = Database.getConnection().prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
// prep.setInt(1, delivery);
ResultSet rs = prep.executeQuery();
ResultSetMetaData c = rs.getMetaData();
System.out.println("COLUMNS: " + c.getColumnCount());
System.out.println("RS " + rs.next());
//System.out.println("FIRST: " + String.valueOf(rs.first()));
//createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
while (rs.next()) {
dataFound = true;
// textInfo.setText("Data was found!!!!!!!!!!!!!!!!!!!!!!");
//textInfo.setText(rs.getString(1) + " - " + rs.getString(2) + " - " + rs.getString(3));
//String test = String.valueOf(rs.getString("status_name")) + textInfo.getText();
textInfo.setText(String.valueOf(rs.getString(1)));
}
if (dataFound) {
loadingImg.setVisible(false);
} else {
loadingImg.setVisible(false);
textInfo.setText("No data found.");
}
} catch (SQLException e) {
ExceptionWindow excep = new ExceptionWindow(e); //Show error Window
}
答案 0 :(得分:0)
我认为你在这一行有问题
PreparedStatement prep = Database.getConnection().prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
Connection包含prepareStatement()的不同重载方法。您使用了以下方法。
prepareStatement(String sql,int autoGeneratedKeys)
创建一个默认的PreparedStatement对象,该对象具有检索自动生成的键的功能。
此方法应用于插入目的,而不是用于选择。我相信如果您使用以下方法,那么您将获得预期的结果。
prepareStatement(String sql)
创建PreparedStatement对象,以便将参数化SQL语句发送到数据库。