JDBC学习笔记之元数据

    元数据是关于数据的组织,数据域及其关系的信息,简而言之,元数据就是关于数据的数据。

    好比,我们得到数据库、表、列等的定义信息。这些信息,就是元数据。

  JDBC针对元数据的操作主要由常用的三个借口展开,即Connection,Statement,ResultSet:数据库元数据(DatabaseMetaData)、参数元数据(ParameterMetaData)、结果集元数据(ResultSetMetaData)。

一、数据库元数据(DatabaseMetaData)

    数据库元数据(DatabaseMetaData),主要拿的是有关于数据库的相关信息,通过Connection.getDatabaseMetaData()得到数据库元数据对象(DatabaseMeatData)。该对象有如下常用方法:

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

代码示例:

//1.数据库元数据
	@Test
	public void testDB() throws Exception{
		//获取连接
		Connection conn = JdbcUtil.getConnection();
		//获取数据库元数据
		DatabaseMetaData metaData = (DatabaseMetaData) conn.getMetaData();
		
		System.out.println(metaData.getUserName());
		System.out.println(metaData.getURL());
		System.out.println(metaData.getDatabaseProductName());
		
	}
	


二、参数元数据(ParameterMetaData)

    参数元数据(ParameterMetaData),主要是获取对于预编译sql语句的一些信息。PreparedStatement . getParameterMetaData()获得代表PreparedStatement元数据的ParameterMetaData对象。该对象常用方法如下:


  • getParameterCount() :获得指定参数的个数
  • getParameterType(int param) :获得指定参数的sql类型


代码示例:

//2.参数元数据
	@Test
	public void testParams() throws Exception{
		//获取连接
		Connection conn = JdbcUtil.getConnection();
		//SQL
		String sql = "select * from dept where deptId=? and deptName=?";
		
		PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql);
		
		//参数元数据
		 ParameterMetaData p_metaData = pstmt.getParameterMetaData();
		 //获取参数个数
		 int count = p_metaData.getParameterCount();
		 
		 System.out.println(count);
		
	}

三、结果集元数据(ResultSetMetaData)

    结果集元数据(ResultSetMetaData),主要获取返回的结果集信息。ResultSet. getMetaData() 获得代表ResultSet对象元数据的ResultSetMetaData对象。该对象常用方法如下:

  • getColumnCount() :返回resultset对象的列数
  • getColumnName(int column) :获得指定列的名称
  •  getColumnTypeName(int column):获得指定列的类型

代码示例:


//3.结果集元数据
	@Test
	public void testRS() throws Exception {
		String sql = "select * from dept";
		//获取连接
		Connection conn = JdbcUtil.getConnection();
		//预编译sql
		PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql);
		//返回结果集
		ResultSet rs = pstmt.executeQuery();
		
		//得到结果集元数据(目标:通过结果集元数据,得到各列的名称)
		ResultSetMetaData rs_metaData = (ResultSetMetaData) rs.getMetaData();
		
		//迭代每一行的结果
		while(rs.next()){
			//1.获取列的个数
			int count = rs_metaData.getColumnCount();
			//2.遍历得到每一列的名称
			for(int i = 0;i<count;i++){
				//得到列的名称
				int j = 1;
				String columnName = rs_metaData.getColumnName(i + j);
				
				//获取每一列的值
				Object columnValue = rs.getObject(i+1);
				//测试
				System.out.println(columnName + "+" + columnValue);
				
			}
		}
	}

    元数据结合BeanUtils可以定义一个持久层框架。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值