最近在使用公司内部框架生成代码的时候,在思考框架是怎么判断表是否存在,怎样得到表的信息,利用中午的时间找了点资料,现在可以实现判断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数据库连接信息 #### 驱动程序 Oracle数据库连接通常会用到`oracle....
在Java编程中,连接Oracle和MySQL数据库是常见的需求,这对于数据操作、数据分析或者构建Web应用程序至关重要。本示例将向你展示如何使用Java API来实现这两个数据库的连接,并且提供了相应的数据库驱动包。 首先,...
总的来说,`oracle-mysql数据库jar包`这个压缩文件很可能包含了Oracle和MySQL数据库的JDBC驱动JAR,方便Java开发者在同一项目中同时处理这两种数据库的连接。使用这些JAR,开发者可以编写跨数据库的代码,实现数据...
MySQL-Connector-Java是Oracle官方提供的用于Java应用程序连接MySQL数据库的驱动程序,它实现了Java Database Connectivity (JDBC) API,使得Java开发者能够方便地在Java应用中与MySQL数据库进行交互。 在Java开发...
1. 连接数据库:使用Java的JDBC(Java Database Connectivity)API,可以连接到MySQL或Oracle数据库,获取数据库的连接。 2. 执行SQL查询:通过执行`SHOW CREATE TABLE`(MySQL)或`DESCRIBE TABLE`(Oracle)等...
总的来说,MySQL和Oracle数据库的Java驱动jar包是Java应用与数据库交互的关键组件,它们为Java程序员提供了与数据库进行数据操作的桥梁。了解如何正确使用这些驱动,以及如何在项目中管理和配置它们,是每个Java开发...
在现代软件开发中,Java语言和MySQL数据库的结合使用是技术领域中一个非常普遍且重要的课题。Java作为一门广泛应用于商业、企业级应用开发的编程语言,其稳定性和跨平台能力使其在软件开发领域占据着举足轻重的地位...
本压缩包包含两个重要的JDBC驱动jar文件:ojdbc6.jar用于Oracle数据库,而mysql-connector-java-8.0.11.jar则是针对MySQL数据库的。 ojdbc6.jar是Oracle公司提供的JDBC驱动,适用于Oracle 11g版本。这个驱动包允许...
分别有:数据源配置、数据表结构转换、字段更新、数据迁移、根据oracle SQL的UPDATE DELETE 事物执行记录转为Mysql可执行SQL,同步执行到MySql数据库,此项目为个人兴趣爱好练手项目,项目问题欢迎留言,共同进步...
文档包含了Oracle数据库的连接,以及检测是否连接成功,还包含的MySQL数据库的连接及检测,这是基于初学者的学习使用
总的来说,`mysql-connector-java-3.1.14-bin.jar`和`ojdbc7.jar`是连接MySQL和Oracle数据库的关键组件,它们使得Java应用程序能够无缝地与这些数据库进行交互。在使用这些驱动时,开发人员需要注意版本兼容性、安全...
`lib`文件夹可能包含了对应数据库的JDBC驱动jar包,如`ojdbc.jar`(Oracle)、`mysql-connector-java.jar`(MySQL)和`db2jcc4.jar`(DB2)。在项目中引入这些jar包,就可以直接使用工具类进行数据库连接操作。 ...
下面我们将详细探讨Oracle和MySQL数据库的Java驱动以及JDBC的相关知识点。 首先,Java驱动,也称为JDBC驱动,是Java语言连接数据库的桥梁。根据其工作方式,JDBC驱动可以分为四种类型:类型1(JDBC-ODBC桥)、类型2...
为了在Java应用程序中连接到MySQL数据库,我们需要使用JDBC(Java Database Connectivity),它是Java平台的标准API,允许Java程序与各种数据库进行交互。在描述中提到的mysql-connector-java-5.1.7-bin.jar就是...
总结来说,"C3p0、Oracle数据库连接驱动、MySQL数据库连接驱动jar包.rar"包含的是用于Java应用程序与Oracle和MySQL数据库交互的关键组件。C3p0提供了高效的数据库连接池服务,而Oracle和MySQL的JDBC驱动则确保了Java...
"mysql-connector-java-5.0.8.zip"是MySQL提供的Java驱动程序包,用于连接Java应用程序到MySQL数据库。这个版本的驱动支持MySQL 5.0.x系列服务器,包含了一系列Java类,使得Java程序可以使用JDBC API来执行SQL语句、...
Oracle到MySQL转换工具是一种专门设计用于帮助用户将Oracle数据库中的数据和结构迁移至MySQL数据库的应用程序。这个过程通常称为数据库迁移或数据迁移,是企业在更换数据库系统时常常面临的需求。以下是一些关于...
MySQL到Oracle数据库转换工具是一种专门用于将数据从MySQL数据库系统迁移至Oracle数据库系统的软件解决方案。在数据库管理系统领域,这样的工具非常关键,因为不同的DBMS(数据库管理系统)可能有着不同的数据结构、...
MySQL的JDBC驱动通常称为 Connector/J,它允许Java应用程序与MySQL数据库交互。驱动文件通常为`mysql-connector-java.jar`。在描述中提到的测试程序可能包括创建连接、执行SQL语句和处理结果集等基本操作。 3. **...
在Java编程中,数据库连接是不可或缺的部分,尤其是对于企业级应用而言。Oracle和MySQL是两种广泛应用的关系型数据库...在Java项目中正确配置和使用Oracle/Mysql数据库连接jar包,是构建健壮、高效数据库应用的基础。