JDBC元数据

JDBC元数据

所谓的元数据(Meta Data)指的是一些附加在正规操作上的数据内容(关于数据库本身的数据信息),例如:如果说现在两个人互相交谈,那么虽然交谈的内容是核心的数据,但是在这个数据之上还会包含有交谈的辅助信息,例如:我是否跟一个人交谈?我交谈的人能否懂我的意思?

范例:获取数据库元数据信息

 

import java.sql.*;
import java.util.Arrays;

public class JDBCDemo {

    public static final String DRIVER = "com.mysql.cj.jdbc.Driver";    //数据库的驱动程序
    public static final String URL="jdbc:mysql://localhost:3306/yootk"; //连接地址
    public static final String USER = "root";   //用户名
    public static final String PASSWORD = "mysqladmin"; //密码

    public static void main(String[] args) throws Exception{

        Class.forName(DRIVER);
        Connection connection = DriverManager.getConnection(URL,USER,PASSWORD);  //连接数据库
        DatabaseMetaData dm = connection.getMetaData();   //获取元数据
        System.out.println("【数据库的主版本号】:"+dm.getDatabaseMajorVersion());
        System.out.println("【子版本号】:"+dm.getDatabaseMinorVersion());
        System.out.println("【数据库产品名称】:"+dm.getDatabaseProductName());
        ResultSet resultSet =  dm.getPrimaryKeys(null,"root","user");  //获取表信息
        if (resultSet.next()){   //判断是否还有下一个元素
            System.out.println("【catalog】"+resultSet.getObject(1));
            System.out.println("【表名称】"+resultSet.getObject(3));
        }

    }

}

【数据库的主版本号】:8
【子版本号】:0
【数据库产品名称】:MySQL
【catalog】mysql
【表名称】user

除了以上可以获取的数据库的元数据之外,和我们编写程序过程之中最为重要的操作是有些差异的,因为以上只是获取了据库的信息,而真正有用的是查询结果集元数据。

范例:获取结果集数据

import jdk.jfr.MetadataDefinition;

import java.sql.*;
import java.util.Arrays;

public class JDBCDemo {

    public static final String DRIVER = "com.mysql.cj.jdbc.Driver";    //数据库的驱动程序
    public static final String URL="jdbc:mysql://localhost:3306/yootk"; //连接地址
    public static final String USER = "root";   //用户名
    public static final String PASSWORD = "mysqladmin"; //密码

    public static void main(String[] args) throws Exception{

        Class.forName(DRIVER);
        Connection connection = DriverManager.getConnection(URL,USER,PASSWORD);  //连接数据库
        String sql = "SELECT uid,name,age,birthday,salary,note FROM user WHERE uid = ?;";    //查询sql语句
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setObject(1,1);   //设置查询占位
        ResultSet resultSet = preparedStatement.executeQuery(); //查询
        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();    //获取查询结果集的元数据,preparedStatement也可以获取集的元数据
        System.out.println("获取返回数的列数:"+resultSetMetaData.getColumnCount());
        for (int x = 1;x < resultSetMetaData.getColumnCount();x++){
            System.out.printf("列名称:%s、列类型:%s、列常量值:%s\n",
                                resultSetMetaData.getColumnName(x),
                                resultSetMetaData.getColumnTypeName(x),
                                //每一个列名对应一个列常量值
                                resultSetMetaData.getColumnType(x));
        }

    }

}

获取返回数的列数:6
列名称:uid、列类型:BIGINT、列常量值:-5
列名称:name、列类型:VARCHAR、列常量值:12
列名称:age、列类型:INT、列常量值:4
列名称:birthday、列类型:DATE、列常量值:91
列名称:salary、列类型:FLOAT、列常量值:7

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值