java和sql如何判断数据库表是否存在
2010-07-14 17:24

用Java语句判断数据库表是否存在

public boolean HasTable(String name) {
        //判断某一个表是否存在
        boolean result = false;
        try {
            DatabaseMetaData meta = sqlConn.getMetaData();
            ResultSet set = meta.getTables (null, null, name, null);
            while (set.next()) {
                result = true;
            }
        } catch (Exception eHasTable) {
            System.err.println(eHasTable);
            eHasTable.printStackTrace ();
        }
        return result;
    }

刚刚被一个比较麻烦的问题所困扰。这个问题就是如何判断数据中某张表是否存在,如果不存在则创建它。

恩,我先用了最笨的方法,就是写个select从表中读数据,捕获异常的同时就知道了改表没有创建。

此法不通,因为这个时候的异常似乎被认定为了系统错误,于是后面创建表的代码被忽略了。

大部分人的做法类似于select system.table where tabblename='***',反正我曾经用类似的句子查询过DB2,是成功的。

但是,我现在面对的不是DB2,而是7个不同的数据库,基本上常用的都包括了。是不是每类数据库都有上面的查询语句呢?是否查询语句相似呢?于是我挑了hsqldb,也是当前的默认数据库,来寻找解决办法。

很遗憾,我没有找到类似前面的句子。正当我打算放弃的时候发现了下面的代码,这段代码是我从一个国外的论坛中找到的,尽管我不知道它是不是万能钥匙,但是他这次对我而言确成了万能的:

java.sql.Connection con = getYourConnection(); 
   
ResultSet rs = con.getMetaData().getTables(null, null, "yourTable", null );
if (rs.next()) {
//yourTable exist
}else {
//yourTable not exist
}

今天碰到个问题: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");
SQLProcessor sqlProcessor= new SQLProcessor(helperName);

String sql = "select * from user_all_tables where table_name='"+table+"'";

ResultSet rsTables =sqlProcessor.executeQuery(sql);
if(rsTables.next()){ 
 Debug.logWarning("table:"+table+" exists", module);
}else{ 
 Debug.logWarning("table:"+table+" does not exist", module);
}

方法二:

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)

注意:在使用过程中,参数名称必须使用大写的。

转载于:https://www.cnblogs.com/hoojjack/archive/2012/07/28/2613036.html

摘录:java和sql如何判断数据库是否存在相关推荐

  1. java查看sql视图_数据库的查询与视图

    第4章 数据库的查询和视图 4.1.1 选择列 通过SELECT语句的项组成结果表的列. ::= SELECT [ ALL |DISTINCT ] [ TOP n [ PERCENT ] [ WITH ...

  2. java连接SQL Server 2005数据库教程(手把手教程)

    步骤一: 在连接数据库之前必须保证SQL Server 2005是采用SQL Server身份验证方式而不是windows身份验证方式.如果在安装时选用了后者,则重新设置如下: 打开SQL Serve ...

  3. java连接sql 2008代码,java连接sql server 2008数据库代码

    Java连接SQLServer 2008数据库的步骤: 1.到微软官方下载jdbc 并解压,得到sqljdbc.jar和sqljdbc4.jar,由于使用的是JDK1.7,所以使用sqljdbc4.j ...

  4. [唐胡璐]Java操作Sql Server 2008数据库

    下载Microsoft JDBC Driver for SQL Server 直接去官网下载即可: 下载解压文件,得到sqljdbc.jar和sqljdbc4.jar.如果你使用的是jre1.7版本, ...

  5. SQL Server 判断数据库是否存在,表是否存在

    if DB_ID('testdb') is not null -- 如果这个数据库已经存在了 drop database testdb; create database testdb; if OBJE ...

  6. SQL语句判断数据库、表、字段是否存在

    --判断[TestDB]是否存在 if exists(select 1 from master..sysdatabases where name='TestDB')     print 'TestDB ...

  7. java连接sql server2008_java连接sql-server-2008的四种方法

    <java连接sql-server-2008的四种方法>由会员分享,可在线阅读,更多相关<java连接sql-server-2008的四种方法(11页珍藏版)>请在人人文库网上 ...

  8. java判断数据库是否存在_java判断数据库是否存在的方法

    java判断数据库是否存在的方法 发布时间:2020-06-10 10:12:11 来源:亿速云 阅读:208 作者:Leah 这篇文章主要为大家详细介绍了java判断数据库是否存在的方法,文中示例代 ...

  9. java sqlserver2000_用Java连接SQL Server2000数据库

    用Java连接SQL Server2000数据库有多种方法,下面介绍其中最常用的两种(通过JDBC驱动连接数据库).以及连接池.[@more@] 用Java连接SQL Server2000数据库有多种 ...

  10. SQL SERVER 判断是否存在并删除某个数据库、表、视图、触发器、储存过程、函数

    – SQL SERVER 判断是否存在某个触发器.储存过程 – 判断储存过程,如果存在则删除 IF (EXISTS(SELECT * FROM sysobjects WHERE name='proce ...

最新文章

  1. linux c/c++ 判断是否为中文(不包括中文符号,非正则)
  2. php将配置信息写入文件,Php写入配置文件的经典漏洞
  3. python基础知识资料包-Python基础知识总结——史上最全系列
  4. C++中父类的虚函数必需要实现吗?
  5. 小米手机Linux Deploy安装Ubuntu
  6. timm 视觉库中的 create_model 函数详解
  7. 理解闭包 js回收机制
  8. 如何使用CodeBlocks开发C/C++程序
  9. mysql插入用户 5.7_mysql 5.7 用户添加与权限管理
  10. 怎么用最短时间高效而踏实地学习Linux?
  11. 武汉理工大学计算机学院宿舍,武汉理工大学专业所属校区及新生住宿分布情况(v2.0)...
  12. 有关于TCP三次握手和四次挥手的理解
  13. leetCode 108. Convert Sorted Array to Binary Search Tree JAVA
  14. Cannot find current proxy: Set 'exposeProxy' property on Advised to 'true' to 以及Spring事务失效的原因和解决方案
  15. Freemarker - 根据模板动态生成word文档
  16. 7-25 盲盒包装流水线(标准解法+简洁AC)
  17. Dell_Inspiron_15-3567, 加装内存条, 更换固态硬盘
  18. 采用原笔迹电子签名有什么好处
  19. SQL中primary key的作用
  20. 基于Android的飞机大战游戏的设计与实现

热门文章

  1. MySQL硬件软件中断_mysql 服务突然中断
  2. git clone 失败_鲜为人知的Git功能——Git Worktree工作树
  3. LINUX清理垃圾桶提示“没有权限”或“目录非空”
  4. GB-T 15834-2011《标点符号用法》文档的格式问题
  5. 吾智商低,对于VS的char实在是不知所云
  6. 为什么很少人写类似金庸的武侠小说
  7. 创业失败反思:吾亦有大错,错在哪里?
  8. 娟红静敏,从女孩子名中可以看出什么
  9. VS错误的解决解决:LINK fatal error LNK1000: Internal error during IncrBuildImage
  10. linux 程序 监听端口,linux和windows下如何知道端口是被那个程序监听占用?