- 浏览: 227141 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
zhangzijun1984:
非常感谢!
Maven学习——修改Maven的本地仓库路径 -
kehuoshui:
Class.forName("interbase.i ...
JDBC URL and Driver -
assasszt:
classUtils呢?
ObjectUtil.java -
j_yo:
貌似很多都不可以用吧
jdk1.7新特性 -
gangzi162:
java获取外网客户端MAC地址怎么获取呢?
Java获取客户端MAC地址
原文地址: http://jiauwu.iteye.com/blog/1307617
package com.util.jdbc; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.Enumeration; import org.apache.log4j.Logger; /** * @author ken * @Time 2011-12-10 * SQL API 学习 */ public class JDBCMsg { private static Logger log = Logger.getLogger(JDBCMsg.class); public static void main(String[] args) throws SQLException { //rs connection 未关闭 //getAllDriverMsg(); //getDBParameterMetaData(); demoDB(); } /** * 取一个数据库中所有表的信息 * @throws SQLException */ public static void demoDB() throws SQLException{ Connection conn = JDBCUtil.getConnection(); log.info("###### DatabaseMetaData关于数据库的整体综合信息===="); java.sql.DatabaseMetaData dbmd = conn.getMetaData(); log.info("数据库产品名: " + dbmd.getDatabaseProductName()); log.info("数据库是否支持事务: " + dbmd.supportsTransactions()); log.info("数据库产品的版本号:"+dbmd.getDatabaseProductVersion()); log.info("数据库的默认事务隔离级别:"+dbmd.getDefaultTransactionIsolation()); log.info("支持批量更新:"+dbmd.supportsBatchUpdates()); log.info("DBMS 的 URL:"+dbmd.getURL()); log.info("数据库的已知的用户名称:"+dbmd.getUserName()); log.info("数据库是否处于只读模式:"+dbmd.isReadOnly()); log.info("数据库是否支持为列提供别名:"+dbmd.supportsColumnAliasing()); log.info("是否支持指定 LIKE 转义子句:"+dbmd.supportsLikeEscapeClause()); log.info("是否为外连接提供受限制的支持:"+dbmd.supportsLimitedOuterJoins()); log.info("是否允许一次打开多个事务:"+dbmd.supportsMultipleTransactions()); log.info("是否支持 EXISTS 表达式中的子查询:"+dbmd.supportsSubqueriesInExists()); log.info("是否支持 IN 表达式中的子查询:"+dbmd.supportsSubqueriesInIns()); log.info("是否支持给定事务隔离级别:"+dbmd.supportsTransactionIsolationLevel(1)); log.info("此数据库是否支持事务:"+dbmd.supportsTransactions()); log.info("此数据库是否支持 SQL UNION:"+dbmd.supportsUnion()); log.info("此数据库是否支持 SQL UNION ALL:"+dbmd.supportsUnionAll()); log.info("此数据库是否为每个表使用一个文件:"+dbmd.usesLocalFilePerTable()); log.info("此数据库是否将表存储在本地文件中:"+dbmd.usesLocalFiles()); log.info("底层数据库的主版本号:"+dbmd.getDatabaseMajorVersion()); log.info("底层数据库的次版本号:"+dbmd.getDatabaseMinorVersion()); log.info("JDBC 驱动程序的主版本号:"+dbmd.getJDBCMajorVersion()); log.info("JDBC 驱动程序的次版本号:"+dbmd.getJDBCMinorVersion()); log.info("JDBC 驱动程序的名称:"+dbmd.getDriverName()); log.info("JDBC 驱动程序的 String 形式的版本号:"+dbmd.getDriverVersion()); log.info("可以在不带引号的标识符名称中使用的所有“额外”字符:"+dbmd.getExtraNameCharacters()); log.info("用于引用 SQL 标识符的字符串:"+dbmd.getIdentifierQuoteString()); log.info("允许用于类别名称的最大字符数:"+dbmd.getMaxCatalogNameLength()); log.info("允许用于列名称的最大字符数:"+dbmd.getMaxColumnNameLength()); log.info("允许在 GROUP BY 子句中使用的最大列数:"+dbmd.getMaxColumnsInGroupBy()); log.info("允许在 SELECT 列表中使用的最大列数:"+dbmd.getMaxColumnsInSelect()); log.info("允许在表中使用的最大列数:"+dbmd.getMaxColumnsInTable()); log.info("数据库的并发连接的可能最大数:"+dbmd.getMaxConnections()); log.info("允许用于游标名称的最大字符数:"+dbmd.getMaxCursorNameLength()); log.info("在同一时间内可处于开放状态的最大活动语句数:"+dbmd.getMaxStatements()); //获取所有表 new String[]{"TABLE"} //String[] type = {"TABLE","VIEW"} null log.info("###### 获取表的信息"); ResultSet tSet = dbmd.getTables(null, "%", "%", new String[]{"TABLE","VIEW"}); while (tSet.next()) { log.info(tSet.getRow()+"_表类别:"+tSet.getString("TABLE_CAT")+"_表模式:"+tSet.getString("TABLE_SCHEM") +"_表名称:"+tSet.getString("TABLE_NAME")+"_表类型:"+tSet.getString("TABLE_TYPE") //+"\n_表的解释性注释:"+tSet.getString("REMARKS")+"_类型的类别:"+tSet.getString("TYPE_CAT") //+"\n_类型模式:"+tSet.getString("TYPE_SCHEM")+"_类型名称:"+tSet.getString("TYPE_NAME") //+"\n_有类型表的指定'identifier'列的名称:"+tSet.getString("SELF_REFERENCING_COL_NAME") //+"\n_指定在 SELF_REFERENCING_COL_NAME 中创建值的方式:"+tSet.getString("REF_GENERATION") ); //2_表类别:MANOR_表模式:PUBLIC_表名称:SYS_RESOURCE_表类型:TABLE String tableName = tSet.getString(3); String sql = "select * from " + tableName; ResultSet rsSet = conn.createStatement().executeQuery(sql); ResultSetMetaData rsData = rsSet.getMetaData(); for (int i = 1; i <= rsData.getColumnCount(); i++) { log.info("==列的信息:获取SQL语句的列名:"+rsData.getColumnName(i)+"("+rsData.getColumnLabel(i)+","+rsData.getColumnType(i)+","+rsData.getColumnClassName(i)+")" +" 列宽"+rsData.getPrecision(i)+" 大小写敏感"+rsData.isCaseSensitive(i)+" isReadOnly:"+rsData.isReadOnly(i)); //==列的信息:获取SQL语句的列名:LIMITLEVER(LIMITLEVER,5,java.lang.Short) 列宽5 大小写敏感true isReadOnly:false } } tSet.close(); log.info("###### 获取当前数据库所支持的SQL数据类型"); ResultSet tableType = dbmd.getTypeInfo(); while(tableType.next()){ log.info("数据类型名:"+tableType.getString(1) +",短整型的数:"+tableType.getString(2) +",整型的数:"+tableType.getString(3) +",最小精度:"+tableType.getString(14) +",最大精度:"+tableType.getString(15)); //数据类型名:TIMESTAMP,短整型的数:93,整型的数:23,最小精度:0,最大精度:10 //数据类型名:VARCHAR,短整型的数:12,整型的数:2147483647,最小精度:0,最大精度:0 } log.info("###### 表的主键列信息"); ResultSet primaryKey = dbmd.getPrimaryKeys("MANOR","PUBLIC","SYS_ROLE_RES"); while(primaryKey.next()){ log.info("表名:"+primaryKey.getString("TABLE_NAME")+",列名:"+primaryKey.getString("COLUMN_NAME") +" 主键名:"+primaryKey.getString("PK_NAME")); //表名:SYS_ROLE_RES,列名:SYS_RES_ID 主键名:CONSTRAINT_9 //表名:SYS_ROLE_RES,列名:SYS_ROLE_ID 主键名:CONSTRAINT_9 } log.info("###### 表的外键列信息"); ResultSet foreinKey = dbmd.getImportedKeys("MANOR","PUBLIC","SYS_ROLE_RES"); while(foreinKey.next()){ log.info("主键名:"+foreinKey.getString("PK_NAME")+",外键名:"+foreinKey.getString("FKCOLUMN_NAME") +",主键表名:"+foreinKey.getString("PKTABLE_NAME")+",外键表名:"+foreinKey.getString("FKTABLE_NAME") +",外键列名:"+foreinKey.getString("PKCOLUMN_NAME")+",外键序号:"+foreinKey.getString("KEY_SEQ")); //主键名:PRIMARY_KEY_95,外键名:SYS_RES_ID,主键表名:SYS_RESOURCE,外键表名:SYS_ROLE_RES,外键列名:ID,外键序号:1 //主键名:PRIMARY_KEY_A,外键名:SYS_ROLE_ID,主键表名:SYS_ROLE,外键表名:SYS_ROLE_RES,外键列名:ID,外键序号:1 } log.info("###### 获取数据库中允许存在的表类型"); ResultSet tableTypes = dbmd.getTableTypes(); while(tableTypes.next()){ log.info("类型名:"+tableTypes.getString(1)); /** H2 类型名:SYSTEM TABLE 类型名:TABLE 类型名:TABLE LINK 类型名:VIEW */ } //此外还可以获取索引等的信息 conn.close(); } /** * PreparedStatement 信息 * ResultSetMetaData 信息 * @throws SQLException */ public static void getDBParameterMetaData() throws SQLException{ Connection conn = JDBCUtil.getConnection(); //id,name PreparedStatement pre = conn.prepareStatement("SELECT * FROM SYS_APPTYPE where id = ?"); pre.setInt(1, 3); java.sql.ParameterMetaData pmd = pre.getParameterMetaData(); log.info("参数的个数:"+pmd.getParameterCount()); log.info("获取指定参数的 SQL 类型:"+pmd.getParameterType(1)); log.info("culomn的参数类型:"+pmd.getParameterTypeName(1)); log.info("Java 类的完全限定名称:"+pmd.getParameterClassName(1)); log.info("获取指定参数的模式:"+pmd.getParameterMode(1)); log.info("获取指定参数的指定列大小:"+pmd.getPrecision(1)); log.info("获取指定参数的小数点右边的位数:"+pmd.getScale(1)); log.info("是否允许在指定参数中使用 null 值:"+pmd.isNullable(1)); log.info("指定参数的值是否可以是带符号的数字:"+pmd.isSigned(1)); //获取结果集元数据 ResultSet rs = pre.executeQuery(); while (rs.next()) { log.info(rs.getString(1)+"___"+rs.getString(2)); } rs.close(); } /** * 获取所有Driver信息 */ public static void getAllDriverMsg(){ Enumeration<Driver> drivers = DriverManager.getDrivers(); while(drivers.hasMoreElements()) { Driver d = drivers.nextElement(); log.info(d.getClass().getName()+"_"+d.getMajorVersion()); } } }
发表评论
-
Tomcat设置JVM内存及开启远程调试
2012-07-27 09:18 1649(1)设置JVM内存 set JAVA_OPTS=%JAVA_ ... -
Dom4j and XPath
2012-02-27 13:29 2552很多东西长时间不用, 有些生疏了, 从网上整理了些资料, 丢在 ... -
JDBC URL and Driver
2012-02-24 13:55 3650来源于网上 ======================== ... -
Pagging
2012-01-12 18:32 9831. Derby http://db.apache.org/ ... -
[转]MySQL start service 1067
2011-06-01 09:00 1360启动mysql服务时报错: 在 本地计算机 无法启动mysq ... -
Java获取客户端MAC地址
2011-03-06 09:41 4743原文地址: http://rodneytt.iteye.com ... -
Java OOM
2011-03-05 00:02 1190原文地址:http://www.blogj ... -
Oracle 字符集的查看和修改
2011-01-03 15:21 1051原文地址: http://www.360doc.com/con ... -
收藏的一些资料
2010-12-23 17:07 979收藏的一些资料 -
ClassInfoUtil.java
2010-12-01 07:31 1107/* * ClassInfoUtil.java ... -
ClassUtil.java
2010-12-01 07:27 1898/* * File:ClassUtil.jav ... -
ObjectUtil.java
2010-12-01 07:26 2855/* * File:ObjectUtil.java ... -
JDK7新增的工具方法列表
2010-09-15 07:02 1273转自:JDK7新增的工具方法列表http://kenwu.me ... -
jdk1.7新特性
2010-09-15 06:58 3174原文地址:http://caowei3047.iteye.co ... -
jdk1.6新特性的介绍
2010-09-15 06:53 1282Java 平台的第六个版本, Standard Edition ... -
[转]JDK1.6.0新特性详解与代码示例
2010-09-15 06:48 1372原文地址: http://www.blogjava.net/r ... -
Web项目重命名
2010-05-28 19:27 1407原来项目名称是 PetStore 部署到tomcat输http ... -
XML 知识
2010-05-18 08:14 1107XML及DTD概览 http://www.iteye.com/ ... -
TDD可以带来好处
2010-05-12 07:47 1337提供明确的目标: 你很清楚, 一旦结束(测试通过), 你的工作 ... -
isNumber
2010-02-09 13:42 1025public static boolean isN ...
相关推荐
db-meta 是关系型数据库元数据获取工具,把数据库->schema->表->列,主键、外键、索引,触发器、存储过程、函数等抽象为对象,易于使用方便序列化。 1、 提供丰富的接口,能够获取常见的所有数据库元数据。...
- **数据库元数据**:获取关于数据库、表、列等的信息。 总的来说,JDBC DB2驱动是Java开发者与IBM DB2数据库进行交互的重要工具,它提供了一种标准化、高效且可靠的连接方式。正确配置和使用这个驱动,能够帮助你...
DB2 JDBC驱动还支持高级特性,例如事务管理、批处理、预编译的SQL语句(PreparedStatement)、存储过程调用以及数据库元数据获取等。此外,它提供了一套全面的异常处理机制,帮助开发者处理连接失败、权限问题和其他...
6. 其他特性:包括连接池、批处理、游标、元数据查询等,提供了丰富的功能和优化选项。 在实际应用中,为了确保最佳性能和稳定性,需要配置合适的连接参数,如最大连接数、超时设置等。此外,定期更新驱动到最新...
使用这些驱动,开发者可以创建数据库连接、执行SQL语句、处理结果集、管理事务,并进行数据库元数据的查询。例如,JDBC驱动通常需要`Class.forName()`来加载驱动,然后使用`DriverManager.getConnection()`建立连接...
此外,Hive JDBC还支持事务管理和元数据查询,为Java应用提供了全面的Hive数据库访问能力。在大数据分析场景下,Hive JDBC驱动是连接Java应用和Hadoop生态系统的桥梁,使得数据分析工作变得更加便捷高效。
为了解决这个问题,我们可以考虑实现一个通用转换类,例如使用Java中的反射机制来动态读取Excel文件的元数据,并根据元数据生成对应的SQL语句来将Excel数据导入到数据库中。 Excel读取数据导入DB2数据库需要使用POI...
- **数据库元数据获取**: 通过`DatabaseMetaData`接口,可以获取关于数据库、表、列等的各种元数据信息。 在实际开发中,通常将这两个jar文件添加到项目的类路径(classpath)中,或者在Maven或Gradle等构建工具的...
6. **数据库元数据**:获取数据库的结构信息,如表字段、索引、主键和外键等。 7. **插件扩展**:SQuirreL支持安装插件,可以扩展其功能,例如支持更多的数据库类型或提供额外的可视化工具。 对于DB2数据库来说,...
通过DatabaseMetaData接口,可以获取关于数据库的各种元数据,如表、列、索引等信息。 10. **兼容性与版本**: IBM DB2 JDBC 10.5驱动适用于Java 6及更高版本,并兼容不同的DB2版本。升级或降级数据库或JDBC驱动...
7. 元数据查询:通过`DatabaseMetaData`接口,开发者可以获取关于AS/400数据库的信息,如表结构、列信息、索引等。 8. 高级功能:jt400还包括对存储过程的支持,以及对触发器、视图等数据库对象的操作。 在实际...
DB2 支持多种数据模型,如关系模型,其中元数据包含了数据库中对象的定义,如表结构、列类型、约束等。元数据主要存储在系统的编目表和视图中,比如 SYSIBM 模式的表和 SYSCAT 模式的视图。开发人员可以通过查询这些...
数据库元数据核心部分,该部分完全独立,不依赖任何第三方,获取元数据部分的代码参考了MyBatis Generator。 如果你要连接数据库,需要有该数据库的JDBC驱动 DBMetadata-generator 利用数据库元数据,根据模板生成...
7. **数据库元数据**:通过`DatabaseMetaData`接口,可以获取关于数据库的元信息,如表结构、列信息、索引等,有助于动态构建SQL语句。 8. **连接池管理**:为了优化性能和资源利用率,开发者通常使用连接池(如C3P...
- 提供元数据查询,获取数据库表、列等信息。 4. **注意事项** - SQLite JDBC驱动不支持所有的JDBC标准特性,例如,它不支持存储过程。 - `sqlitejdbc.dll`是Windows平台下的动态链接库,用于本地调用,确保在...
- **获取结果集元数据**:使用`ResultSet`对象的`getMetaData()`方法获取元数据信息。 - **遍历并打印元数据**:循环遍历所有列,并打印出每列的名称、类型名称、类型编码以及精度。 #### 4. 结论 通过以上介绍,...
此外,它还提供了对数据库元数据的访问,允许开发人员动态地获取关于数据库架构的信息,如表、列和索引。 在部署Java应用到生产环境时,确保db2jcc.jar和db2jcc_license_cu.jar与应用程序一起打包是非常重要的。在...
JAR(Java Archive)文件是一种归档格式,用于打包Java类库,包括类文件、资源文件以及相关的元数据。 DB2 JAR包通常包含以下几种类型的驱动: 1. **类型1(JDBC-ODBC桥接驱动)**:这是一种早期的解决方案,依赖...
- `<RequestCache>`标签下的`<MetadataCache>`和`<ParsingCache>`定义了元数据和解析结果的缓存策略。 7. **注意事项**: - 使用C-JDBC时,可能会遇到与特定ORM框架(如Hibernate)的兼容性问题,例如HQL的限制。...