设计
所需组件:
1.数据库test及其数据库表userinfo(userid,username,sex)
2.在项目src下建立属性文件db.properties,存放数据库基本信息
3.建立一个获取连接和释放资源的工具类JdbcUtil.java
4.建立类User.java实现记录信息对象化,体现面向对象程序设计思想
5.建立UserDao.java封装基本的数据库操作:
添加用户:public void add(User user)
修改用户:public void update(User user)
删除用户:public void delete(String userId)
ID查询:public User findBYid(String userId)
查询全部:public ListQueryAll()
实现
1.在src下建立文件db.properties
driver=com.microsoft.sqlserver.jdbc.SQLServerDriver//数据库驱动程序名
url=jdbc:sqlserver://localhost:1433;DatabaseName=test
user=sa
password=123456
2.建立获取连接和释放资源的工具类JdbcUtil.java
package beans;
import java.sql.*;
import java.util.Properties;
//建立一个获取连接和释放资源的工具类
public final 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();
}
}
//设计获得连接对象的方法getConnection()
public static Connection getConnection() throws SQLException{
return DriverManager.getConnection(url,user,password);
}
//设计释放结果集,语句和连接的方法free()
public static void free(ResultSet rs,Statement st,Connection conn){
try{
if(rs!=null) rs.close();
}catch(SQLException e){e.printStackTrace();
}finally{
try{if(st!=null) st.close();
}catch(SQLException e){e.printStackTrace();
}finally{
if(conn!=null)
try{conn.close();
}catch(SQLException e){e.printStackTrace();
}
}
}
}
}
3.建立User.java实现记录信息对象化,基于对象对数据库关系表进行操作。
package beans;
//实现记录信息对象话,基于对象对数据库关系表进行操作
public class User {
private String userid,username,sex;
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;
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
@Override
public String toString() {
return userid+" "+username+" "+sex;
}
}
4.建立UserDao.java封装基本的数据库操作。
package beans;
//封装基本的数据库操作
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class UserDao {
//向数据库中添加用户记录的方法add()
public void add(User user)throws Exception{
Connection conn=null;
PreparedStatement ps=null;
try{
conn=JdbcUtil.getConnection();
String sql="insert into userinfo value(?,?,?)";
ps=conn.prepareStatement(sql);
ps.setString(1,user.getUserid());
ps.setString(2,user.getUsername());
ps.setString(3,user.getSex());
ps.executeUpdate();
}finally{JdbcUtil.free(null, ps, conn);}
}
//修改数据库用户记录的方法update()
public void update(User user)throws Exception{
Connection conn=null;
PreparedStatement ps=null;
try{
conn=JdbcUtil.getConnection();
String sql="update userinfo set username=?,sex=? where userid=?";
ps=conn.prepareStatement(sql);
ps.setString(1,user.getUsername());
ps.setString(2,user.getSex());
ps.setString(3,user.getUserid());
ps.executeUpdate();
}finally{JdbcUtil.free(null, ps, conn);}
}
//删除数据库用户记录的方法delete()
public void delete(String userId)throws Exception{
Connection conn=null;
PreparedStatement ps=null;
try{
conn=JdbcUtil.getConnection();
String sql="delete from userinfo where userid=?";
ps=conn.prepareStatement(sql);
ps.setString(1,userId);
ps.executeUpdate();
}finally{JdbcUtil.free(null, ps, conn);}
}
//根据ID查询用户的方法findBYid()
public User findByid(String userId)throws Exception{
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
User user=null;
try{
conn=JdbcUtil.getConnection();
String sql="select * from userinfo where userid=?";
ps=conn.prepareStatement(sql);
ps.setString(1,userId);
rs=ps.executeQuery();
//System.out.println(rs.next());
if(rs.next()){
user=new User();
user.setUserid(rs.getString(1));
user.setUsername(rs.getString(2));
user.setSex(rs.getString(3));
}
}finally{JdbcUtil.free(rs, ps, conn);}
return user;
}
//查询全部用户的方法QueryAll()
public List<User> QueryAll()throws Exception{
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
List<User> userList=new ArrayList<User>();
try{
conn=JdbcUtil.getConnection();
String sql="select * from userinfo";
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
User user=new User();
user.setUserid(rs.getString(1));
user.setUsername(rs.getString(2));
user.setSex(rs.getString(3));
userList.add(user);
}
}finally{JdbcUtil.free(rs, ps, conn);}
return userList;
}
}
使用
建立jsp文件usebean.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page language="java" import="beans.User"%>
<%@ page language="java" import="beans.UserDao"%>
<html>
<head>
<title>javaBean访问数据库测试</title>
</head>
<body>
<% UserDao d=new UserDao(); //创建对象
User user = d.findByid("201501"); 获取返回对象
out.println(user.getUserid()+" "+user.getUsername()+" "+user.getSex()); //输出对象属性
%>
</body>
</html>