private String username;//存储登陆数据库的用户名 private String password;//存储登陆数据库的密码 private Connection con;//声明一个Connection对象
private Statement stm;//声明一个Statement对象用来执行SQL语句 private ResultSet rs;//声明一个ResultSet对象用来存储结果集 public DB() { //通过构造方法为属性赋值 className = \ url = \ username = \ password = \} /**
* @功能 加载数据库驱动程序 */
public void loadDrive() { try { Class.forName(className); //存储数据库驱动程序 } catch (ClassNotFoundException e) { System.out.println(\加载数据库驱动程序失败!\ e.printStackTrace(); //向控制器输出提示信息 } }
/**获取数据库连接 * @功能 */
public void getCon() { loadDrive(); //存储数据库驱动程序 try { con = DriverManager.getConnection(url, username, password);//获取连接 } catch (Exception e) { System.out.println(\连接数据库失败!\ e.printStackTrace(); } } /**
* @功能 获取Statement对象 */
public void getStm() { getCon();//获取数据库连接 try { stm = con.createStatement();//获取Statement类对象 } catch (Exception e) { System.out.println(\获取Statement对象失败!\ e.printStackTrace(); } } /**
* @功能 查询数据表,获取结果集 */
public void getRs(String sql) { getStm(); try { rs = stm.executeQuery(sql);//執行SQL語句查詢數據表獲取結果集 } catch (Exception e) { System.out.println(\查询数据库失败!\ e.printStackTrace(); } }
6
/**
* @功能 查询数据表,获取投票选项 */
public List selectVote(String sql) { List votelist = null; if (sql != null && !sql.equals(\ getRs(sql);//查詢數據表獲取結果集 if (rs != null) { votelist = new ArrayList(); try { while (rs.next()) {//依次將結果集中的记录封装到VoteSingle类对象中 VoteSingle voteSingle = new VoteSingle(); voteSingle.setId(MyTools.intToStr(rs.getInt(1))); voteSingle.setTitle(rs.getString(2)); voteSingle.setNum(MyTools.intToStr(rs.getInt(3))); voteSingle.setOrder(MyTools.intToStr(rs.getInt(4))); votelist.add(voteSingle);//将VoteSingle类对象存储到List集合中 } } catch (Exception e) { System.out.println(\封装tb_vote表中数据失败!\ e.printStackTrace(); } finally { closed(); //关闭 数据库 } } } return votelist; } /**
* @功能 查询数据表,获取指定IP最后一次投票的记录 */
public TempSingle selectTemp(String sql) { TempSingle tempSingle = null; if (sql != null && !sql.equals(\ getRs(sql);//查询数据表获取结果集 if (rs != null) { try { while (rs.next()) {//若该结果集中有记录,说明当前用户投过票 tempSingle = new TempSingle(); tempSingle.setId(MyTools.intToStr(rs.getInt(1))); tempSingle.setVoteIp(rs.getString(2)); tempSingle.setVoteMSEL(rs.getLong(3)); tempSingle.setVoteTime(rs.getString(4)); } } catch (Exception e) { System.out.println(\封装tb_temp表中数据失败!\ e.printStackTrace(); } finally { closed(); //关闭数据库 } } } return tempSingle;//返回TempSingle类对象中 } /**
* @功能 更新数据表,实现票数累加 */
public int update(String sql) {
7
}
int i = -1; if (sql != null && !sql.equals(\ getStm();//获取Statement类对象 try { i = stm.executeUpdate(sql);//执行SQL语句更新数据表 } catch (Exception e) { System.out.println(\更新数据库失败!\ e.printStackTrace(); } finally { closed(); } } return i; } /**
* @功能 关闭数据库连接 */
public void closed() { try { if (rs != null) rs.close();//关闭结果集 if (stm != null) stm.close();//关闭Statement类对象 if (con != null) con.close();//关闭数据库连接 } catch (Exception e) { System.out.println(\关闭数据库失败!\ e.printStackTrace(); } }
4)工具类的编写
该系统涉及了类型的转换,计算时间差等操作,这些操作在一个类中实现,这样可以实现代码的重复使用。该工具类为mytools,代码如下:
package com.yxq.toolbean;
import java.text.SimpleDateFormat; import java.util.Date; public class MyTools { /** * @功能 将int型数据转换为String型数据 * @参数 num为要转换的int型数据 * @返回值 String类型 */ public static String intToStr(int num){ return String.valueOf(num); } /** * @功能 比较时间。 * @参数 today当前时间,temp为上次投票时间。这两个参数都是以毫秒显示的时间 * @返回值 String类型 */ public static String compareTime(long today,long temp){ int limitTime=60; //设置限制时间为60分钟 long count=today-temp; //计算当前时间与上次投票时间相差的毫秒数(该结果一定是大于等于0) if(count<=limitTime*60*1000) //如果相差小于等于60分钟(1分=60秒,1秒=1000毫秒) return \
8
else //如果相差大于60分钟 return \ } /** * @功能 格式化时间为指定格式。首先通过Date类的构造方法根据给出的毫秒数获取一个时间,然后将该时间转换为指定格式,如\年-月-日 时:分:秒\ * @参数 ms为毫秒数 * @返回值 String类型 */ public static String formatDate(long ms){ Date date=new Date(ms); SimpleDateFormat format=new SimpleDateFormat(\ String strDate=format.format(date); return strDate; } }
5)显示投票选项的设计
当用户访问首页面后,单击“参与投票”就会进入vote.jsp页面显示投票选项,在该页面中先要查询tb_vote数据表获取所有的投票选项,然后逐一显示投票选项的标题
<%@ page contentType=\<%@ page import=\
<%@ page import=\oteSingle\
response.addHeader(\ response.addHeader(\ response.addDateHeader(\ String sql=\生成查询投票选项的SQL语句 List votelist=myDb.selectVote(sql); //查询数据表获取所有投票选项 %>
6)参与投票的设计
<%@ page contentType=\<%@ page import=\<%@ page import=\<%@ page import=\
String mess=\ //用来保存提示信息 10