网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.头条:Webwork将加入Struts!.
.使用java BigDecimal完成圆周率π.
.初学者必读:Java集合接口综述.
.Java 按值传递参数.
.Struts环境配置手顺(eclipse版).
.你应该知道的10件关于Java 6的事.
.Java_util_package.
.一个软件测试工程师的加班经历.
.浅析Java的流.
.消除JDBC的瓶颈.
.介绍NEC扩展API.
.10分钟Hibernate体验.
.J2EE的核心API与组件.
.How to config my internet?.
.DB2 J2EE开发成本收益分析(一).
.用VJ++6.0的J/Direct调用DLL.
.MVC模式学习.
.Java socket 入门编程实例.
.javac-----Java编程语言编译器.
.使用struts,ibaits和JSTL开发简便.

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

发表日期:2008-1-5



  一个简单的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 的程序的服务器端使用。

上一篇:一个堆栈类 人气:1060
下一篇:一个简单的 CORBA/java 示例 人气:1349
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐