动态网站的基础是数据库。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"));
list.add(t);
}
returnlist;
}
4. D
public intdeleteUser(user old) throws SQLException,ClassNotFoundException{
String sql = "deletefrom guestbook where id = ?";
PreparedStatement ps = db.getInstance().prepareStatement(sql);
ps.setInt(1, old.getId());
returnps.executeUpdate();
}
参考文献
4. JavaWeb体系结构的理解-4.JavaBean技术