Contents
  1. 1. 一、元数据介绍
    1. 1.1. 1.1、DataBaseMetaData元数据
    2. 1.2. 1.2、ParameterMetaData元数据
    3. 1.3. 1.3、ResultSetMetaData元数据

转:http://www.cnblogs.com/xdp-gacl/p/4006830.html

一、元数据介绍

  元数据指的是”数据库”、”表”、”列”的定义信息。

1.1、DataBaseMetaData元数据

Connection.getDatabaseMetaData()获得代表DatabaseMetaData元数据的DatabaseMetaData对象。
  DataBaseMetaData对象的常用方法:
• getURL():返回一个String类对象,代表数据库的URL。
• getUserName():返回连接当前数据库管理系统的用户名。
• getDatabaseProductName():返回数据库的产品名称。
• getDatabaseProductVersion():返回数据库的版本号。
• getDriverName():返回驱动驱动程序的名称。
• getDriverVersion():返回驱动程序的版本号。
• isReadOnly():返回一个boolean值,指示数据库是否只允许读操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
* @Method: testDataBaseMetaData
* @Description: 获取数据库的元信息
* @throws SQLException
*/

@Test
public void testDataBaseMetaData() throws SQLException {
Connection conn = JdbcUtils.getConnection();
DatabaseMetaData metadata = conn.getMetaData();
//getURL():返回一个String类对象,代表数据库的URL
System.out.println(metadata.getURL());
//getUserName():返回连接当前数据库管理系统的用户名
System.out.println(metadata.getUserName());
//getDatabaseProductName():返回数据库的产品名称
System.out.println(metadata.getDatabaseProductName());
//getDatabaseProductVersion():返回数据库的版本号
System.out.println(metadata.getDatabaseProductVersion());
//getDriverName():返回驱动驱动程序的名称
System.out.println(metadata.getDriverName());
//getDriverVersion():返回驱动程序的版本号
System.out.println(metadata.getDriverVersion());
//isReadOnly():返回一个boolean值,指示数据库是否只允许读操作
System.out.println(metadata.isReadOnly());
JdbcUtils.release(conn, null, null);
}

1.2、ParameterMetaData元数据

  PreparedStatement.getParameterMetaData() 获得代表PreparedStatement元数据的ParameterMetaData对象。
  Select * from user where name=? And password=?
  ParameterMetaData对象的常用方法:
• getParameterCount(): 获得指定参数的个数
• getParameterType(int param):获得指定参数的sql类型,MySQL数据库驱动不支持

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* @Method: testParameterMetaData
* @Description: 获取参数元信息
* @throws SQLException
*/

@Test
public void testParameterMetaData() throws SQLException {
Connection conn = JdbcUtils.getConnection();
String sql = "select * from user wherer name=? and password=?";
//将SQL预编译一下
PreparedStatement st = conn.prepareStatement(sql);
ParameterMetaData pm = st.getParameterMetaData();
//getParameterCount() 获得指定参数的个数
System.out.println(pm.getParameterCount());
//getParameterType(int param):获得指定参数的sql类型,MySQL数据库驱动不支持
System.out.println(pm.getParameterType(1));
JdbcUtils.release(conn, null, null);
}

1.3、ResultSetMetaData元数据

  ResultSet. getMetaData() 获得代表ResultSet对象元数据的ResultSetMetaData对象。
  ResultSetMetaData对象的常用方法:
• getColumnCount() 返回resultset对象的列数
• getColumnName(int column) 获得指定列的名称
• getColumnTypeName(int column)获得指定列的类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 /**
* @Method: testResultSetMetaData
* @Description: 结果集的元数据
* @throws Exception
*/

@Test
public void testResultSetMetaData() throws Exception {
Connection conn = JdbcUtils.getConnection();
String sql = "select * from account";
PreparedStatement st = conn.prepareStatement(sql);
ResultSet rs = st.executeQuery();
//ResultSet.getMetaData()获得代表ResultSet对象元数据的ResultSetMetaData对象
ResultSetMetaData metadata = rs.getMetaData();
//getColumnCount() 返回resultset对象的列数
System.out.println(metadata.getColumnCount());
//getColumnName(int column) 获得指定列的名称
System.out.println(metadata.getColumnName(1));
//getColumnTypeName(int column)获得指定列的类型
System.out.println(metadata.getColumnTypeName(1));
JdbcUtils.release(conn, st, rs);
}
Contents
  1. 1. 一、元数据介绍
    1. 1.1. 1.1、DataBaseMetaData元数据
    2. 1.2. 1.2、ParameterMetaData元数据
    3. 1.3. 1.3、ResultSetMetaData元数据