首页 > 编程知识 正文

数据库元数据管理,元数据库是什么

时间:2023-05-03 16:50:46 阅读:185385 作者:4211

一、元数据

1、数据库的元数据*元数据:数据库、或者数据库表,表中的字段的一些信息,比如数据库名称,驱动,表中的主键的名称。*作用:主要完成一些通用型比较高得代码,一般都是使用在框架里面*在数据库里面,有三类元数据-第一类:数据库元数据.--如何获取数据库的元数据通过connection.getMetaData()得到数据库元数据DatabaseMetaData对象*DatabaseMetaData对象方法-getDriverClassName():获取数据库驱动名称-getURL():获取连接数据库的地址-getUserName():获取连接数据库的用户名-getTables(String catalog,String schemaPattern,String tableNamePattern,String[] types):获取数据库表的描述-getPrimaryKeys(String catalog,String schema,String table):获取表中主键的描述-第二类: 参数元数据--如何获取参数元数据通过preparedStatement.getParameterMetaData()获取参数元数据ParameterMetaData*ParameterMetaData方法-getParameterCount():得到参数的数量******-getparameterTypeName(int param):得到指定位置参数的类型--该方法存在的问题:在mysql数据库里面,对参数元数据的支持不是很好想要让mysql数据库支持参数元数据,需要设置一下即使添加了?generateSimpleParameterMetadata=true,对参数元数据的支持也不是很好,无论什么类型得到的都是varchar​-第三类:结果集元数据--如何得到结果集元数据通过preparedStatement方法getMetaData得到结果集元数据ResultSetMetaData*ResultSetMetaData里面的方法:-getColumnCount():得到结果集里面列的数量-getColumnName(int column):得到结果集指定列名称-getColumnTypeName(int column):获得指定列的类型

二、代码演示

package com.ayit.review;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 java.sql.SQLException;import com.mchange.v2.c3p0.ComboPooledDataSource;import com.mysql.jdbc.SQLError;/** * 元数据的复习 * @author XiaYuJia */public class review {public static void main(String[] args) {Connection connection = null;PreparedStatement pst = null;ResultSet rs = null;try {// 创建ComboPooledDataSource对象,用户获取数据源ComboPooledDataSource ds = new ComboPooledDataSource();// 获取连接Connectionconnection = ds.getConnection();// 数据库元数据DatabaseMetaData metaData = connection.getMetaData();System.out.println("==========================================================");// 获取数据库参数String driverName = metaData.getDriverName();String url = metaData.getURL();String userName = metaData.getUserName();System.out.println("DName:" + driverName + " url:" + url + " userName:" + userName);ResultSet pkey = metaData.getPrimaryKeys(null, null, "account");ResultSet tables = metaData.getTables(null, null, "account", new String[] { "TABLE" });while (tables.next()) {System.out.println(tables.getString("TABLE_NAME"));}while (pkey.next()) {System.out.println("name:" + pkey.getString(1));}// 编写sql语句String sql = "select * from account where id = ?";// 预编译pst = connection.prepareStatement(sql);System.out.println("==========================================================");// 参数元数据ParameterMetaData pmd = pst.getParameterMetaData();int parameterCount = pmd.getParameterCount();String parameterTypeName = pmd.getParameterTypeName(1);System.out.println("count:" + parameterCount+ " parameterTypeName:" + parameterTypeName);System.out.println("==========================================================");// 结果集元数据ResultSetMetaData rmd = pst.getMetaData();int columnCount = rmd.getColumnCount();String columnName = rmd.getColumnName(1);String columnTypeName = rmd.getColumnTypeName(1);System.out.println("Count:" + columnCount + " columnName:"+ columnName + " columnTypeName:" + columnTypeName);pst.setInt(1, 2);rs = pst.executeQuery();// 遍历结果集while (rs.next()) {String string = rs.getString(1);String string2 = rs.getString(2);int int1 = rs.getInt(3);System.out.println(string + ":" + string2 + int1);}} catch (SQLException e) {// 释放资源if (rs != null) {try {rs.close();} catch (SQLException e1) {e1.printStackTrace();}rs = null;}if (pst != null) {try {pst.close();} catch (SQLException e1) {e1.printStackTrace();}pst = null;}if (connection != null) {try {connection.close();} catch (SQLException e1) {e.printStackTrace();}connection = null;}e.printStackTrace();}}}

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。