用Java语句判断数据库表是否存在
恩,我先用了最笨的方法,就是写个select从表中读数据,捕获异常的同时就知道了改表没有创建。 此法不通,因为这个时候的异常似乎被认定为了系统错误,于是后面创建表的代码被忽略了。 大部分人的做法类似于select system.table where tabblename='***',反正我曾经用类似的句子查询过DB2,是成功的。 但是,我现在面对的不是DB2,而是7个不同的数据库,基本上常用的都包括了。是不是每类数据库都有上面的查询语句呢?是否查询语句相似呢?于是我挑了hsqldb,也是当前的默认数据库,来寻找解决办法。 很遗憾,我没有找到类似前面的句子。正当我打算放弃的时候发现了下面的代码,这段代码是我从一个国外的论坛中找到的,尽管我不知道它是不是万能钥匙,但是他这次对我而言确成了万能的:
今天碰到个问题:java和sql如何判断数据库表是否存在。要判断数据库中表是否存在,就搜寻了一下java和sql如何判断数据库表是否存在的方法 1.sql语句判断数据库表是否存在: sql:select * from user_all_tables where table_name='tableName' 如果结果为空则表示不存在,如何结果不为空则表示存在;
2.java如何判断数据库表是否存在 方法一: 可以利用上面的sql,执行获取结果,相应的java代码如下: String helperName= delegator.getGroupHelperName("com.asiainfo"); String sql = "select * from user_all_tables where table_name='"+table+"'"; ResultSet rsTables =sqlProcessor.executeQuery(sql);
方法二: DatabaseMetaData meta = m_sqlCon.getMetaData(); ResultSet rsTables = meta.getTables(null , null, “YourTableName”, null); if(rsTables.next()){ System.out.println("The Table exsits."); }else{ System.out.println("The Table not exsits."); } 注意,这里的参数很重要,如何写不对会导致结果不正确。 如果schema参数为null的话,那么它会查询整个数据库中的表有可能会冲突的: getTables(String catalog,String schemaPattern,String tableNamePattern,String[] types) 参数: catalog:目录名称,一般都为空. 参数:schema:数据库名,对于oracle来说就用户名 参数:tablename:表名称 参数:type :表的类型(TABLE | VIEW) 注意:在使用过程中,参数名称必须使用大写的。 |