数据库访问JavaBean(以添加、查询为例)
1.数据库连接对象工具类的设计与实现
(1).在类路径src下建立文件db.properties(file形式)
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/bbb?useUnicode=true&characterEncoding=UTF-8
user=root
password=2411030483
(2).建立一个可以获取连接和释放资源的工具类
package java第十周;
import java.util.Properties;
import java.sql.*;
public class JdbcUtil {
private static String driver;
private static String url;
private static String user;
private static String password;
private static Properties pr=new Properties();
private JdbcUtil(){}
static{
try{
pr.load(JdbcUtil.class.getClassLoader().getResourceAsStream("db.properties"));
driver=pr.getProperty("driver");
url=pr.getProperty("url");
user=pr.getProperty("user");
password=pr.getProperty("password");
Class.forName(driver);
}catch(Exception e)
{
throw new ExceptionInInitializerError(e);
}
}
public static Connection getConnection()throws Exception
{
return DriverManager.getConnection(url,user,password);
}
public static void free(ResultSet rs,Statement st,Connection conn) throws Exception{
if(rs!=null){rs.close();}
if(st!=null){st.close();}
if(conn!=null){conn.close();}
}
}
2.数据库访问Javabean的设计与实现
(1).创建实体类User,实现记录信息对象化。
package java第十周;
public class User {
private int userid;
private String username,sex;
public User(int userid, String username, String sex) {
super();
this.userid = userid;
this.username = username;
this.sex = sex;
}
public User() {
super();
// TODO Auto-generated constructor stub
}
public int getUserid() {
return userid;
}
public void setUserid(int userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
(2).在User.java的基础上创建类UserDao.java封装基本的数据库操作。
package java第十周;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class UserDao {
public void add(User user)throws Exception
{
Connection conn=(Connection) JdbcUtil.getConnection();
String sql="insert into student(id,name,sex) values(?,?,?)";
PreparedStatement pstmt=(PreparedStatement) conn.prepareStatement(sql);
pstmt.setInt(1,user.getUserid());
pstmt.setString(2,user.getUsername());
pstmt.setString(3,user.getSex());
pstmt.executeUpdate();
JdbcUtil.free(null,pstmt,conn);
}
public void update(User user)throws Exception
{
Connection conn=(Connection) JdbcUtil.getConnection();
String sql="update student set id=?,name=?,sex=?";
PreparedStatement pstmt=(PreparedStatement) conn.prepareStatement(sql);
pstmt.setInt(1,user.getUserid());
pstmt.setString(2,user.getUsername());
pstmt.setString(3,user.getSex());
pstmt.executeUpdate();
JdbcUtil.free(null,pstmt,conn);
}
public void delete(int userId)throws Exception
{
Connection conn=(Connection) JdbcUtil.getConnection();
String sql="delete from student where id=?";
PreparedStatement pstmt=(PreparedStatement) conn.prepareStatement(sql);
pstmt.setInt(1,userId);
pstmt.executeUpdate();
JdbcUtil.free(null,pstmt,conn);
}
public User findUserById(int userId)throws Exception
{
Connection conn=(Connection) JdbcUtil.getConnection();
User user=null;
String sql="select * from student where id=?";
PreparedStatement pstmt=(PreparedStatement) conn.prepareStatement(sql);
pstmt.setInt(1,userId);
ResultSet rs=pstmt.executeQuery();
if(rs.next())
{
user=new User();
user.setUserid(rs.getInt("id"));
user.setUsername(rs.getString("name"));
user.setSex(rs.getString("sex"));
}
JdbcUtil.free(rs, pstmt, conn);
return user;
}
public List<User> QueryAll() throws Exception
{
Connection conn=(Connection) JdbcUtil.getConnection();
List<User> userList=new ArrayList<User>();
String sql="select * from student";
PreparedStatement pstmt=(PreparedStatement) conn.prepareStatement(sql);
ResultSet rs=pstmt.executeQuery();
while(rs.next())
{
User user=new User();
user.setUserid(rs.getInt("id"));
user.setUsername(rs.getString("name"));
user.setSex(rs.getString("sex"));
userList.add(user);
}
JdbcUtil.free(rs, pstmt, conn);
return userList;
}
}
3.在jsp中使用javabean访问数据库
1.提交页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>提交数据页面</title>
</head>
<body>
<form action="a01b.jsp" method="post">
<table>
<tr><td>编号:</td><td><input name="id"></td></tr>
<tr><td>姓名:</td><td><input name="name"></td></tr>
<tr><td>性别:</td><td><input name="sex"></td></tr>
<tr><td><input type="submit" value="提交"></td><td><input type="reset" value="取消"></td></tr>
</table>
</form>
</body>
</html>
2.计算加工页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java第十周.User" %>
<%@ page import="java第十周.UserDao" %>
<%@ page import="java.util.List" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>接收数据并实现添加</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");//设置字符编码,避免乱码
String id=request.getParameter("id");
String name=request.getParameter("name");
String sex=request.getParameter("sex");
int idd=Integer.parseInt(id);
User u=new User(idd,name,sex);
UserDao dao=new UserDao();
dao.add(u);
List <User> users=dao.QueryAll();
request.setAttribute("userslist", users);
%>
<jsp:forward page="a01c.jsp"></jsp:forward>
</body>
</html>
3.显示信息页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java第十周.User" %>
<%@ page import="java.util.List" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>添加后显示数据</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");//设置字符编码,避免乱码
List <User> users=(List <User>)(request.getAttribute("userslist"));
for(int i=0;i<users.size();i++)
{
User u=users.get(i);
String abc="编号:"+u.getUserid()+" 姓名:"+u.getUsername()+" 性别:"+u.getSex();
out.println(abc+"<br>");
}
%>
</body>
</html>