[转]使用WebRowSet完成JDBC的大部分任务

咱们继续学Java——高级篇 第八十八篇:之JDBC行集(RowSet)的使用与优势 嗨,各位Java编程爱好者们!在我们之前对JDBC的学习中,已经掌握了很多关于数据库连接、查询和结果集处理的知识。今天,我们将一起探讨JDBC中一个非常有用的特性——行集(RowSet)。我希望通过这篇博客,用通俗易懂的语言向大家介绍行集的概念、作用以及如何使用它来优化我们的数据库编程。行集在处理一些特定场景下的数据库操作时具有很大的优势,能够帮助我们更好地管理数据库资源、提高程序的灵活性。我会详细解释行集的不同类型,结合实际代码示例展示其用法,让大家能够轻松理解并在实际项目中运用行集。希望大家在阅读过程中 阅读详情
摘要:

    在这篇文章中,我首先将简要解释它的继承层次结构,紧接着,我会使用一个例子演示如何利用javax.sql.rowset.WebRowSet接口的特征非常容易地将数据库中的数据转化为XML文件,或者相反操作。然后我会讨论这个接口的利弊。在以上解释的基础上,我会总结一些首选这个接口的情况。

    任何现实世界中的企业级应用都需要访问持久化存储。关系型数据库管理系统(RDBMS)是使用最广泛的持久化存储机制,它支持使用SQL进行数据查询和更新。JDBC(Java DataBase Connectivity)是一系列的API,这些API为Java程序提供了一个使用SQL查询和更新RDBMS的框架。

    通过Java程序从数据库中获取数据或者更新数据库的过程包含了多个步骤。首先,程序需要建立一个连接,它可以和目标数据库进行通信。我们可以通过几种不同的方法建立数据库连接。传统的方式是,Java程序在装载了制造商提供的JDBC驱动后,调用java.sql.DriverManager类中适当的getConnection()方法获得连接。另外一个(也是首选的)方式是,使用制造商提供的实现或者编写一个针对目标数据库的实现了javax.sql.Connection接口的自定义类进行连接对象的初始化。在更多的受约束环境中,例如Java EE容器,提供了使用JNDI(Java Naming and Directory Interface)查找获得数据库连接的方式。无论程序使用哪一种方式建立数据库连接,如果连接成功,它应该有一个对java.sql.Connection接口实例的引用。通过连接,程序创建一个java.sql.Statement实例,或者一个包含数据库查询的子接口。最后,程序执行这个语句,获得一个java.sql.ResultSet实例,它表示从数据库中获得的满足查询的实际数据。

    在写这篇文章时,JDK5.0是支持JDBC3.0的Java最新版本。JDBC3.0提供了一些特征,增加了数据操作和转换的易用性和适应性。

    在这篇文章中,我首先将简要解释它的继承层次结构,紧接着,我会使用一个例子演示如何利用javax.sql.rowset.WebRowSet接口的特征非常容易地将数据库中的数据转化为XML文件,或者相反操作。然后我会讨论这个接口的利弊。在以上解释的基础上,我会总结一些首选这个接口的情况。

版权声明:任何获得Matrix授权的网站,转载时请务必保留以下作者信息和链接
作者:Sharad Acharya;mydeman
原文:http://www.onjava.com/pub/a/onjava/2006/06/21/making-most-of-jdbc-with-webrowset.html
Matrix:http://www.matrix.org.cn/resource/article/44/44626_WebRowSet.html
关键字:WebRowSet;JDBC

WebRowSet层次结构

    我们开始先对WebRowSet接口的继承层次结构作一个简要的解释。图1显示了相关的Java元素(包、接口和类),它们也是讨论的一部分。

image
图1 WebRowSet的继承层次结构

    继承层次结构的根部是java.sql.ResultSet接口。这个接口的实例代表表格式的数据,这些数据通过执行包含对底层数据库查询的java.sql.Statement获取。默认的结果集只能前向遍历,并且不能更新。你不可能通过遍历默认结果集的方式进行精确的控制。
    那么,你有哪些选择呢?这就依赖于你要对结果集进行什么操作。例如,如果你想结果集支持适合于JavaBeans组件模型的JDBC API,就需要使用java.sql.ResultSet的子接口javax.sql.RowSet。

    因为Java程序访问数据库是一个重量级操作,所以内存中的数据高速缓存就是一个关系应用程序性能的关键因素。如果你想结果集作为一个行数据的容器缓存在内存中,那么你可以使用javax.sql.rowset.CachedRowSet,它是javax.sql.RowSet的子接口。这个接口的实例提供了不用一直保持连接数据源而操作数据的能力。更进一步,它是可滚动、可更新和可序列化的。除数据库以外,它可以对其它表格式结构的数据源起作用,如电子数据表。

    如果除了迄今为止提到的所有特征,你还要将结果集输出到XML和使用有效的XML作为输入,请选择javax.sql.rowset.WebRowSet.。在Sun的参考实现类中已经提供了它的实例的一个实现,com.sun.rowset.WebRowSetImpl,并作为JDK5.0的一部分发行。

    在层次结构的底部是javax.sql.rowset.JoinRowSet,javax.sql.rowset.WebRowSet的子接口,它提供了联合多个相关结果集对象的方式,就像对底层数据库表构造的SQL JOIN。

使用简单结果集

    伴随上面的介绍给你留下的印象,我向你展示一个简单的例子。这篇文章的所有例子开发环境都是Eclipse3.1.0,JDK5.0、Windows XP上的Oracle10.2。示例代码和输出文件参见资源部分。
我们考虑一个简单的student表,它定义了四列来存储信息。接下来的表格显示了查询该表获得的结果。
SQL>select * from student;

ID        FNAME        LNAME        AGE
200        Jack        Dakota        21
100        John        Doe        26

首先,我们编写一个Java类,它连接到包含student表的数据库,并且获取它的纪录。

public class DatasourceConnector {
public static void main(String[] args) {
   Connection con =null;
   OracleDataSource ds =null;
   try {
     ds = new OracleDataSource();
       ds.setUser("<dbuser>");
       ds.setPassword("<password>");
       ds.setURL(
       "jdbc:oracle:thin:@localhost:1521:<sid>");
     } catch (SQLException e) {
       e.printStackTrace();
   }
   try {
     con = ds.getConnection();
     Statement stmt = con.createStatement();
     ResultSet rs =
       stmt.executeQuery(
         "select * from student ");
     for (int j=0;
           j<rs.getMetaData().getColumnCount();
           j++)
         {
       System.out.print(
         rs.getMetaData().
           getColumnName(j+1)+"/t");
     }
     while (rs.next()) {
       System.out.print("/n");
           for (int i=0;
             i< rs.getMetaData().getColumnCount();
             i++)
           {
         System.out.print(
           rs.getString(i+1)+"/t");
        }
     }
     rs.close();
     stmt.close();
     con.close();
   } catch (SQLException e) {
   e.printStackTrace();
   }
  }
}



    例中的Java类初始化了一个连接对象,创建了一个包含查询字符串的语句(statement),最后获取结果。你需要提供数据库的用户ID、密码以及数据库的SID,在程序中都使用“<…>”标志。保存这个文件为DatasourceConnector.java,编译、运行:
>javac DatasourceConnector.java
>java DatasourceConnector


    应该一切正常,你应该可以看到类似下面的结果:

ID FNAME LNAME AGE
200 Jack Dakota 21
100 John Doe 26



导出结果集

    现在我把这个例子更进一步,假定这个程序是一个应用的一部分,应用要求数据从数据库转化为XML以进行更进一步地处理。我将使用实现类com.sun.rowset.WebRowSetImpl来完成这个任务。为了实际看到这个结果,我加入一些代码构造一个javax.sql.rowset.WebRowSet的实例,并且导出结果集到XML文件。如下所示:

... ... ... 
ResultSet rs =
  stmt.executeQuery("select * from student");
WebRowSet wrs = new WebRowSetImpl();
wrs.populate(rs);
try {
  wrs.writeXml(
  new FileOutputStream("student.xml"));
} catch (FileNotFoundException e) {
  e.printStackTrace();
} catch (IOException e) {
  e.printStackTrace();
}
... ... ...



    从wrs.writeXML()输出的结果形成一个符合WebRowSet schema定义的XML文档。它包含了三部分:属性、元数据和数据。大致的布局如下所示,完整的输出文件参见资源部分。

<?xml version="1.0"?> 
<webRowSet xmlns=
"http://java.sun.com/xml/ns/jdbc"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://java.sun.com/xml/ns/jdbc
http://java.sun.com/xml/ns/jdbc/webrowset.xsd">
< properties>
... ... ...
</properties>
<metadata>
       ... ... ...
</metadata>
<data>
... ... ...
</data>
</webRowSet>



    <properties>标签提供了同步提供者的细节,例如隔离级别(isolation level)、RowSet类型等等。<metadata>标签提供了底层数据库表的信息,例如纪录数、名称和列的类型等等。<data>标签包含了实际数据,上面的表如下所示:

<data>
   <currentRow>
     <columnValue>200 < /columnValue>
     <columnValue>Jack</columnValue>
     <columnValue>Dakota</columnValue>
     <columnValue>21</columnValue>
   </currentRow>
   <currentRow>
     <columnValue>100</columnValue>
     <columnValue>John</columnValue>
     <columnValue>Doe</columnValue>
     <columnValue>26</columnValue>
   </currentRow>
</data>



    上例中的<currentRow>标签显示了WebRowSet对象值,当前可以不用任何更改地映射到底层数据源中。任何数据处理操作如插入、更新或删除都可以在输出的XML中被恰当的标记出来,我将会在接下来的部分解释。

 
操作结果集

    你可以删除一行数据,先移动指针到这一行的位置上,然后调用WebRowSet实例的deleteRow()方法。同样,你可以更新一个或者多个值,先移动指针到这个行的位置,然后调用合适的更新方法。下面的代码同时完成了删除和更新:

... ... ...
ResultSet rs =
  stmt.executeQuery("select * from student ");
WebRowSet wrs = new WebRowSetImpl();
wrs.populate(rs);
wrs.absolute(1); //move to first row
wrs.deleteRow(); //delete current row
wrs.absolute(2); //move to second row
wrs.updateInt(4,20);//update current row
... ... ...



    前四行代码片断的作用是很明显的:初始化对象并且转化结果集。接下来的两行尝试删除第一行。最后两行试图把第二行纪录的第四列的值更新为20。输出这个WebRowSet对象会产生如下的<data>元素:

<data>
   <deleteRow>
     <columnValue>200</columnValue>
     <columnValue>Jack</columnValue>
     <columnValue>Dakota</columnValue>
     <columnValue>21</columnValue>
   </deleteRow>
   <currentRow>
     <columnValue>100</columnValue>
     <columnValue>John</columnValue>
     <columnValue>Doe</columnValue>
     <columnValue>26</columnValue>
     <updateRow>20</updateRow>
   </currentRow>
</data>



    这个XML片断显示了第一行被<deleteRow>标签标记为删除。第二行第四列的值被标记出从当前值26更新为一个新值20。

提交更改

    迄今为止,我仅仅是操作结果。这些变化并不会反映到底层的数据库中,除非我进行了提交。下面代码,如果执行成功,将会通过提交是改变持久。

... ... ...
wrs.acceptChanges();
... ... ...



从XML读取

    WebRowSet也提供了一些readXML()方法,通过使用java.io.InputStream或者java.io.Reader实例从有效的XML文件中读取数据。如果你的输入数据是有效的XML形式,在进行其他处理之前需要将它们持久化到底层的数据库中,你就会发现这个选项非常有用。

使用WebRowSet的利弊

    在展示了WebRowSet的基础操作之后,我们总结以下使用这种方式操作数据的利弊。

利
+标准方案使它从不同的应用中生成和处理XML数据而不需要转化成为可能。
+数据操作的易用性——它支持滚动、更新、缓存和离线编辑。
+数据和XML简单转化使相关代码减少。较少的代码意味着较少的错误,也就意味着更加健壮的代码。
+较少的数据库更新可以帮助减少并发问题。

弊
+性能和吞吐量可能会因为附加的信息如属性和元数据受到负面影响。在分布式应用中这可能是一个尤为突出的问题,因为巨大的XML文件需要在网络上传输以充分减少数据的数量。
+新的JDK版本,因为这个特征在1.4或者更老一些的JDK上并不可用。

适用性

    WebRowSet接口适合在下面情形中使用:
1、使用XML消息的应用集成,XML消息是当前顶级架构的选择之一。Java EE应用可以使用基于JMS的集成和其他外部通信,而使用JDBC保存自己的事务状态。在这样一个情形下,WebRowSet API减少了编程的复杂性,也降低需要编写的代码量。
2、来自持久性数据源的内容展示通常通过获取数据集并把它传递到视图组件(如JSP)中来完成。一个可用的方式就是在应用XSLT之前把数据集转化为XML,然后产生展示的内容。这种选择提供了更好的可维护性,因为它减少来自展示内容的组件的格式化。

总结

    直到最近,在数据库和XML之间来回的数据转化请求曾经是大部分应用开发和测试资源中一项主要任务。幸运的是,最新的JDBC API包含了一些特点例如数据集的精确导航、数据集的高速缓存、把数据集写入到XML中等等。对于企业级程序员RDBMS的重要性以及随着当前不断增长的Java和XML应用的普及度,像WebRowSet这样的接口提供的特征将会更加有用。那么,现在是时候重新考虑一下了,在下一个使用RDBMS作为数据持久化的Java/XML应用中,你是否仍然采用传统的数据访问方式;WebRowSet也许可以让你耳目一新。

JDBC中使用RowSet包装结果集 背景 C#中有了DataSet,可以把底层数据读取到内存中进行离线操作。操作完成再同步到底层数据源。Java中也提供了类似的功能——RowSet。 和ResultSet相比,RowSet默认是可以滚动、可更新、可序列化的结果集合,而且作为Javabean使用。并支持离线操作,降低了数据库的负载。 RowSetProvider负责创建RowSetFactory,而RowSetFactory则提... 阅读详情

相关推荐

com.sun.rowset.jar.zip

sun公司的rowset jar包。操作数据库很酷的

使用WebRowSet完成JDBC的大部分任务

使用WebRowSet完成JDBC的大部分任务任何现实世界中的企业级应用都需要访问持久化存储。关系型数据库管理系统(RDBMS)是使用最广泛的持久化存储机制,它支持使用SQL进行数据查询和更新。JDBC(Java DataBase Connectivity)是一系列的API,这些API为Java程序提供了一个使用SQL查询和更新RDBMS的框架。通过Java程序从数据库中获取数据或者更

xymyeah 1065

基于Java的高校学生信息管理系统的设计与实现(论文+源码)

可以对本系统的数据进行良好的封装,Java可以对不想被访问的数据进行良好的隐藏,具备平台无关性,可移植,更加可靠与安全,具备多线程支持,进行网络交互更容易。它支持本系统的B/S模式。开发效益方面,本系统一旦开发成功并且面向社会,就会让大多数的学生教师体会到便利办公的乐趣,随之促进提高本系统的使用率和经济利润,所以在经济方面,对于零成本开发且高利润的学生管理系统是可行的。学生可以在学生端进行选课,查看自己的成绩,教师可以在教师端查看所任课程的选课情况,对学生成绩进行录入,对所任的课程进行结课等操作。

2402_82389843的博客 1092

解决了困扰已久的一个问题

前面程序用到了WebRowSet,用的实现包是sun 提供的,但是用ant编译的时候会出现如下: warning: com.sun.rowset.WebRowSetImpl is Sun proprietary API and may be removed in a future release ------------------------------------------- 尝试了所...

weixin_30871905的博客 406

使用JAVA代码转word文档之动态生成数据填充(图文详解)

今天跟公司对接了业务,根据业务需求,乙方需求文档是word格式的,而我们的数据是动态数据,每生成一份数据,就要以word的形式给乙方一份邮件!这就给了我们的工作一定的难度和挑战! 通过阅读资料,团队的帮助以及自我测试,终于实现了这个功能!因为在搜索资料方面,发现各位博主讲的比较模糊,自己碰到了很多bug,浪费了很多宝贵的时间,所以今天写了这篇文章,希望对自己以后或者他人有所帮助! 操作第一步:先准...

huaiyan 7719

WhatsApp API接口的隐秘角落:从协议解析到自定义消息引擎

本文深入解析WhatsApp API接口的隐秘角落,从协议逆向工程到自定义消息引擎开发实战。通过分析WhatsApp的二进制XML协议和加密机制,构建超越官方API限制的自定义消息引擎,实现高效、灵活的即时通讯解决方案。文章还提供了企业级架构设计和风控规避策略,助力开发者突破官方限制,提升消息到达率和成本效益。

q3r4s5t的博客 761

Java 6 RowSet 使用完全剖析

级别: 中级 徐 睿智 (xuruizhi@cn.ibm.com), 软件开发工程师, IBM 中国软件开发中心刘 威 (liuwei_cqu@hotmail.com), 实习生许 彬 (terry.xubin@gmail.com), 实习生

::古埃及象形文字:: 1062

Protege新手入门:5分钟搞定本体建模基础(附实战案例)

本文为Protege本体建模新手提供了一份快速入门指南。通过构建一个关于“披萨”的实战案例,详细讲解了从环境准备、定义核心类(Classes)、建立对象属性(Object Properties)到设置数据属性(Data Properties)和创建个体的完整流程。文章旨在帮助读者绕过复杂理论,在5分钟内直观掌握本体建模的基础操作,快速建立知识图谱构建的信心。

weixin_28335283的博客 283

JDBC学习总结

JDBC学习总结 JDBC是一个可以用于执行SQL语句的Java API,是连接Java和数据库的纽带。 JDBC的主要任务: 与数据库建立连接 向数据库发送SQL语句 出来数据库返回结果 连接数据库 imoport java.sql.*; // 导入java包 Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = DriverManager.getConnection(url, user, password); Connect

weixin_41768618的博客 307

经纬度转换为UTM坐标

UTM(通用横向墨卡托投影): 是一种以米为单位的坐标系统,用于地图和GPS导航。将地球划分为60个纵向的区域。每个区域宽6度,从赤道开始往南北两级方向划分。每个区域都有一个特定的字母。

weixin_45626706的博客 7275

避坑指南:Qgis等时圈分析中ORS插件Key申请与参数设置的常见错误

本文详细解析了QGIS等时圈分析中ORS插件从API密钥申请到参数优化的全流程避坑指南。针对密钥激活、出行模式选择、时空参数设置等七个高频故障点,提供了实用的调试方案和优化技巧,帮助用户高效完成空间可达性分析。

weixin_42546508的博客 300

介绍JDBC

介绍JDBC

weixin_69036336的博客 955

Android 10.0 kenel中修改rom系统内部存储的大小

在10.0的系统rom产品开发定制中,在对一些产品开发中的配置需求方面,由于在产品后续订单中,有些产品是出口的,但是硬件方面已经定板,时间比较仓促,所以 就需要软件方面在rom内部存储的大小方面作假,修改rom真实的大小容量,所以就需要在kenel驱动部分来修改这部分的值最好了,接下来分析下计算rom容量的 相关代码,然后做出修改

安卓兼职framework和app工程师的博客 1404

JAVA学习日记:JDBC(5)

本节课我学习的主要内容有: 1.RowSet以及其子接口 RowSet以及其子接口: RowSet: 行集的概念是JDBC3.0之后出现的概念。 行集能够对结果集进行包装的操作,继承自ResultSet接口。 行集包含了表格数据的对象。 它的子接口: JdbcRowSet: 它是一个持续保持连接的RowSet,他与一个具有ResultSet.TYPE_SCOLL_INSENSITIVE

SIESTA030的博客 260

化工设备应力分析软件:STAAD.Pro二次开发_(24).非线性分析技术

在STAAD.Pro 中,可以通过命令。

kkchenjj的博客 660

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

CachedRowSet 的使用

RowSet 新特性简介 Java 5在Java Database Connectivity (JDBC)方面加强了支持,其中加入了新的包javax.sql.rowset,javax.sql.rowset.serial,javax.sql.rowset.spi。从RowSet接口继承规定了五个新的接口: 1. CachedRowSet: CachedRowset可以不用与数据源建立长期的连接,...

iteye_14814的博客 1818

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

JDBC:ResultSet和RowSet

ResulSet类型和选项 Connection提供了三种不同的方法来创建Statement: createStatement()  createStatement(int resultSetType, int resultSetConcurrency)  createStatement(int resultSetType, int resultSetConcurrency, int

samjustin的博客 4082

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Rowset 使用

<br />RowSet对象可分为两类:有连接的和无连接的。JdbcRowSet是唯一一个有连接的实现,和传统的ResultSet一个样,有连接的实现是基于Jdbc驱动的连接,数据库的连接是贯穿整个对数据库的操作。而无连接的实现是基于Reader和Writer流的连接,在需要读取数据和写入数据的时候才建立连接,在整个操作过程中都是断开连接的,后面四个接口对象都是无连接的实现。下面我就针对每一个接口来介绍一下它们各自的功能。 <br /><br />JdbcRowSet接口: <br /><br />  我的

天下无双 4486

java jdbc rowset_JDBC RowSet的使用

JDBC RowSet的使用1 什么是JDBC的RowSet?与ResultSet相比,RowSet默认是可滚动、可更新、可序列化的结果集,而且作为JavaBean使用,因此能方便的在网络上传输,用于同步两端的数据,对于离线RowSet而言,程序在创建RowSet时已经把数据从底层数据库读取到了内存,因此可以充分利用计算机的内存,从而降低数据库服务器的负载,提高程序性能。RowSet接口继承了Re...

weixin_32279911的博客 395

JDBC-2、对象

使用RowSet对象 RowSet对象以一种比ResultSet更灵活,更易于使用的方式保存表格数据 RowSet对象可以做什么 充当KavaBeans对象 Properties 所有RowSet对象都有属性 JavaBeans通知机制 对于所有RowSet对象,光标移动、更新、插入或删除行、更改所有RowSet内容都会触发事件通知 滚动性和可更新性 对象的种类 连接的...

^@Hu@^的博客 439

JDBC第四章知识点总结——JDBC高级特性2--事务,并发控制,行集

JDBC第四章知识点总结——JDBC高级特性2--事务,并发控制,行集 知识点预览 事务 并发控制 Row set(行集) JDBC异常与警告 事务 1.      事务—银行转账问题 a)        张三将1000元钱转到李四的账号,程序处理需要的步骤: 1、张三的账号减掉1000元; 2、李四的账号增加10

DBA@Robin 4574

JDBC Review 2

6. 通过Metadata查询数据库信息有两种Metadata,一种是数据库的:DatabaseMetaData meta = conn.getMetaData();通过它可以查询一些数据库的信息,例如:ResultSet mrs = meta.getTables(null, null, null, new String[] { "TABLE" });另外一种是返回结果集的:ResultSet m

wangjiong的专栏 872

Java8 API 入门手册(五)

原文:Beginning Java 8 APIs 协议:CC BY-NC-SA 4.0 六、JDBC API 在本章中,您将学习 什么是 JDBC 空气污染指数 JDBC 司机的类型 Java DB 的简要概述 如何使用 JDBC 驱动程序连接到数据库 什么是事务隔离级别 JDBC 数据类型到 Java 数据类型的映射 如何在 Java 程序中执行 SQL 语句并处理结果 使用行集、批量更新和大型对象(lob) 如何检索 SQL 警告并启用 JDBC 跟踪 什么是 JDBC 空气污染指数? JDBC

龙哥盟 1604

JavaEE JDBC RowSet行集

RowSet行集 @author ixenos 应用背景 1.基于结果集的缺点:在与用户的整个交互过程中,必须始终与数据库保持连接   后果:当用户长时间离开时,数据库连接长时间被占用,而这属于稀缺资源;   解决:使用行集RowSet,RowSet继承了ResultSet接口,却无需始终保持与数据库的连接~ 2.结果集不便于移动,因为数据结构复...

ddmm2012的博客 154

Matrix上的三篇文章

 今天无聊在网上搜索自己的名字时,忽然搜到了两年前参与Matrix网翻译项目时的三篇文章,这里做一个链接,也方便自己以后查找。 XFire:轻松简单地开发Web Services作者:Shahid Ahmed ;mydeman原文:http://www.javaworld.com/javaworld/jw-05-2006/jw-0501-xfire.htmlMatrix:http://

mydeman的学习日志 1060
上一篇: JS读取本地文本文件
下一篇: JDK 1_5学习之RowSet[转]
java_lk
博客等级 码龄20年 1粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值