三大元数据--DatabaseMetaData,ParameterMetaData,ResultSetMetaData

第一个元数据 在另一篇文章中提及:
http://blog.csdn.net/dada111111111/article/details/51326837
这里 就不陈述了。


三个元数据将在后面的代码中进行解释。首先了解每个元数据的作用。

第二个元数据的作用:获得占位符的个数
第三个元数据:可以获得结果集中的列的相关信息(列名,列的值类型,类的个数等),在OR映射
(什么是or? (ORM) O=object, R=relation ,M=mapping–也就是将关系表映射到实体类javaBean 中,实现持续的保存数据,减轻数据库的负担。)中,可以得到列的名称和属性类型并反射到JavaBean中

简单的代码示例:

package com.test.metaDataDemo;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import org.junit.Test;
import com.mystore.utils.JdbcUtils;

//数据库元数据的测试demo
/*
 * 使用c3p0连接池
 * 三大元数据
 * 1.DataBaseMetaData--数据元数据
 * 2.ParemeterMetaData--参数元数据--获得占位符的个数 可用于循环设置占位符
 * 3.ResultSetMetaData--结果集元数据--封装了结果集的列,包括列的名称和值类型
 */
public class metaDataDemo {
    /********************元数据1*********************/
    //测试数据元数据
    @Test
    public void testMetaData()throws Exception{
        //得到连接
        Connection conn = JdbcUtils.getConnection();
        //获得元数据
        DatabaseMetaData metaData = conn.getMetaData();
        //得到url
        String string = metaData.getURL();
        System.out.println(string);
        //getUserName
        System.out.println("userName:"+metaData.getUserName());
    } 
    /********************元数据2*********************/
    //测试参数元数据
    @Test
    public void testParameterMetaData() throws Exception{
        Connection conn =  JdbcUtils.getConnection();
        //预处理
        PreparedStatement  stmt = conn.prepareStatement("select * from users where userName=?");
        //获得元数据
        ParameterMetaData pmd = stmt.getParameterMetaData();
        //参数元数据 可以获得预处理占位符的个数
        System.out.println(pmd.getParameterCount());
    }
    /********************元数据*********************/
    @Test
    public void testResultSetMetaData() throws Exception{
        Connection conn =  JdbcUtils.getConnection();
        //预处理
        PreparedStatement  stmt = conn.prepareStatement("select * from users ");
        //返回结果集
        ResultSet rs = stmt.executeQuery();
        //获得结果集元数据
        ResultSetMetaData rData = rs.getMetaData();
        //获得列的数量
        int columnCount = rData.getColumnCount();
        System.out.println("列的数量为:"+columnCount);
        //循环输出列名
        for (int i = 1; i < columnCount+1; i++) {
            System.out.println("列名依次为:"+rData.getColumnName(i)); 
            }
        //还可以获得列的属性类型等信息 就不列举了
        }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值