关于java判断oracle中的表是否存在,不存在则创建一个表的问题

代码如下
try{
Class.forName("oracle.jdbc.driver.OracleDriver");

String url = "jdbc:oracle:thin:@"+localhost+":"+port+":"+dbname;
conn = DriverManager.getConnection(url, UserName, Password);
System.out.print("数据库"+dbname+"已连接");
Statement stmt = conn.createStatement();
String sql="select id from TB_TIMESTAMP";
ResultSet rs = stmt.executeQuery(sql);
if(!rs.next()){
StringBuilder sql2 = new StringBuilder();
sql2.append("CREATE TABLE 'SYSTEM'.'TB_TIMESTAMP' ");
sql2.append("( 'ID' NUMBER(11,0) NOT NULL ENABLE,");
sql2.append("'ST_ENTRY_TIME' DATE DEFAULT to_date('2011-1-11,11:11:11','yyyy-mm-dd,hh24:mi:ss') NOT NULL ENABLE,");
sql2.append("'ST_CONTENT' VARCHAR2(4000 BYTE) DEFAULT ' ' NOT NULL ENABLE,");
sql2.append("'ST_CLIENT_ID' VARCHAR2(40 BYTE) DEFAULT ' ' NOT NULL ENABLE,");
sql2.append("'ST_STATUS' NUMBER(1,0) DEFAULT '1' NOT NULL ENABLE, ");
sql2.append("'ST_FAIL_INFO' VARCHAR2(255 BYTE) DEFAULT NULL, ");
sql2.append("'ST_NOT_AFTER' DATE DEFAULT to_date('2011-1-11 11:11:11','yyyy-mm-dd hh24:mi:ss'), ");
sql2.append("'ST_SIGNER_CN' VARCHAR2(128 BYTE) DEFAULT NULL,");
sql2.append("'ST_SIGNER_SERIAL_NUM' VARCHAR2(128 BYTE) DEFAULT NULL,");
sql2.append("'ST_ISSUER_CN' VARCHAR2(128 BYTE) DEFAULT NULL, ");
sql2.append("'ST_ISSUER_SERIAL_NUM' VARCHAR2(128 BYTE) DEFAULT NULL, ");
sql2.append(") PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255");
sql2.append("NOCOMPRESS LOGGING");
sql2.append("INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645");
sql2.append("STORAGE(");
sql2.append("PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1");
sql2.append("BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)");
sql2.append("TABLESPACE 'SYSTEM'");
try{
int i =stmt.executeUpdate(sql2.toString());
if(i!=0){System.out.print("数据表创建成功");}
else{System.out.print("数据表创建失败");}}
catch(Exception e){e.getMessage();}
}
catch(Exception e){e.printStackTrace();}
并没有什么错误,但是执行String sql="select id from TB_TIMESTAMP";
ResultSet rs = stmt.executeQuery(sql);一旦没有表就会直接跳出try语句进入catch中,怎么样安排语句能让这个程序达到我想要的目的呢

2个回答

求大神帮忙看一下,怎么安排一下程序的逻辑顺序

用这个sql语句判断表是否存在
select 1 from user_tables where table_name='表名'

aline200
aline200 回复yougehubi: select id from TB_TIMESTAMP 前提是这个表存在的情况下,才执行 stmt.executeQuery(sql),不然就是抛一个异常
4 年多之前 回复
yougehubi
yougehubi 果然可以了,请问这是什么原理呢,为什么我那个就抛出了exception
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐