当前位置: 首页 > 学习 > 电脑学习 > 程序设计 > JAVA > 数据库 > 正文

一个简单的JDBC包装器(2)

http://www.zk168.com.cn  招考学习网 2006-4-11 2:14:02
-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
一个简单的JDBC包装器(2)

一个完整的示例
现在我们已经看过了所有的类,让我们来看一个完整的示例吧。在清单 4 中,我们将抽取出符合特定条件的一套记录,然后打印出它们的值。


清单 4. 一个读取数据的完整示例
// First, get all rows meeting the criterion
RowSet rs = table.getRows( "id<103" );
// Iterate through the set
for (int i=0; i<rs.length(); ++i) {
// Grab each row in turn
Row row = rs.get( i );
// Get and print the value of the "name" field
String name = row.get( "name" );
System.out.println( "Name: "+name );
}

如此容易!在下一节中,我们将看看怎样向数据库写入数据。

修改数据
正如前面所提到的,使用我们的 API 读写数据是以整个行为单位的。为了向数据库写入数据,您必须创建(或修改)Row 对象,然后向数据库写入那个 Row 对象。

向数据库写入数据是通过使用 Table 中的 putRow 方法。这种方法有两种变体:

public void putRow( Row row )
public void putRow( Row row, String conditions )

这两种变体分别对应于 SQL 中的 INSERT 和 UPDATE 命令。

在第一个变体中,写一行意味着将一个全新的行插入表中。

在第二个变体中,写一行意味着修改一个现有的行。conditions 参数使您能够指定您想要修改的是哪一行(哪些行)。

让我们来看看每种方法的一个示例。

插入一个新行
插入一个新行很简单,因为您不必指定要修改的行(一行或多行)。您只是简单地把行插入:

table.putRow( row );

您可以重新创建一个 Row,如清单 5 所示。

清单 5. 重新创建一个 Row
// Create an empty row object
Row row = new Row();
// Fill it up with data
row.put( "id", "200" );
row.put( "name", "Joey Capellino" );

或者,您可以修改一个以前曾经从数据库中读取的一个现有的行,如清单 6 所示。

清单 6. 修改现有的 Row
// Grab a row from the database
Row row = table.getRow( someConditions );
// Change some or all of the fields
row.put( "name", "Joey Capellino" );

虽然通常是在插入时重新创建 Row,更新时使用现有的 Row,实际上您可以用任何方式来进行。

更新现有的行
正如前面的部分提到的,对于您如何创建用来更新的 Row 是没有限制的。 但是,通常您是使用一个刚从数据库中读出的 Row。

为了详细描述这一点,我们将使用一个示例(在该例子中我们读出一个员工的姓名),改变这个名字,然后将更改后的结果写回数据库,如清单 7 所示。

清单 7. 通过修改 Row 进行更新
Row row = table.getRow( "id=104" );
row.put( "name", newName );
table.putRow( row, "id=104" );

注意我们必须在调用 putRow() 中指定条件。这样才会使调用成为更新,而不是插入。

注意,这个调用将更新所有符合条件的行,而不是其中的一行。

结论
在本文中,我们初步认识了一种通过 JDBC 包提供一种简化的通往关系型数据库接口的 API。这种抽象保留了 JDBC 接口的很多基本关系型功能,但对其进行了简化,从而让使用非常地方便。这种简化是以效率为代价的,但当目标是简单性时,这并不是一个令人惊奇的结果。

参考资料

参加本文的讨论论坛。

下载本文中讨论的类的全部资料:
Database.java
Table.java
RowSet.java
Row.java

JDBC 学习中心包含许多教程的链接。

阅读 JDBC 文档页可以获得很多有用的文档的链接。

您可以在 Amazon 购买 《JDBC API 教程和参考大全》,第 2 版,或者只是阅读它。

免费数据库清单包含许多免费 RDBMS 软件包的链接,您可以在启用 JDBC 的程序的服务器端使用。

本文中的代码已经在 PostgreSQL 数据库引擎上通过了测试。

在 “JDBC 3.0 中有什么新内容”(developerWorks,2001 年 7 月)中,Josh Heidebrecht 向我们介绍了 JDBC 最新的修正情况。

在“将 RDBMS 存储过程作为 session EJB 组件的方法来封装”(developerWorks,2000 年 10 月)中学习如何通过 Enterprise JavaBeans 来调用旧的存储过程。

阅读“对象-数据分离和 EJB”(developerWorks,2001 年 4 月),就能知道面向对象和面向数据的开发人员的分离是怎样产生的了。然后阅读接下来的文章“在您的 EBJ 项目上克服对象-数据分离”(developerWorks,2001 年 4 月),看看您能对它做什么。

开发人员在选择数据库时应该注重什么功能?这个问题可以参阅“选择数据库管理系统”(developerWorks,2001 年 7 月)。

在 developerWorks Java 技术专区寻找更多 Java 参考资料。

关于作者
Greg Travis 是居住在纽约的一个自由程序员。他对计算机的兴趣可能是源于“ Bionic Woman”中的一段情节 - Jamie 四处奔跑,试图逃离一所灯光和门都被邪恶的人工智能所控制的房子,人工智能还通过扬声器嘲笑她。他是一个传统观念的虔诚信徒 - 如果一个计算机程序能够工作,那完全是个巧合。可以通过 mito@panix.com 与他联系。

(全文完)
-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
最新入库:
 
·实质、过程及意义——阿多尔诺“否定的辩证法”探微
·从Ontology的译名之争看哲学术语的翻译原则
·论马克思主义哲学经典的解释——解释学方法及其在马克
·中国哲学当前的核心与周边问题
·和合学与21世纪文化价值和科技
·中国文化的和合精神与21世纪
·宗教之间理当相互宽容
·上半个世纪的自由主义
·殷周至春秋时期神人关系之演进
·大学之道:构建以“三纲八目”为核心的道德修养体系
相关内容:
 
·21世纪以煤和天然气为原料的C1化学
·BOG压缩机在液化石油气基地的应用
·OECD主要国家软件业发展概况
·英美CPA管理模式及其启示
·沙角C电厂事故顺序记录的通道组态分析及整改
·LFCB-102型微波分相差动保护的应用
·沙角C电厂厂用电结线分析
·基于PB6和ORACLE8开发“劳动信息管理系统”
·利用TDC组件实现对WEB页面的交互操作
·TCP/IP在网络中的高效配置
网友点评:
 
会员名称:
密码:匿名 ·注册·忘记密码?
评论内容:
(最多300个字符)
  查看评论
友情提醒:
 1.库中的资料大都来自互联网、网友上传、各类书籍,在录入的过程中难免会出现错误,恳请网
 友来信指正!
 2.如果网友在本库中未能找到所需要的材料,请登陆到我们的论坛《招考学习网》版块!
 3.考友想加入招考学习网的编辑部,请发信到XueXiWang#Gmail.com(#改为@)附带个人简历
 4.如需转载请注明出处及作者,谢谢合作!
 5.如果您有更好的建议或意见请EMAIL:XueXiWang#Gmail.com (#改为@)
 6.凡标题中有注有“[NO]”字样均不含答案且答案整理中.
 7.如本库中转载文章涉及版权等问题,请相关网站或作者在两周内发邮件通知(EMAIL:  XueXiWang#Gmail.com (#改为@))我们,我们接到通知后立即删除该文章及链接!
你问我答 更多>>