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

问题描述

关于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(110) NOT NULL ENABLE);
sql2.append(""'ST_ENTRY_TIME' DATE DEFAULT to_date('2011-1-1111:11:11''yyyy-mm-ddhh24: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(10) 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中,怎么样安排语句能让这个程序达到我想要的目的呢

解决方案

java 判断数据库表是否存在,不存在则创建。
判断Access中某个表是否已存在,不存在就创建一个
Java判断文件夹是否存在,不存在就创建

解决方案二:
求大神帮忙看一下,怎么安排一下程序的逻辑顺序

解决方案三:
用这个sql语句判断表是否存在
select 1 from user_tables where table_name='表名'

时间: 2024-12-21 22:26:03

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

java将oracle一个表空间的数据同步到另一个表空间的数据,来看看有没有问题

问题描述 代码如下:import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.Date;import java.util.List;public class Bak {public static

spool命令、创建一个表,创建并且copy表,查看别的用户下的表,rowid行地址 索引的时候使用,表的增删改查,删除表,oracle的回收站

  1.spool命令 spool "D:\test.txt" spool off SQL> host cls 2.创建一个表 SQL> --条件(1):有创建表的权限,(2):有表空间 SQL> desc t4;  名称                                      是否为空? 类型  ----------------------------------------- -------- ----------------------

select-mysql 嵌套查询,一个表的多个字段 作为另一个表的条件,若为空输出0,求高手

问题描述 mysql 嵌套查询,一个表的多个字段 作为另一个表的条件,若为空输出0,求高手 SELECT daan FROM 表A a,表B a WHERE daan=b.选项1 or daan =b.选项2 问题来了 若 从表A 查 表B的选项,daan为空,怎么输出0 解决方案 首先得搞明白select daan 就是这一列 为空,输出0属于计数,可以用函数 这两个并不能写一起 解决方案二: 可以使用case when阿 SELECT case when rtrim(daan) ='' th

数据库-如何实现一个触发器:在插入一条数据前创建一个表,表名由插入的数据决定?

问题描述 如何实现一个触发器:在插入一条数据前创建一个表,表名由插入的数据决定? MySQL数据库的触发器能不能实现创建表,表名用变量指定? 这个变量该如何表示? 谢谢. 解决方案 可以的,使用动态sql就可以,参考如下链接 http://www.2cto.com/database/201209/156678.html

《Oracle SQL疑难解析》——1.6 批量地从一个表中复制数据到另一个表

1.6 批量地从一个表中复制数据到另一个表 Oracle SQL疑难解析 1.6.1 要解决的问题 如何从一个表中一次性复制多行记录到另一个表. 1.6.2 解决方法 INSERT INTO... SELECT... 方法可以插入多行记录,关键是用SELECT语句选择多行记录时一定要用对选择条件.我们把以前的SELECT语句做一点修改,就可以选择多行记录了: 当然,前提是存在HR.CANDIDATES表,在做练习前,应确保你的HR.CANDIDATES表和例子中的表是一致的. 1.6.3 数据库

Java判断字符串中是否包含中文方法_java

今天和同事在讨论一个问题,需要检查"输入的字符串中是否包含中文",刚开始想到是用正则表达式,正则表达式中是以[u4e00-u9fa5]来全匹配字符是否是中文,但现在面临的问题是这个字符串中还可能包含英文字符.数字.特殊字符,一时也没想出能匹配该场景的正则表达式,后来在网上搜了下,可以使用Matcher类来解决该问题,大致的代码实现如下: import java.util.regex.Matcher; import java.util.regex.Pattern; public clas

java 判断 ArrayList 中 是否存在某个对象,存在加1

问题描述 /**判断ArrayList中是否存在某个对象,存在加1,不存在添加*首先覆写这个类的equals方法,然后用ArrayList.contains(obj)*如果存在用index=ArrayList.indexOf(obj);*然后obj=ArrayList.get(index);*obj.count++*/这个方法对吗?假如不对用什么方法?假如对,高效吗?假如不高效用什么方法,谢谢 解决方案 解决方案二:重写equals方法,可以直接用index=ArrayList.indexOf(

Java读取oracle中xmltype字段

问题描述 比方说,selectdatafromxmlExample中的data字段是xmltype类型的,我在Java里面应该如何取到这个字段并解析它呢.说明:不使用xpath 解决方案 解决方案二:jdbc处理和xpath什么关系.解决方案三:我的意思是不使用这种查询语句:selectextract(t.data,'//name[@id="1"]')姓名fromdatat我想直接返回xml类型的数据到Java中,在Java里面应该怎么接受这种类型的值.

java判断字符串中的数字,实现自增

问题描述 例子,如果我的一个文件的名称是File.doc.V0001修改后应该是File.doc.V0002.依次根据修改的次数,实现递增.文件版本考虑....java代码怎么对V0001----->V9999实现自增呢??? 问题补充:突然想到用string.format(),来对字符串自增后的前面进行补0操作,可行否 解决方案 这个简单:public static String increase(String value){int index=1;int n=Integer.parseInt