1、元数据
在jdbc中获取数据库的定义,例如:数据库、表、列的定义信息。就用到元数据。
在jdbc中可以使用: 数据库元数据、参数元数据、结果集元数据
(元数据定义相关api, ..MetaData)
1.1、数据库元数据
Connection.getDatabaseMetaData()
DataBaseMetaData对象
1.getURL():
返回一个String类对象,代表数据库的URL。
2.getUserName():
返回连接当前数据库管理系统的用户名。
3.getDatabaseProductName():
返回数据库的产品名称。
4.getDatabaseProductVersion():
返回数据库的版本号。
5.getDriverName():
返回驱动驱动程序的名称。
6.getDriverVersion():
返回驱动程序的版本号。
7.isReadOnly():
返回一个boolean值,指示数据库是否只允许读操作。
1.2、参数元数据
PreparedStatement . getParameterMetaData()
获得代表PreparedStatement元数据的ParameterMetaData对象。
Select * from user where name=? And password=?
ParameterMetaData对象
1. getParameterCount() :
获得指定参数的个数
2. getParameterType(int param) :
获得指定参数的sql类型
1.3、结果集元数据
ResultSet. getMetaData()
获得代表ResultSet对象元数据的ResultSetMetaData对象。
ResultSetMetaData对象
1. getColumnCount()
返回resultset对象的列数
2. getColumnName(int column)
获得指定列的名称
3. getColumnTypeName(int column)
获得指定列的类型
public class App {
//1. 数据库元数据 @Test public void testDB() throws Exception { // 获取连接 Connection conn = JdbcUtil.getConnection(); // 获取数据库元数据 DatabaseMetaData metaData = conn.getMetaData();// alt + shift + L 快速获取方法返回值 System.out.println(metaData.getUserName()); System.out.println(metaData.getURL()); System.out.println(metaData.getDatabaseProductName()); } //2. 参数元数据 @Test public void testParams() throws Exception { // 获取连接 Connection conn = JdbcUtil.getConnection(); // SQL String sql = "select * from dept where deptid=? and deptName=?"; // Object[] values = {"tom","888"}; PreparedStatement pstmt = conn.prepareStatement(sql); // 参数元数据 ParameterMetaData p_metaDate = pstmt.getParameterMetaData(); // 获取参数的个数 int count = p_metaDate.getParameterCount(); // 测试 System.out.println(count); } // 3. 结果集元数据 @Test public void testRs() throws Exception { String sql = "select * from dept "; // 获取连接 Connection conn = JdbcUtil.getConnection(); PreparedStatement pstmt = conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); // 得到结果集元数据(目标:通过结果集元数据,得到列的名称) ResultSetMetaData rs_metaData = rs.getMetaData(); // 迭代每一行结果 while (rs.next()) { // 1. 获取列的个数 int count = rs_metaData.getColumnCount(); // 2. 遍历,获取每一列的列的名称 for (int i=0; i<count; i++) { // 得到列的名称 String columnName = rs_metaData.getColumnName(i + 1); // 获取每一行的每一列的值 Object columnValue = rs.getObject(columnName); // 测试 System.out.print(columnName + "=" + columnValue + ","); } System.out.println(); } } }
|