SQL 在 java 和 运行 时查询 returns 不同的结果
SQL Query returns different results in java and when ran
我正在尝试编写一种方法来检查 table 是否存在于我的数据库中,在 java 中。环顾四周后,我找到了一个答案,说明我需要 运行 SELECT COUNT(*) FROM tableName;为此,我编写了以下代码。
public static boolean isEmpty(Connection con) throws SQLException, ClassNotFoundException{
PreparedStatement stm = con.prepareStatement("SELECT COUNT(*) FROM Cities");
String[] tables = {"Cities", "Connections"};
ResultSet rs = null;
//for(String table : tables){
//stm.setString(1, "Cities");
rs = stm.executeQuery();
rs.next();
System.out.println(rs.getInt(1));
if(rs.getInt(1) != 0){
return false;
}
//}
return true;
}
注意:我正在使用 oracle sql。
另外,如果 table 实际上不存在,这个查询 return 0 不应该吗?在这种情况下我得到一个例外,我的理解是 returns 0 当 table 不存在或为空时。
我想问的另一个问题,尽管只是提供信息:在寻找 table 存在问题的解决方案之前,我想到了 运行 一个 SELECT * FROM tableName
查询,并处理 "table does not exist" 错误 SQL 会将我作为异常抛出。 "crushed" 我的计划是 SQLexception.getCause(); returns null,而不是实际原因,我想应该是 "table or view does not exist",或类似的东西。尽管如此,这是否是检查是否存在的有效方法?也就是说,除了 SELECT COUNT(*) FROM tableName 方法之外,我愿意接受其他建议,如果这是 incorrect/ineffective,那将对我想做的事情有效。
提前致谢,LukeSykpe
像这样的东西应该适用于 Oracle:
public static boolean doesTableExist(Connection con, String tableName) throws SQLException {
ResultSet rs = null;
PreparedStatement stm = con.prepareStatement("SELECT * FROM user_objects WHERE object_type = 'TABLE' and object_name=?");
stm.setString(1,tableName.toUpperCase()); //case sensitive
rs = stm.executeQuery();
if(rs.next()) {
return true;
}
return false;
}
注意:如果 table 存在,这将 return 为真,无论它是否为空。
我正在尝试编写一种方法来检查 table 是否存在于我的数据库中,在 java 中。环顾四周后,我找到了一个答案,说明我需要 运行 SELECT COUNT(*) FROM tableName;为此,我编写了以下代码。
public static boolean isEmpty(Connection con) throws SQLException, ClassNotFoundException{
PreparedStatement stm = con.prepareStatement("SELECT COUNT(*) FROM Cities");
String[] tables = {"Cities", "Connections"};
ResultSet rs = null;
//for(String table : tables){
//stm.setString(1, "Cities");
rs = stm.executeQuery();
rs.next();
System.out.println(rs.getInt(1));
if(rs.getInt(1) != 0){
return false;
}
//}
return true;
}
注意:我正在使用 oracle sql。 另外,如果 table 实际上不存在,这个查询 return 0 不应该吗?在这种情况下我得到一个例外,我的理解是 returns 0 当 table 不存在或为空时。
我想问的另一个问题,尽管只是提供信息:在寻找 table 存在问题的解决方案之前,我想到了 运行 一个 SELECT * FROM tableName
查询,并处理 "table does not exist" 错误 SQL 会将我作为异常抛出。 "crushed" 我的计划是 SQLexception.getCause(); returns null,而不是实际原因,我想应该是 "table or view does not exist",或类似的东西。尽管如此,这是否是检查是否存在的有效方法?也就是说,除了 SELECT COUNT(*) FROM tableName 方法之外,我愿意接受其他建议,如果这是 incorrect/ineffective,那将对我想做的事情有效。
提前致谢,LukeSykpe
像这样的东西应该适用于 Oracle:
public static boolean doesTableExist(Connection con, String tableName) throws SQLException {
ResultSet rs = null;
PreparedStatement stm = con.prepareStatement("SELECT * FROM user_objects WHERE object_type = 'TABLE' and object_name=?");
stm.setString(1,tableName.toUpperCase()); //case sensitive
rs = stm.executeQuery();
if(rs.next()) {
return true;
}
return false;
}
注意:如果 table 存在,这将 return 为真,无论它是否为空。