完整的 anni。DbUtils 代码在 WEB…INF/src/DbUtils。java。
数据库 contact 的表结构写在WEB…INF/sql/import。sql 中。
create table contact (
id bigint;
username varchar (100);
sex varchar (100);
email varchar (100);
qq varchar (100);
descn varchar (200)
);
与之对应的 anni。Contact 的结构大致如下。
package anni;
53 / 148
…………………………………………………………Page 54……………………………………………………………
public class Contact {
private Long id;
private String username;
private String sex;
private String email;
private String qq;
private String descn;
// getter and setter
}
javabean 中的属性与数据库中的字段一一对应,习惯上将属性定义为 private,
并配上对应的 getter 与 setter 方法,这样就构成了一个典型的 javabean。
anni。Contact 的源代码在WEB…INF/src/Contact。java。
anni。ContactDao 是完成 CRUD 操作的主体,在这里集合了 anni。Contact 和
anni。DbUtils 为 jsp 提供调用的方法。
1。 Read(读取)。
/**
* 获得所有联系簿。
*
* @return contact 列表
*/
public List getAll() throws Exception {
Connection conn = null;
Statement state = null;
ResultSet rs = null;
List list = new ArrayList();
try {
conn = DbUtils。getConn();
state = conn。createStatement();
rs = state。executeQuery(〃select * from contact〃);
while (rs。next()) {
Contact contact = new Contact();
contact。setId(rs。getLong(〃id〃));
contact。setUsername(rs。getString(〃username〃));
contact。setSex(rs。getString(〃sex〃));
contact。setEmail(rs。getString(〃email〃));
contact。setQq(rs。getString(〃qq〃));
contact。setDescn(rs。getString(〃descn〃));
54 / 148
…………………………………………………………Page 55……………………………………………………………
list。add(contact);
}
} finally {
DbUtils。close(rs; state; conn);
}
return list;
}
第一步,使用 DbUtils。getConn()建立与数据库的连接 Connection。
第二步,从 Connection 创建一个 Statement。
第三步,使用 Statement 执行 sql 查询语句,返回查询结果集 ResultSet。
第四步,将 ResultSet 中的数据转换成Contact 队列。
第五步,关闭数据库的连接,并返回 Contact 队列作为结果。
Connection …》 Statement …》 ResultSet …》 close()是一个查询功能的
基本结构。
这里使用的 sql 语句会获得数据库中所有的联系信息,所以我们循环读取
ResultSet 最后得到一个 Contact 队列。另一个方法public Contact
get(Long id)中会根据指定的主键获得一条对应记录,虽然依然返回
ResultSet,但这次 ResultSet 中只包含一条数据,所以最终只会获得一
个 Contact 对象。
2。 Create(创建)
/**
* 向数据库插入一条数据。
*
* @param contact 联系信息
*/
public void save(Contact contact) throws Exception {
Connection conn = null;
PreparedStatement state = null;
try {
conn = DbUtils。getConn();
state = conn。prepareStatement(〃insert into
contact(username;sex;email;qq;descn) values(?;?;?;?;?)〃);
state。setString(1; contact。getUsername());
state。setString(2; contact。getSex());
55 / 148
…………………………………………………………Page 56……………………………………………………………
state。setString(3; contact。getEmail());
state。setString(4; contact。getQq());
state。setString(5; contact。getDescn());
state。executeUpdate();
} finally {
DbUtils。close(null; state; conn);
}
}
第一步,使用 DbUtils。getConn()建立与数据库的连接 Connection。
第二步,从 Connection 创建一个 PreparedStatement。
第三步,向 PreparedStatement 中设置参数。
第四步,使用 PreparedStatement 执行更新。
第五步,关闭数据库的连接,并返回 Contact 队列作为结果。
Connection …》 PreparedStatement …》 设置数据,执行更新 …》 close()
是一个更新数据库的基本结构,更新不需要返回数据,所以没有
ResultSet。
PreparedStatement 可以帮助我们免受拼接字符串之苦,如果依旧使用
Statement,会产生下面这种代码。
state = conn。createStatement(〃insert into
contact(username;sex;email;qq;descn) values("〃 +
contact。getUsername() + 〃";"〃 +
contact。getSex() + 〃";"〃 +
contact。getEmail() + 〃";"〃 +
contact。getQq() + 〃";"〃 +
contact。getDescn() + 〃")〃);
代码又臭又长,容易出错外加难以维护,你少写一个单引号不会引起编译
错误,但是运行的时候会给你一大堆错误,最后连问题在哪里都找不到,
推荐大家在需要设置参数的时候尽量使用 PreparedStatement。
另外 PreparedStatement 也能防止系统被“注入攻击”。
3。 Update(更新)
56 / 148
…………………………………………………………Page 57……………………………………………………………
update contact set username=?;sex=?;email=?;qq=?;descn=? where
id=?
4。 Delete(删除)
delete from contact where id=?
anni。ContactDao 的代码在WEB…INF/src/ContactDao。java 中。有关 jdbc 的操
作既枯燥又无聊,实际上只需要记住几条 sql 语句就足够我们进行 CRUD 这种常
用操作了,对于普通开发者来讲,我们也不需要再去了解更多深入的功能。
我们提供了批处理文件编译这些 java 代码,双击 WEB…INF/src/pile。bat 即
可
小说推荐
- php程序设计简明教程(DOC格式)
- -Page 1-PHP 程序设计简明教程PHP 讲义 第 1 页 共 90 页-Page 2-目录序 4第一章 PHP 简介 6
- 最新章:第31章
- asp基础实用教程(DOC格式)
- 目 录一、关于ASP二、ASP的新功能三、创建ASP页四、使用脚本语言五、使用变量和常量六、使用集合七、ASP内建对象八、向浏览器发送内容九、包含文件十、访问数据库十一、调试ASP脚本十二、维护ASP应用程序的安全一、关于ASP Active Server Pages(ASP)是服务器端脚本编写环境
- 最新章:第17章
- asp基础入门篇(DOC格式)
- ASP入门与实例-IIS的安装与配置1、运行环境与软件要求Windows 2000 以上(不包括Windows XP Home版)IIS 4.0 以上Microsoft Access 2000Dreamweaver MX2、IIS的安装与配置a.安装IIS若操作系统中还未安装IIS服务器,可打开"控
- 最新章:第23章
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 最新章:第4章
- JMS简明教程(PDF格式)
- -Page 1-JMS1.1规范中文版卫建军2007‐11‐22-Page 2
- 最新章:第28章
- C语言实例教程(PDF格式)
- -Page 1-前 言Visual C+是开发运行于Windows 95和Windows NT环境下的Win32应用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提供了完整的编辑、编译和调试工具和建立于Win32 API(ApplicationProgramming Interface)基
- 最新章:第143章
- Word2003使用技巧大全(DOC格式)
- Word使用技巧(二)表格使用大全更新时间:2009-11-16 19:32:15 本文共阅读了257次 作者:xushezheng 文章来源:电教组字体大小:大中小一、快速插入表格 拖动“插入表格”能插入的最大表格跟该图标位置、显示分辨率有关。如使用800×600分辨率时最大为18行×28列 二、
- 最新章:第1章
- Excel word ppt office使用技巧大全(DOC格式)
- -Page 1-Excel_word_ppt_使用技巧大全(完全版)Excelwordppt使用技巧大全(2011新版本)I-Page 2-Excel_word_ppt_使用技巧大全(完全版
- 最新章:第338章
- oracle从入门到精通(PDF格式)
- -Page 1-Oracle 从入门到精通-Page 2-资源来自网络,仅供学习 Oracle 从入门到精通一、SQL 8
- 最新章:第37章