基于jsp,servlet和mysql的用户信息管理系统,dao层

/**
 * 
 */
package com.qingmang.dao;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;


import com.qingmang.domain.User;
import com.qingmang.utils.JdbcUtil;


/**
 * @author administrator
 * 
 */
public class UserDao {


private Connection conn = null;// 初始化Connection连接对象,用于与数据库建立连接
private PreparedStatement pstmt = null;// 初始化向数据库发送预编译sql的PrepareSatement对象
private Statement stmt = null;// 初始化用于向数据库发送SQL的Statement对象
private ResultSet rs = null; // 初始化结果集对象


/*
* PreperedStatement可以避免SQL注入的问题。
* Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出。PreparedStatement
* 可对SQL进行预编译,从而提高数据库的执行效率。
* 并且PreperedStatement对于sql中的参数,允许使用占位符的形式进行替换,简化sql语句的编写。
* 简单记:使用?传值的时候要使用预编译PreperedStatement对象
*/


/*
* (non-Javadoc) 用户添加方法

* @see com.qingmang.dao.inter.IUserDao#add(com.qingmang.domain.User)
*/
public boolean add(User user) {
boolean flag = false;// 初始化布尔类型对象值


try {


conn = JdbcUtil.getConnection();// 连接数据库
String sql = "INSERT INTO users " + "(uname,upassword,"
+ "urealname,uage,usex) " + "VALUES (?,?,?,?,?)";// 在数据库执行的sql语句
pstmt = conn.prepareStatement(sql);// 预编译sql语句;作用:将会大大降低运行时间,提高代码的可读性和可维护性
// 为sql语句中的?设置参数,第一个位置的?占位符为1;第2个?位置的占位符为2,其后为参数
pstmt.setString(1, user.getUname());
pstmt.setString(2, user.getUpassword());
pstmt.setString(3, user.getUrealname());
pstmt.setInt(4, user.getUage());
pstmt.setInt(5, user.getUsex());


int count = pstmt.executeUpdate();// 完成数据添加操作,并计数
if (count > 0)
flag = true;// 如果添加成功,返回true,跳出方法


} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException();
} finally {
try {
JdbcUtil.close(conn, pstmt);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException();
}
}
return flag;
}


/*
* (non-Javadoc) 根据用户名得到用户方法

* @see com.qingmang.dao.inter.IUserDao#getByName(java.lang.String)
*/
public User getByName(String uname) {
// 创建user的null
User user = null;
try {
conn = JdbcUtil.getConnection();// 连接数据库
String sql = "select * from users where uname=?";// 编写在数据库执行的sql语句
pstmt = conn.prepareStatement(sql);// 预编译sql语句;作用:将会大大降低运行时间,提高代码的可读性和可维护性
// 设置参数
pstmt.setString(1, uname);// 为?所在位置设置参数


rs = pstmt.executeQuery();// 执行数据查询操作,并返回数据结果集
if (rs.next()) {
user = new User();// 新建User对象,以便之后将结果集中的数据封装进对象
user.setUname(rs.getString("uname"));
user.setUpassword(rs.getString("upassword"));
user.setUrealname(rs.getString("urealname"));
user.setUage(rs.getInt("uage"));
user.setUsex(rs.getInt("usex"));


}


} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException();
} finally {
try {
JdbcUtil.close(conn, pstmt);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException();
}
}


return user;// 返回查询的对象
}


/*
* (non-Javadoc) 得到所有用户信息

* @see com.qingmang.dao.inter.IUserDao#getAll()
*/
public List<User> getAll() {


return getByKey(null);
}


/**
* 根据关键词查询用户

* @param key
* @return
*/
public List<User> getByKey(String key) {
List<User> list = new ArrayList<User>();
try {
conn = JdbcUtil.getConnection();// 连接数据库
String sql = "";
sql = "select * from users where 1=1";


/* 此处where 1=1 妙处在于在之后加条件时直接用and并列条件即可;也有一个在jsp页面多条件查询的方法,但需用到没学过的知识 */


if (key != null && !"".equals(key)) {
sql += " and uname like '" + key + "%'";
} // 加key值的null和""的判断,如果为空,则全部查询,若不为空,则按条件查询


stmt = conn.createStatement();// 创建用于向数据库发送SQL的Statement对象


rs = stmt.executeQuery(sql);// 执行sql语句的数据查询操作
while (rs.next()) {
User user = new User();


// 将数据封装进对象
user.setUid(rs.getInt("uid"));
user.setUname(rs.getString("uname"));
user.setUpassword(rs.getString("upassword"));
user.setUrealname(rs.getString("urealname"));
user.setUage(rs.getInt("uage"));
user.setUsex(rs.getInt("usex"));


list.add(user);
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
try {
JdbcUtil.close(conn, pstmt, rs);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
return list;
}


/**
* 单条用户删除
* 是通过超链接方式,用post方式向servlet提交一个id, 
* 依照这个id对数据库中的记录进行删除操作。 
* */
// 执行静态的sql(delete)
public boolean delete(String uid) throws Exception {
boolean flag = false;
try {

conn = JdbcUtil.getConnection();// 连接数据库
stmt = conn.createStatement();// 得到Statement对象
String sql = "delete from users where uid='" + uid + "'";// 静态的sql语句
int count = stmt.executeUpdate(sql);// 执行sql语句
if (count >= 1) {
flag = true;
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
try {
JdbcUtil.close(conn, stmt);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
return flag;
}


/**
* 根据id得到用户

* @param id
* @return
*/
public User findUserById(int id) {


// 创建user的null
User user = null;
try {
conn = JdbcUtil.getConnection();
String sql = "select * from users where uid=?";
pstmt = conn.prepareStatement(sql);
// 设置参数
pstmt.setInt(1, id);


rs = pstmt.executeQuery();
if (rs.next()) {
user = new User();
user.setUname(rs.getString("uname"));
user.setUpassword(rs.getString("upassword"));
user.setUrealname(rs.getString("urealname"));
user.setUage(rs.getInt("uage"));
user.setUsex(rs.getInt("usex"));


}


} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException();
} finally {
try {
JdbcUtil.close(conn, pstmt);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException();
}
}


return user;
}


/**
* 修改用户信息

* @param user
*/
public boolean updateUser(User user) {
boolean falg = false;
try {
conn = JdbcUtil.getConnection();
String sql = "update users set uname=?,upassword=?,urealname=?,uage=?,usex=? where uid=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, user.getUname());
pstmt.setString(2, user.getUpassword());
pstmt.setString(3, user.getUrealname());
pstmt.setInt(4, user.getUage());
pstmt.setInt(5, user.getUsex());
pstmt.setInt(6, user.getUid());


pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
try {
JdbcUtil.close(conn, pstmt);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}


}
return falg;


}
}

随着计算机和网络的不断革新,世界已经进入了前所未有的电子时代。作为实用性强、应用范围广泛的会员管理系统也正在被越来越多的各类企业用于消费管理领域。然而,那些针对性强、企业理念清晰的大型超市也正发展迅速,这些大型超市应该具备一套实用便捷的会员积分管理系统来经营产品,让消费者和超市紧密联系起来。如今现有的会员管理系统已经不能充分满足超市用户的需求,用户需要更好的积分管理体系来体验丰富的管理方案,因此需要设计开发在效率、功能和技术上都有所提高的会员积分管理系统。 本文从超市会员管理的实质入手,从本质区别超市会员管理与其他商业消费的会员管理的根本区别,针对专一积分管理提出看法,希望让系统更适用于商业超市的发展。让积分制度实施在一个合适的领域内,并不是所谓的通用格式,而是一个适合超市的专属模式。因此设计开发一种适合超市使用的会员积分管理系统可以实效得解决问题,能够让超市的会员真实的感受到会员积分带来的好处。 本系统是专门设计适用于超市的会员积分管理系统。整体采用B/S架构开发,通过对系统深入细致的分析,以及对业务背景和需求的了解,结合流行成熟的Web开发技术J2EE,设计搭建双管理权限。系统的总体技术框架为JSP+Servlet+JavaBean。前台浏览器浏览,后台服务器直接连接SQL Server2000数据库。通过各客户端计算机接入会员积分的各项事务,实现积分管理的规范性和安全性。同时作为会员信息管理系统的组成部分,将来可以有很好的扩展性和通用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值