我们都知道一个数据系统的核心就是JDBC的编程,对数据进行操作,主要包括添加,删除,更新以及查询。
在对数据进行操作之前首先要做的是:
1.加载jdbc驱动程序;
2.建立到指定数据库的连接(连接池/数据源);
3.提交数据库操作命令;
4.取得结果。
下面看一下BlogServlet中关于add方法中的 code5-1
1
1 private void add(HttpServletRequest request, HttpServletResponse response)
2 throws ServletException, IOException{
3 response.setContentType("text/html;charset=UTF-8");
4 request.setCharacterEncoding("UTF-8");
5
6 String title = request.getParameter("title");
7 String content = request.getParameter("content");
8 String categoryId = request.getParameter("category");
9
10 String sql = "insert into blog(title,content,category_id,date) values(?,?,?,now())";
11 String params[] = {title,content,categoryId};
12 QueryRunner qr = DbHelper.getQueryRunner();
13 int result = 0;
14
15 try {
16 result = qr.update(sql, params);
17 } catch (SQLException ex) {
18 Logger.getLogger(BlogServlet.class.getName()).log(Level.SEVERE, null, ex);
19 }
20 }
在后面的文章中我们会提到apache提供的commons-dbutils-1.2jar有点小问题,这个我们以后还会提到。
由于每次对jdbc编程少不了建立数据源,获取数据源,建立连接的工作,所以这里再提供一个辅助类DbHelper来完成以上工作。
DbHelper.java (code 5-2)
1 package com.blog.utils;
2
3 import java.util.logging.Level;
4 import java.util.logging.Logger;
5 import javax.naming.Context;
6 import javax.naming.InitialContext;
7 import javax.naming.NamingException;
8 import javax.sql.DataSource;
9 import org.apache.commons.dbutils.QueryRunner;
10
11 /**
12 *
13 * @author Chucky
14 */
15 public class DbHelper {
16
17 public static QueryRunner getQueryRunner() {
18 DataSource ds = null;
19 Context context = null;
20 try {
21 context = new InitialContext();
22 ds = (DataSource) context.lookup("jdbc/Blog");
23 } catch (NamingException ex) {
24 Logger.getLogger(DbHelper.class.getName()).log(Level.SEVERE, null, ex);
25 }
26 QueryRunner qr = new QueryRunner(ds);
27 return qr;
28 }
29 }
现在通过DbUtils库和DbHelper辅助类的使用,原先code 5-1可以简化成
1 private void add(HttpServletRequest request, HttpServletResponse response)
2 throws ServletException, IOException{
3 response.setContentType("text/html;charset=UTF-8");
4 request.setCharacterEncoding("UTF-8");
5
6 String title = request.getParameter("title");
7 String content = request.getParameter("content");
8 String categoryId = request.getParameter("category");
9
10 String sql = "insert into blog(title,content,category_id,date) values(?,?,?,now())";
11 String params[] = {title,content,categoryId};
12 QueryRunner qr = DbHelper.getQueryRunner();
13 int result = 0;
14
15 try {
16 result = qr.update(sql, params);
17 } catch (SQLException ex) {
18 Logger.getLogger(BlogServlet.class.getName()).log(Level.SEVERE, null, ex);
19 }
20 }
QueryRunner类是DbUtils的核心类,只要通过query()方法对数据查询或update()对数据删除delete/添加insert/更新update;
在后面的文章中,会详细解释。