关于ResultSetMetaData 接口的应用

咱们继续学Java——高级篇 第九十篇:之JDBC元数据在数据库工具开发中的应用 哈喽,各位Java编程爱好者们!在之前对JDBC的学习中,我们已经掌握了很多操作数据库的技能。今天,我们将聚焦于JDBC元数据在数据库工具开发中的应用。我深知元数据在数据库相关工作中的重要性,它就像一把钥匙,能够帮助我们深入了解数据库的结构和特性,从而开发出更强大、更灵活的数据库工具。我希望通过这篇博客,用通俗易懂的语言为大家详细讲解如何利用JDBC元数据获取数据库和结果集的信息,以及如何将这些知识运用到实际的数据库工具开发中。我会结合实际代码示例,让大家更加直观地理解这些概念和操作流程。希望大家在阅读过程 阅读详情

    这些天做报表系统,报表很多啊,一个存储报表的数据表可以有几十个字段,如何从数据库中获取数据成了一个麻烦的问题,因为报表可以动态添加,所以数据表也是在运行时创建的,那更加不用说表中的字段了。

通常从数据库获得数据的方法是,首先要加载数据库驱动程序,然后用Connection对象建立连接,在获取Statement对象以后执行查询获得ResultSet对象。这个时候问题就来了。如果你有一个getList()的方法来获取数据库中的记录,那么是不是要返回ResultSet呢?显然这个做法是不可取是,打开的ResultSet对象必然占用资源,最起码也要占用一个连接,而通常在开发B/S应用时使用的JBOSS服务器的默认可用连接是二十,在执行完数据库操作后不关闭ResuleSetConnection 对象是不合适的。这个后果可想而知。所以在获取数据库数据时通常会使用HashMap的名值对形式。如果要获取的是一个记录集合,则可以把HashMap放置到Collection中。

首先,这里要关注一些ResultSetgetXXX()方法,这个方法可以传入一个数值,也可以传入一个符串字类型的字段名,但是如果你不知道这个字段的名称呢?很自然你也不会知道这个字段是什么意思了。所以在这样的系统中,就有必要使用ResultSetMetaData接口,来获取结果集的一些信息,比如说字段名称。在以下的文字中,将例举部分程序来说明如何使用使用ResultSetMetaData接口。

一个获取数据表中所有字段的方法,(这里我在JBOSS中直接调试,可以在控制台直接看到运行结果,同时这些运行结果也被记录在日志文件中,如果JBOSS以默认模式运行则日志位于InstallDir/server/default/log/server.log,另外数据库为Oracle 9i) 这里有一个表:rfm_catalog(报表目录表),以这个表为例,下面的程序在EditPlus中进行调通过,但是需要注意的是,您的机器上不一定会装Oracle数据库,所以请修改驱动程序、连接URL,登陆口令和帐号。程序如下:

//导入所需要的package

import java.sql.*;

import javax.sql.*;

import java.io.*;

import java.lang.*;

import java.sql.*;

import java.util.*;

 

 

class  myTest

{

       //主函数

       public static void main(String[] args)

       {

              //声明连接对象

              Connection con=null;

              String sql="";

              try

              {

                     //加载驱动程序,这里需要注意,需要把驱动程序的jar文件拷贝到J2sdk jre/lib/ext目录下

                     Class.forName ( "oracle.jdbc.driver.OracleDriver" );

                     //获得数据库连接对象

                     con = DriverManager.getConnection ("jdbc:oracle:thin:@10.1.51.82:1521:myortest","system" ,"abc123");

                     System.out.println("驱动程序加载,连接成功……");

                     Statement stmt = con.createStatement();

                     sql="select * from AMHRMISDB.rfm_catalog";

                     //查询获得记录集

                     ResultSet rs=stmt.executeQuery(sql);

                     //获得 ResultSetMetaData 对象

                     ResultSetMetaData rsmd = rs.getMetaData();

                     int rs_len=rsmd.getColumnCount();

                     //获得字段数目

                     System.out.println("字段数目:"+rs_len);

                     int i=0;

                     //获得字段名称以及相关的一些数据

                     for(i=1;i<=8;i++)

                     {

                            System.out.println("字段_label_"+i+":"+rsmd.getColumnLabel(i));

                            System.out.println("字段_name_"+i+":"+rsmd.getColumnName(i));

                            System.out.println("字段_type_"+i+":"+rsmd.getColumnType(i)+"_"+rsmd.getColumnTypeName(i));

                             

                     }

              }

              catch(Exception ex)

              {

                     System.out.println("数据库操作错误:"+ex);

              }

       }

}

这段程序供大家研究,关于ResultSetMetaData的详细信息大家可以参看j2sdk的文档。

 

 

基于UC3842的反激电源的全面深入解析与MATLAB仿真 内置电流检测,可实现电流模式控制,提高系统的动态响应性。多种保护功能,如欠压锁定、过温保护、短路保护等,确保系统的安全可靠运行。宽工作电压范围,适应不同的电源设计需求。简单的外部元件配置,易于实现。UC3842的典型应用包括开关电源、DC-DC转换器和反激式电源等,其稳定性和可靠性在实际应用中得到了广泛验证。 阅读详情

相关推荐

JDBC编程接口的深入理解与应用

本文深入探讨了JDBC编程中ResultSet和Statement接口的核心方法和属性,以及SQL异常处理机制。通过分析具体的方法和构造函数,帮助开发者更好地理解如何在Java中操作数据库,包括如何处理查询结果和执行SQL语句,以及如何处理可能出现的异常情况。

weixin_36122351的博客 402

JDBC数据库编程-元数据-批处理-可滚动的结果集-数据库连接、关闭过程的完善

元数据: 数据库元数据:数据库中的表 结果的集元数据:列【getColumnCount()】,列名【getCoiumnLabel(int colunm)】,别名【getColumnName(int column)】 package com.bn; import java.sql.*; public class DBEx5 { public static void main(String args[]) { try { Class.forName("org.gjt.mm.mysq

Java学习 556

深入理解JDBC元数据接口的使用

本篇博客将深入探讨JDBC中的ResultSetMetaData、DatabaseMetaData和ParameterMetaData三个重要接口的使用方法。通过这三个接口,开发者可以获取数据库操作中结果集、数据库和参数的详细描述和结构,从而在不了解具体RDBMS或数据类型的情况下开发出独立的数据库应用程序。

weixin_35266799的博客 414

结果集已耗尽/关闭的结果集--多线程环境下遇到这个报错,排查一下原因就可以了

将结果集转换成List时,遇到一个莫名其妙的错误: ResultSetMetaData md = (ResultSetMetaData)rs.getMetaData(); int columnCount = md.getColumnCount(); while(rs.next()){ Map<String,Object>map = new HashMap<String...

weixin_44867636的博客 3177

不支持的特性: getMetaData,问题解决

最近使用springboot+mybatis,时遇到:不支持的特性: getMetaData 的异常 使用: @Options(useGeneratedKeys = false) 解决的该问题; 官方的说法是:“允许JDBC支持自动生成主键,需要驱动兼容” ...

qq_34564101的博客 3557

ResultSet相关ResultSetMetaData详细

DatabaseMetaData 有关整个数据库的信息:表名、表的索引、数据库产品的名称和版本、数据库支持的操作。 ResultSet 关于某个表的信息或一个查询的结果。您必须逐行访问数据行,但是您可以任何顺序访问列。 ResultSetMetaData 有关 ResultSet 中列的名称和类型的信息。 尽管每个对象都有大量的方法让您获得数据库元素的极为详细的信息,但在每个对象中都有几种主要的方

2949

ResultSet和 ResultSetMetaData

PreparedStatement ps = null;         ResultSet rs=null;         ResultSetMetaData rms=null; ps = conn.prepareStatement(sql); rs=ps.executeQuery();//rs相当于一个表的视图结构  rms=rs.getMetaData();//有关整个数据库

Fupengyao的博客 3617

ResultSetMetaData之获取表的列名jdbc

小编接着这一篇再唠叨一下,ResultSetMetaData接口描述属于结果集的信息。ResultSetMetaData对象能够用于在结果集ResultSet中找出关于列的类型和属性的信息。要得到ResultSetMetaData的一个实例,可在结果集上使用getMetaData方法,如下所示: ResultSetMetaData rsMetaData = resultSet . getMetaD...

二月鸟 797

几个重要接口

(1) Statement —— SQL语句执行接口    Statement接口代表了一个数据库的状态,在向数据库发送相应的SQL语句时,都需要创建Statement接口或者PreparedStatement接口。在具体应用中,Statement主要用于操作不带参数(可以直接运行)的SQL语句,比如删除语句、添加或更新。(2) PreparedStatement:预编译的Statement 

wjp553650958的专栏 465

JDBC~ResultSet、ResultSetMetaData的使用、ORM思想、任意表的任意字段查询(JDBC实现)

文章目录ORM思想ResultSet、ResultSetMetaData的使用利用JDBC实现查询操作利用JDBC实现对某表的任意字段查询利用JDBC实现对任意表的任意字段查询总结 ORM思想 ORM映射思想(Object relational mapping) 一个数据表对应一个Java类 表中的一条记录对应Java类的一个对象 表中的一个字段对应java类的一个属性 ResultSet、ResultSetMetaData的使用 ResultSet PreparedStatement 的 execu

zxc的博客 975

JDBC总结03-几个重要接口

[quote] [b]三、几个重要接口:[/b] [b](1) Statement —— SQL 语句执行接口[/b] Statement 接口代表了一个数据库的状态,在向数据库发送相应的 SQL 语句时,都需要 创建 Statement 接口或者 PreparedStatement 接口。在具体应用中,Statement 主要用于操作不 带参数(可以直接运行)的 SQL 语句,...

laz383310051的专栏 153

JDBC学习笔记(4)之PreparedStatement、ResultSetMetaData数据库连接池的概念性知识

PreparedStatement:Statement的子接口

zyh_xf2017的博客 889

数据库之元数据——DatabaseMetaData的getMetaData()方法的简单使用

DatabaseMetaData和ResultSetMetaData就是两个常用的获取数据库元数据相关信息的接口,本文只讲解DatabaseMetaData接口获取元数据的方法。 package com; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; imp...

高山仰止,景行行止 1万+

java.lang.AbstractMethodError: oracle.jdbc.driver.T4CPreparedStatement.isClosed(

[size=medium]今天在调试项目时报出这个错误,把isClose()或close()注掉后就没错。数据库是oracle10g,驱动是class12。 看到有人说是驱动版本低,于是换成了ojdbc14.jar,还是报错。 继续找,有人说是jdk与驱动版本不一致 查了下jdk版本,是1.6.0_13,于是换成oracle6.jar 问题解决。 [color=black][size=l...

luoyu1234的博客 1001

java.sql.SQLRecoverableException: 关闭语句

https://github.com/alibaba/druid/issues/1708 https://github.com/alibaba/druid/issues/1614   1.0.28关闭pscache,或者升级1.0.29 当关闭poolPreparedStatements配置,就没有关闭语句这个问题   https://github.com/alibaba/druid...

kongkong的专栏 1万+

【问题集锦】Oracle错误代码以及解决方案

ORACLE错误代码目录写在前边ORA-17001=内部错误ORA-17002=Io 异常ORA-17003=无效的列索引ORA-17004=无效的列类型ORA-17005=不支持的列类型ORA-17006=列名无效ORA-17007=无效的动态列ORA-17008=关闭的连接ORA-17009=关闭语句ORA-17010=关闭的 ResultsetORA-17011=结果集已耗尽ORA-17012=参数类型冲突ORA-17014=未调用 ResultSet.nextORA-17015=语句被取消ORA-

种树人 1万+

java.sql.resultset方法与使用技巧

接口 ResultSet public interface ResultSet   表示数据库结果集的数据表,通常通过执行查询数据库语句生成。 ResultSet 对象具有指向其当前数据行的指针。最初,指针被置于第一行之前。next 方法将指针移动到下一行;因为该方法在 ResultSet 对象中没有下一行时返回 false,所以可以在 while 循环中使用它来

MyDriverC 2897

安装oracle11g INS-30131执行安装程序验证所需的初始设置失败的解决方法

安装oracle11g [INS-30131] 执行安装程序验证所需的初始设置失败。解决方法第一步:控制面板>所有控制面板项>管理工具>服务>SERVER 启动TCP/IP 启动第二步:1.点击 开始->运行 ,输入regedit ,然后回车键进入注册编辑器2.找到并点击HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters3.如果AutoShareServer和AutoShareWks为0,则将该值修改为1第三步:重启计算机[也可不重启计算机重启Server服务即可

上一篇: 关于Editplus的一些使用方法
下一篇: FDO_0.6Beta发布,ASP版
9116
博客等级 码龄23年 1粉丝 27原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值