`
53873039oycg
  • 浏览: 837238 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Java应用之得到Oracle,Mysql数据库表信息

阅读更多

     最近在使用公司内部框架生成代码的时候,在思考框架是怎么判断表是否存在,怎样得到表的信息,利用中午的时间找了点资料,现在可以实现判断Oracle,Mysql表是否存在,表内是否存在某个字段,得到表的字段信息,如字段名称,字段类型,长度,以及注释,首先带上我参考的信息:

   

http://stackoverflow.com/questions/205736/get-list-of-all-tables-in-oracle
http://dev.mysql.com/doc/refman/5.0/en/columns-table.html
http://stackoverflow.com/questions/9016578/how-to-get-primary-key-column-in-oracle

    数据库及版本:Oracle 10g,Mysql 5.6.14。

    废话不多说,上代码:

    首先是公共方法:

   

public Connection getMysqlConnection() {
		String driver = "com.mysql.jdbc.Driver";
		String url = "jdbc:mysql://localhost:3306/test";// 要操作的数据库名称
		String username = "root";// 数据库用户名
		String password = "123";// 密码
		return getConnection(driver, url, username, password);
	}

	public Connection getOracleConnection() {
		String driver = "oracle.jdbc.driver.OracleDriver";
		String url = "jdbc:oracle:thin:@localhost:1521:xe";// 要操作的数据库名称
		String username = "tmd";// 数据库用户名
		String password = "tmd";// 密码
		return getConnection(driver, url, username, password);
	}

	public Connection getConnection(String driver, String url, String userName,
			String passwd) {
		Connection conn = null;
		try {
			Class.forName(driver);
			conn = DriverManager.getConnection(url, userName, passwd);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return conn;
	}

	public void closeConnection(ResultSet rs, Statement statement,
			Connection conn) {
		try {
			if (rs != null) {
				rs.close();
			}
			if (statement != null) {
				statement.close();
			}
			if (conn != null) {
				conn.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

    得到Mysql指定数据库所有表名:

   

//得到Mysql指定数据库所有表名
	public void getMysqlDataBaseTables(String database) throws Exception {
		Connection conn = getMysqlConnection();
		ResultSet rs = null;
		Statement statement = conn.createStatement();
		String sql = "select table_name from information_schema.tables where table_schema='"
				+ database + "'";
		rs = statement.executeQuery(sql);
		System.out.println("-------------DB[" + database
				+ "] All Tables---------------");
		while (rs.next()) {
			System.out.println(rs.getString("table_name"));
		}
		closeConnection(rs, statement, conn);
	}

    Oracle当前用户下所有表名:

   

public void getOracleDataBaseTables() throws Exception {
		Connection conn = getOracleConnection();
		ResultSet rs = null;
		Statement statement = conn.createStatement();
		String sql = "select table_name from user_tables";
		rs = statement.executeQuery(sql);
		while (rs.next()) {
			System.out.println(rs.getString("table_name"));
		}
		closeConnection(rs, statement, conn);
	}

   检测Mysql表是否存在:

  

//检查Mysql表是否存在
	public boolean checkMysqlTableExist(String db, String tableName)
			throws Exception {
		Connection conn = getMysqlConnection();
		DatabaseMetaData meta = conn.getMetaData();
		boolean isExist = false;
		// types -要包括的表类型组成的列表,可设为null,表示所有的
		// ResultSet rs = meta.getTables(db, null, tableName,new String[] {
		// "TABLE" });
		ResultSet rs = meta.getTables(db, null, tableName, null);
		System.out
				.println("TABLE_CAT \t TABLE_SCHEM \t TABLE_NAME \t TABLE_TYPE");
		while (rs.next()) {
			System.out.println(rs.getString("TABLE_CAT") + "\t"
					+ rs.getString("TABLE_SCHEM") + "\t"
					+ rs.getString("TABLE_NAME") + "\t"
					+ rs.getString("TABLE_TYPE"));
			isExist = true;
		}
		closeConnection(rs, null, conn);
		return isExist;
	}

   检查Oracle表是否存在

   

//检查Oracle表是否存在
	//经我测试只能检查当前连接用户下的是否存在
	public boolean checkOracleTableExist(String userName, String tableName)
			throws Exception {
		Connection conn = getOracleConnection();
		DatabaseMetaData meta = conn.getMetaData();
		userName=userName.toUpperCase();
		tableName=tableName.toUpperCase();
		// ResultSet rs = meta.getTables(null, userName, tableName, new String[]
		// {"TABLE" });
		ResultSet rs = meta.getTables(null, userName, tableName, null);
		boolean isExist = false;
		System.out
				.println("TABLE_CAT \t TABLE_SCHEM \t TABLE_NAME \t TABLE_TYPE");
		while (rs.next()) {
			System.out.println(rs.getString("TABLE_CAT") + "\t"
					+ rs.getString("TABLE_SCHEM") + "\t"
					+ rs.getString("TABLE_NAME") + "\t"
					+ rs.getString("TABLE_TYPE"));
			isExist = true;
		}
		closeConnection(rs, null, conn);
		return isExist;
	}

   检查Mysql表是否存在指定的列:

   

//检查Mysql表是否存在指定的列
	public boolean checkMysqlTableColumnExist(String db, String tableName,String columnName)
			throws Exception{
		boolean isExist=false;
		Connection conn = getMysqlConnection();
		DatabaseMetaData meta = conn.getMetaData();
		ResultSet rs = meta.getTables(db, null, tableName, null);
		if (rs.next()) {
			rs = meta.getColumns(null, null, tableName, columnName);
			if (rs.next()) {
				isExist=true;
			} 
		}
		closeConnection(rs, null, conn);
		return isExist;
	}

    检查Oracle表是否存在指定的列

   

//检查Oracle表是否存在指定的列
	public boolean checkOracleTableColumnExist(String tableName,String columnName)
			throws Exception{
		boolean isExist=false;
		Connection conn = getOracleConnection();
		DatabaseMetaData meta = conn.getMetaData();
		tableName=tableName.toUpperCase();
		columnName=columnName.toUpperCase();
		ResultSet rs = meta.getTables(null, null, tableName, null);
		if (rs.next()) {
			rs = meta.getColumns(null, null, tableName, columnName);
			if (rs.next()) {
				isExist=true;
			} 
		}
		closeConnection(rs, null, conn);
		return isExist;
	}

   检查Oracle表是否存在指定的列方法2:

  

public boolean checkOracleTableColumnExistTwo(String tableName,String columnName)
			throws Exception{
		boolean isExist=false;
		Connection conn = getOracleConnection();
		ResultSet rs = null;
		Statement statement = conn.createStatement();
		tableName=tableName.toUpperCase();
		columnName=columnName.toUpperCase();
		String sql = "select table_name, column_name from cols where  table_name ='"+tableName+"' and column_name ='"+columnName+"'";
		rs = statement.executeQuery(sql);
		while (rs.next()) {
			isExist=true;
		}
		closeConnection(rs, null, conn);
		return isExist;
	}

    得到Mysql表信息,如列名,数据类型,长度,注释

   

//得到Mysql表信息,如列名,数据类型,长度,注释
	public void getMysqlTableInfo(String dbName,String tableName) throws Exception
	{
		Connection conn = getMysqlConnection();
		ResultSet rs = null;
		Statement statement = conn.createStatement();
		tableName=tableName.toUpperCase();
		String sql = "select column_name,column_type,column_key,column_comment from information_schema.columns where  table_name = '"+tableName+"' and table_schema = '"+dbName+"'";
		rs = statement.executeQuery(sql);
		while (rs.next()) {
			System.out.println(rs.getString("column_name")+"\t"+rs.getString("column_type")+"\t"+rs.getString("column_key")+"\t"+rs.getString("column_comment"));
		}
		closeConnection(rs, statement, conn);
	}

    得到Oralce表信息,如列名,数据类型,长度,注释

    

//得到Oralce表信息,如列名,数据类型,长度,注释
	public void getOracleTableInfo(String tableName) throws Exception
	{
		Connection conn = getOracleConnection();
		ResultSet rs = null;
		Statement statement = conn.createStatement();
		tableName=tableName.toUpperCase();
		String sql = "select a.column_name,a.data_type,a.data_length,b.comments from cols a,user_col_comments b  where a.column_name=b.column_name and a.table_name=b.table_name and b.table_name='"+tableName+"'";
		rs = statement.executeQuery(sql);
		while (rs.next()) {
			System.out.println(rs.getString("column_name")+"\t"+rs.getString("data_type")+"\t"+rs.getString("data_length")+"\t"+rs.getString("comments"));
		}
		closeConnection(rs, statement, conn);
	}

   得到Oracle表的主键

   

public void getOracleTablePK(String tableName) throws Exception
	{
		Connection conn = getOracleConnection();
		ResultSet rs = null;
		Statement statement = conn.createStatement();
		tableName=tableName.toUpperCase();
		String sql = "select c.table_name, c.column_name, d.status, d.owner from all_constraints d, all_cons_columns c where d.constraint_type = 'P' and d.constraint_name = c.constraint_name and d.owner = c.owner and c.table_name = '"+tableName+"'";
		rs = statement.executeQuery(sql);
		while (rs.next()) {
			System.out.println(rs.getString("table_name")+"\t"+rs.getString("column_name")+"\t"+rs.getString("status")+"\t"+rs.getString("owner"));
		}
		closeConnection(rs, statement, conn);
	}

    代码完。

  

    本博文是我自己亲自调试并测试,转载请注明出处,另外如果对我的博文有不同意见,欢迎留言。

    说明:本人不接受任何涉及人格辱骂之类的留言,留言请文明用语。谢谢。

    全文完。

   

分享到:
评论

相关推荐

    oracle数据库和mysql数据库的链接信息

    根据给定文件的信息,我们可以详细地探讨Oracle数据库与MySQL数据库的连接信息,包括它们的驱动程序、连接字符串等关键组成部分。 ### Oracle数据库连接信息 #### 驱动程序 Oracle数据库连接通常会用到`oracle....

    java连接oracle/mysql数据库简单示例(附oracle+mysql数据库驱动包)

    在Java编程中,连接Oracle和MySQL数据库是常见的需求,这对于数据操作、数据分析或者构建Web应用程序至关重要。本示例将向你展示如何使用Java API来实现这两个数据库的连接,并且提供了相应的数据库驱动包。 首先,...

    java连接oracle和mysql数据库的jar包

    总的来说,`oracle-mysql数据库jar包`这个压缩文件很可能包含了Oracle和MySQL数据库的JDBC驱动JAR,方便Java开发者在同一项目中同时处理这两种数据库的连接。使用这些JAR,开发者可以编写跨数据库的代码,实现数据...

    mysql-connector-java-8.0.13.jar mysql数据库驱动下载

    MySQL-Connector-Java是Oracle官方提供的用于Java应用程序连接MySQL数据库的驱动程序,它实现了Java Database Connectivity (JDBC) API,使得Java开发者能够方便地在Java应用中与MySQL数据库进行交互。 在Java开发...

    MySql+Oracle数据库Java驱动jar包

    总的来说,MySQL和Oracle数据库的Java驱动jar包是Java应用与数据库交互的关键组件,它们为Java程序员提供了与数据库进行数据操作的桥梁。了解如何正确使用这些驱动,以及如何在项目中管理和配置它们,是每个Java开发...

    浅谈Java中Mysql数据库的连接与操作.pdf

    在现代软件开发中,Java语言和MySQL数据库的结合使用是技术领域中一个非常普遍且重要的课题。Java作为一门广泛应用于商业、企业级应用开发的编程语言,其稳定性和跨平台能力使其在软件开发领域占据着举足轻重的地位...

    oracle-mysql数据库连接jar包.zip

    本压缩包包含两个重要的JDBC驱动jar文件:ojdbc6.jar用于Oracle数据库,而mysql-connector-java-8.0.11.jar则是针对MySQL数据库的。 ojdbc6.jar是Oracle公司提供的JDBC驱动,适用于Oracle 11g版本。这个驱动包允许...

    基于JDBC同步Oracle到MySQL

    分别有:数据源配置、数据表结构转换、字段更新、数据迁移、根据oracle SQL的UPDATE DELETE 事物执行记录转为Mysql可执行SQL,同步执行到MySql数据库,此项目为个人兴趣爱好练手项目,项目问题欢迎留言,共同进步...

    数据库的连接篇(MySQL和Oracle)

    文档包含了Oracle数据库的连接,以及检测是否连接成功,还包含的MySQL数据库的连接及检测,这是基于初学者的学习使用

    mysql+oracle数据库驱动程序

    总的来说,`mysql-connector-java-3.1.14-bin.jar`和`ojdbc7.jar`是连接MySQL和Oracle数据库的关键组件,它们使得Java应用程序能够无缝地与这些数据库进行交互。在使用这些驱动时,开发人员需要注意版本兼容性、安全...

    Java连接各个版本Oracle/Mysql/DB2…数据库代码

    `lib`文件夹可能包含了对应数据库的JDBC驱动jar包,如`ojdbc.jar`(Oracle)、`mysql-connector-java.jar`(MySQL)和`db2jcc4.jar`(DB2)。在项目中引入这些jar包,就可以直接使用工具类进行数据库连接操作。 ...

    MySql 和Oracle 数据库结构导出Word

    1. 连接数据库:使用Java的JDBC(Java Database Connectivity)API,可以连接到MySQL或Oracle数据库,获取数据库的连接。 2. 执行SQL查询:通过执行`SHOW CREATE TABLE`(MySQL)或`DESCRIBE TABLE`(Oracle)等...

    sql\oracle和mysql数据库java驱动

    下面我们将详细探讨Oracle和MySQL数据库的Java驱动以及JDBC的相关知识点。 首先,Java驱动,也称为JDBC驱动,是Java语言连接数据库的桥梁。根据其工作方式,JDBC驱动可以分为四种类型:类型1(JDBC-ODBC桥)、类型2...

    MySQL、Oracle数据库连接的jar包

    为了在Java应用程序中连接到MySQL数据库,我们需要使用JDBC(Java Database Connectivity),它是Java平台的标准API,允许Java程序与各种数据库进行交互。在描述中提到的mysql-connector-java-5.1.7-bin.jar就是...

    C3p0、Oracle数据库连接驱动、MySQL数据库连接驱动jar包.rar

    总结来说,"C3p0、Oracle数据库连接驱动、MySQL数据库连接驱动jar包.rar"包含的是用于Java应用程序与Oracle和MySQL数据库交互的关键组件。C3p0提供了高效的数据库连接池服务,而Oracle和MySQL的JDBC驱动则确保了Java...

    JAVA ORACLE MYSQL 驱动程序

    "mysql-connector-java-5.0.8.zip"是MySQL提供的Java驱动程序包,用于连接Java应用程序到MySQL数据库。这个版本的驱动支持MySQL 5.0.x系列服务器,包含了一系列Java类,使得Java程序可以使用JDBC API来执行SQL语句、...

    OracleTOMysql 转换工具

    Oracle到MySQL转换工具是一种专门设计用于帮助用户将Oracle数据库中的数据和结构迁移至MySQL数据库的应用程序。这个过程通常称为数据库迁移或数据迁移,是企业在更换数据库系统时常常面临的需求。以下是一些关于...

    mysql数据库转oracle数据库工具

    MySQL到Oracle数据库转换工具是一种专门用于将数据从MySQL数据库系统迁移至Oracle数据库系统的软件解决方案。在数据库管理系统领域,这样的工具非常关键,因为不同的DBMS(数据库管理系统)可能有着不同的数据结构、...

    java数据库驱动 oracle mysql sqlserver oracle pointbase

    MySQL的JDBC驱动通常称为 Connector/J,它允许Java应用程序与MySQL数据库交互。驱动文件通常为`mysql-connector-java.jar`。在描述中提到的测试程序可能包括创建连接、执行SQL语句和处理结果集等基本操作。 3. **...

    Oracle/Mysql数据库连接jar包全

    在Java编程中,数据库连接是不可或缺的部分,尤其是对于企业级应用而言。Oracle和MySQL是两种广泛应用的关系型数据库...在Java项目中正确配置和使用Oracle/Mysql数据库连接jar包,是构建健壮、高效数据库应用的基础。

Global site tag (gtag.js) - Google Analytics