暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

人大金仓数据库JDBC元数据介绍

原创 数据猿 2023-12-19
643


关键字:

JDBC 数据库元数据 参数元数据 结果集元数据、人大金仓、KingbaseES

概述

获取数据库元数据

DatabaseMetaData类的getTable(),getColumns()方法的使用,以及参数传递问题

1.获取DatabaseMetaData实例:

Connection conn = DriverManager.getConnection(url, username, password);

DatabaseMetaData dbmd = conn.getMetaData();

获取数据库属性的方法

//获取数据库名称

dbmd.getDataBaseProductName()

//获取数据库版本

dbmd.getDatabaseProductVersion()

//获取数据库驱动

dbmd.getDriverName()

//获取驱动版本

dbmd.getDriverVersion()

//获取数据库用户名

dbmd.getUserName()

//获取数据库表结构:可以获取某一个具体的表,或者模糊获取多个数据库表

ResultSet rs = dbmd.getTables(String catalog, String schemaPattern, String tableNamePattern, String types[]);

catalog: 要获得表所在的编目(获取所连接的数据库的名称)

schemaPattern:要获得表所在的模式

tableNamePattern:数据表的表达式(数据表名称)

types[]: 数据表的类型 可能的类型为"Table","VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYSNONYM"

不同类型的数据库,例如Oracle数据库,MySql数据库,PostgreSql数据库具体所传的参数不一样

例如PostgreSql数据库:

dbmd.getTables(conn.getCatalog(), "public", "tableName", "new String[]{"TABLE"}");

Oracle数据库:

dbmd.getTables(null, conn.getMetaData().getUserName(), "tableName", null); //conn.getMetaData().getUserName(): 获取数据库用户名

MySql数据库:

dbmd.getTables(null, conn.getCatalog(), "student", new String[]{"table"});

//获取数据库具体某个表的结构

ResultSet rs = dbmd.getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern);

catalog: 要获得表所在的编目

schemaPattern:要获得表所在的模式

tableNamePattern:数据表名称

columnNamePattern:数据列表达式

例如PostgreSql数据库:

dbmd.getColumns(conn.getCatalog(), "public", "tableName", null); //null表示查询所有列,public是固定的

Oracle数据库:

dbmd.getColumns(null, conn.getMetaData().getUserName(), "tableName", null);

MySql数据库:

dbmd.getColumns(null, conn.getCatalog(), "tableName", null);

获取 参数 元数据:

·ParameterMetaData pstmt.getParameterMetaData()--返回一个ParameterMetaData对象,它包含有关此PreparedStatement对象的每个参数标记的编号,类型和属性的信息
·int getParameterCount()---获取PreparedStatement对象中的参数的数量

//预编译sql语句

String sql = "insert into student(Sno, Sname, Ssex, Sage, Sdept) values(?, ?, ?, ?, ?)"

PreparedStatement pstmt = conn.prepareStatement(sql);

//获取预编译SQL语句的参数,并打印参数数量

ParameterMetaData pMetaData = pstmt.getParameterMetaData();

sout(pMetaData.getParameterCount());

获取结果集元数据:

·ResultSetMetaData getMetaData()---返回一个ResultSetMetaData对象,它包含查询结果集ResultSet对象的元数据

·int getColumnCount()---返回此ResultSet对象中的列数

·String getColumnName(int column)---获取指定列的名称

//预编译SQL语句并执行

String sql = "select * from student";

PreparedStatement pstmt = conn.prepareStatement(sql);

ResultSet rs = pstmt.executeQuery();

Statement st = conn.createStatement();

ResultSet rs = st.executeQuery(sql);

//可以获取结果集的信息

rs.getObject(columnIndex) 或 rs.getObject(columnLabel);

rs.rs.getShort(columnIndex)或rs.getShort(columnLabel);

//获取查询结果集的元数据,并打印

ResultSetMetaData rMetaData = rs.getMetaData();

//打印列的相关信息

sout(rMetaData.getColumnType(columnIndex));

sout(rMetaData.getColumnTypeName(columnIndex));

参考资料

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论