我们都知道一个数据系统的核心就是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;
在后面的文章中,会详细解释。