esProc JDBC 获取表信息

概要

通过调用java.sql.DatabaseMetaData 类中的各种方法,程序可以动态了解数据库,获取数据源连接到的数据库表结构等信息。

本文主要介绍如何在 JAVA 中使用 DatabaseMetaData 类获取 esProc JDBC 表信息 (ctx、btx、csv、txt、xlsx、xls)。

使用 esProc JDBC 设置onlyServer 选项缺省或为false 时返回本地主目录下的数据文件信息,为true 时返回服务器主目录下的数据文件信息

getTables()

描述:

返回本地或服务器主目录下的数据文件信息。

语法:

dbmd.getTables(String catalog,String schema,String tableNamePattern,String[] types)

参数:

tableNamePattern指出要返回表名与该参数匹配的表,参数为空时获取所有表信息。支持模糊查询,查找子目录的数据表时,不同操作系统需使用不同的文件分隔符号。

catalog/schema/types连接 esProc JDBC 时没有 catalog/schema/types 属性概念,均赋值为 null

示例:

public void getTablesTest() throws ClassNotFoundException, SQLException{

Connection con = null;

// 建立连接

Class.forName("com.esproc.jdbc.InternalDriver");

con= DriverManager.getConnection("jdbc:esproc:local://?onlyServer=true");

DatabaseMetaData dbmd = con.getMetaData();

ResultSet rs =dbmd.getTables(null, null, null, null);

while(rs.next()) {

System.out.println(rs.getString("TABLE_NAME"));

… …

}

… …

}

getColumns()

描述:

返回ResultSet 中表的字段信息。字段类型是一个与 java.sql.Types 中的类型常量匹配的整数。

语法:

dbmd.getColumns(String catalog, String schemaPattern,String tableNamePattern, String columnNamePattern)

参数:

tableNamePattern指定要获取字段信息的表名,为空时获取所有表的字段信息,查找子目录的数据表时,不同操作系统需使用不同的文件分隔符号。

columnNamePattern指定列名称,为空时获取所有字段信息。支持模糊查询。

catalog/schemaPattern连接esProc JDBC 时没有 catalog/ schemaPattern 属性概念,均赋值为 null

示例:

public void getColumnsTest() throws ClassNotFoundException, SQLException{

Connection con = null;

// 建立连接

Class.forName("com.esproc.jdbc.InternalDriver");

con= DriverManager.getConnection("jdbc:esproc:local://?onlyServer=true");

DatabaseMetaData dbmd=con.getMetaData();

ResultSet rs =dbmd.getColumns(null, null, “test.txt”, null);

List<Map<String, Object>> tempList = new ArrayList<Map<String, Object>>();

while(rs.next()) {

Map<String, Object> map = new HashMap<String, Object>();

map.put("COLUMN_NAME", rs.getString("COLUMN_NAME"));

map.put("DATA_TYPE", rs.getString("DATA_TYPE"));

map.put("TYPE_NAME", rs.getString("TYPE_NAME"));

map.put("COLUMN_SIZE", rs.getString("COLUMN_SIZE"));

map.put("NULLABLE", rs.getString("NULLABLE"));

tempList.add(map);

… …

}

… …

}