日期:2014-05-16  浏览次数:20562 次

JavaWeb体系结构的理解-7.数据库应用

动态网站的基础是数据库。Java通过JDBC调用常见数据库,这种方式屏蔽了各数据库访存的不同点。

安装、配置MySql

安装MySql注意选择自定义模式安装,安装过程中选择开发者、多功能数据库、DSS/OLAP模式,注意字符集选择GBK,端口3306。这些参数在安装后可以通过config wizard进行更改。

JDBC的工作流程和使用步骤

JDBC属于JavaAPI的一部分,使用JDBC的接口和类可以而在任何关系数据库中以相同的方式执行SQL语句。其开发流程如下:

1.      首先需要到MySql的网站下载当前使用的数据库相应的驱动Jar包文件,本文以mySql为例。

2.      将该文件拷贝到WEB-INF/lib下。

3.      使用Class.forName加载之,Class.forName(“com.mysql.jdbc.Driver”);

4.      设置访问数据库的URL,其格式基本为JDBC+数据库IP+端口+数据库名。如String url=”jdbc:mysql://localhost:3306/dbtest”;

5.      通过Jdbc的DriverManager来创建数据库连接。Connection con = DriverManager.getConnection(URL,user,password);该方法返回Connection对象。

6.      使用Connection对象创建操作Sql语句的Statement对象。Statement stmt = con.createStatement();或者使用connection对象创建PreparedStatemen对象。

7.      通过statement对象执行Sql语句,该方法返回ResultSet或其它。

8.      通过ResultSet显示执行结果。

CURD操作

总体上使用PreparedStatement还是比较方便的,比使用Statement要更好些。

1.      C

首先建立一个数据库连接类,它采用单例模式返回同一个Connection对象。

public class db {
  public staticConnection conn;
  public staticConnection getInstance() throws SQLException,ClassNotFoundException{
     if(conn!=null){
       return conn;      
     }else
     {
       Class.forName("com.mysql.jdbc.Driver");
       String URL="jdbc:mysql://localhost:3306/test";
       returnDriverManager.getConnection(URL, "root", "root");      
     }
  }
}

然后建立操作对象user和user的数据库操作类userDao,代码分别如下:

User.java

public classuser {
private int id;
private String name;
public int getId() {
          return id;
}
public void setId(int id) {
          this.id = id;
}
public String getName() {
          return name;
}
public void setName(String name) {
          this.name = name;
}
}

userDao.java

public classuserDao {
public void newUser(user u) throwsSQLException, ClassNotFoundException{
          String sql = "insert intoguestbook (id,name) values (?,?)";
          PreparedStatement stmt =db.getInstance().prepareStatement(sql);
          stmt.setInt(1, u.getId());
          stmt.setString(2, u.getName());
          int r = stmt.executeUpdate();
}
}

在jsp页面中导入以上元素<%@page import="db.db,model.user,model.userDao" %>,并且使用jsp代码进行新建操作。

<%
        useru = new user();
        Randomr = new Random();
        u.setId(r.nextInt());
        u.setName("gong");
        userDaoud = new userDao();
        ud.newUser(u);
  %>

2.      U

修改操作使用preparedStatement的话,较为方便。

public intupdateUser(user o,user n) throws SQLException, ClassNotFoundException{
          String sql = "update guestbookset name=? where id = ?";
          PreparedStatement stmt =db.getInstance().prepareStatement(sql);
          stmt.setString(1, n.getName());
          stmt.setInt(2, o.getId());
          return stmt.executeUpdate();
}

3.      R

public ListreadUsers() throws SQLException,ClassNotFoundException{
     List<user> list = newArrayList<user>();
     String sql = "select *from guestbook";
     Statement stmt = db.getInstance().createStatement();
     ResultSet rs = stmt.executeQuery(sql);
     while(rs.next()){
       user t = newuser();
       t.setId(rs.getInt("id"));
       t.setName(rs.getString("name&quo