java判断mysql数据库中存在某一张表

ResultSet DatabaseMetaData.getTables(String catalog,  String schemaPattern, String 
			tableNamePattern, String types[]) throws SQLException; 
  • catalog - 数据库目录名称,可设为null,(具体JDBC驱动的实现不一样在MySQL中指数据库名)。

  • schemaPattern - 方案名称的样式,可设为null,( 具体JDBC驱动的实现不一样, 在Oracle中指用户名)。

  • tableNamePattern - 表名称的样式,可以包含匹配符比如:“TEST%”

  • types - 要包括的表类型组成的列表,可设为null,表示所有的。

  • types的常量值为:

    1. “TABLE”
    2. “VIEW”
    3. “SYSTEM TABLE”
    4. “GLOBAL TEMPORARY”
    5. “LOCAL TEMPORARY”
    6. “ALIAS”, “SYNONYM”

    各种数据库系统对Catalog和Schema的支持和实现方式是不一样的,针对具体问题需要参考具体的产品说明书,比较简单而常用的实现方式是使用数据库名作为Catalog名,使用用户名作为Schema名,具体可参见下表:

常用数据库Catalog和Schema对照表

供应商

Catalog支持

Schema支持

Oracle

不支持

Oracle User ID

MySQL

不支持

数据库名

MS SQL Server

数据库名

对象属主名,2005版开始有变

DB2

指定数据库对象时,Catalog部分省略

Catalog属主名

Sybase

数据库名

数据库属主名

Informix

不支持

不需要

PointBase

不支持

数据库名

java 执行mysql实例:
java web项目引入org.springframework.jdbc.core.JdbcTemplate,判断数据库中是否存在某一张表,代码如下:

/**
	 * 
	 * @param tableName
	 * @return
	 */
	public boolean isExistOfTableName(String tableName)
	{
		Connection conn = null;
		ResultSet tabs = null;  
        try {  
        	conn = jdbcTemplate.getDataSource().getConnection();  
            java.sql.DatabaseMetaData dbMetaData = conn.getMetaData();  
            String[] types = { "TABLE" };  
            tabs = dbMetaData.getTables("portals", null, tableName, types);  
            if (tabs.next()) {  
                return true;  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            try {
				tabs.close();
				conn.close();  
			} catch (Exception e) {
				e.printStackTrace();
			}  
        }  
        return false;  
	}

你可能感兴趣的:(java,数据库)