网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  一个简单的jdbc包装器(2)     
  文章作者:未知  文章来源:水木森林  
  查看:74次  录入:管理员--2007-11-17  
 
  一个简单的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 与他联系。

(全文完)
 
 
上一篇: 一个简单的 corba/java 示例    下一篇: 一个简单的定时器应用: vartimer (java)
  相关文档
2006年java开发技术回顾与展望 11-17
通过javamail访问hotmail邮箱 11-16
java基础:详细讲解this对象的使用方法 11-16
java ide:java初学者常用开发工具介绍 11-16
什么叫java虚拟机 11-17
技术分析ejb3.0开发指南:组合主键 11-17
用line_as_stream 简化流的读取 11-16
jakarta commons 内容简介 11-17
java入门--有关于java中栈与堆的思考 02-26
java语音实现技术tts资料 11-17
详细讲述java中的克隆 11-17
在nec电话上开发midp程序入门 11-17
从数据库读出的jpg文件的字符流,转换成图片显示在页面上的相关? 11-17
enumerator 对象 11-16
hibernateannotations实战介绍 11-17
j2ee和xml为企业应用软件创造机会 11-17
java编程语言进阶:什么是面向接口编程 04-01
java web start入门基础教程 11-17
java编程:配置tomcat5数据源心得 11-17
vj6.0的使用方法(4)application调试过程 11-16
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息