简单的3T结构系统装号管理模块(未完)

王朝java/jsp·作者佚名  2006-01-08
宽屏版  字体: |||超大  

本文用到的数据库操作功能模块源代码请参考我的文章。

http://www.csdn.net/Develop/read_article.asp?id=23713

package skydev.modules.accounts.data;

import java.sql.*;

import java.util.*;

import skydev.modules.data.*;

import javax.crypto.*;

public class User

extends DbObject {

public User() {

// super(new SqlServerConnectionFactory("localhost", 1433, "TheSchool", "sa",""));

super();

}

/**

* 添加一个用户,如果emailAddress已经有人注册过,则注册失败,不修改数据库,返回-1

* 否则返回新添加的UserID

* @param emailAddress

* @param password

* @param fullName

* @param address1

* @param address2

* @param city

* @param province

* @param zipCode

* @param homePhone

* @param country

* @return 添加成功返回新的UserID,否则返回-1

*/

public int create(String emailAddress,

byte[] password,

String fullName,

String address1,

String address2,

String city,

String province,

String zipCode,

String homePhone,

String country) {

Connection con = this.getConnection();

CallableStatement cs = null;

int userID = -1;

//检测当前emailAddress是否已经注册过,如果注册过则不能够再次注册

if (this.testEmailAddress(emailAddress) == false) {

return userID;

}

try {

cs = con.prepareCall(

"{call sp_Accounts_CreateUser(?,?,?,?,?,?,?,?,?,?,?)}");

cs.setString(1, emailAddress);

cs.setBytes(2, password);

cs.setString(3, fullName);

cs.setString(4, address1);

cs.setString(5, address2);

cs.setString(6, city);

cs.setString(7, province);

cs.setString(8, zipCode);

cs.setString(9, homePhone);

cs.setString(10, country);

cs.registerOutParameter(11, Types.INTEGER); //@UserID

cs.execute();

userID = cs.getInt(11);

}

catch (SQLException ex) {

}

finally {

return userID;

}

}

/**

* 更形已经存在的用户信息,如果指定UserID不存在,则不作任何修改

* @param userID

* @param emailAddress

* @param password

* @param fullName

* @param address1

* @param address2

* @param city

* @param province

* @param zipCode

* @param homePhone

* @param country

* @return

*/

public boolean update(int userID, String emailAddress, byte[] password,

String fullName, String address1, String address2,

String city, String province, String zipCode,

String homePhone, String country) {

Connection con = this.getConnection();

CallableStatement cs = null;

boolean ret = false;

try {

cs = con.prepareCall(

"{call sp_Accounts_UpdateUser(?,?,?,?,?,?,?,?,?,?,?)}");

cs.setString(1, emailAddress);

cs.setBytes(2, password);

cs.setString(3, fullName);

cs.setString(4, address1);

cs.setString(5, address2);

cs.setString(6, city);

cs.setString(7, province);

cs.setString(8, zipCode);

cs.setString(9, homePhone);

cs.setString(10, country);

cs.setInt(11, userID);

cs.execute();

ret = true;

}

catch (SQLException ex) {

ret = false;

}

finally {

return ret;

}

}

/**

* 删除指定用户ID的用户信息。如果删除异常将返回False,否则都能够删除

* @param userID

* @return

*/

public boolean delete(int userID) {

Connection con = this.getConnection();

CallableStatement cs = null;

boolean ret = false;

try {

cs = con.prepareCall("{call sp_Accounts_DeleteUser(?)}");

cs.setInt(1, userID);

cs.executeUpdate();

ret = true;

}

catch (SQLException ex) {

ret = false;

}

finally {

return ret;

}

}

/**

* 检验登录用户名称和口令

* @param emailAddress

* @param password

* @return 返回登陆的userID,如果登陆失败,返回-1;

*/

public int validateLogin(String emailAddress, byte[] password) {

Connection con = this.getConnection();

CallableStatement cs = null;

int userID = -1;

try {

cs = con.prepareCall("{?=call sp_Accounts_ValidateLogin(?,?)}");

cs.setString(2, emailAddress);

cs.setBytes(3, password);

cs.registerOutParameter(1, Types.INTEGER); //@UserID

cs.execute();

userID = cs.getInt(1);

}

catch (SQLException ex) {}

finally {

return userID;

}

}

public boolean testPassword(int userID, byte[] encPassword) {

Connection con = this.getConnection();

CallableStatement cs = null;

try {

cs = con.prepareCall("{?=call sp_Accounts_TestPassword(?,?)}");

cs.setInt(2, userID);

cs.setBytes(3, encPassword);

cs.registerOutParameter(1, Types.INTEGER); //@UserID

cs.execute();

if (cs.getInt(1) == 1) { //密码合格

return true;

}

else {

return false;

}

}

catch (SQLException ex) {

return false;

}

catch (Exception e) {

return false;

}

}

public boolean testEmailAddress(String emailAddress) {

Connection con = this.getConnection();

CallableStatement cs = null;

try {

cs = con.prepareCall("{?=call sp_Accounts_TestEmailAddress(?)}");

cs.setString(2, emailAddress);

cs.registerOutParameter(1, Types.INTEGER); //@UserID

cs.execute();

if (cs.getInt(1) == 1) { //该emailAddress可以注册

return true;

}

else {

return false;

}

}

catch (SQLException ex) {

return false;

}

catch (Exception e) {

return false;

}

}

public HashMap getUserRoles(int userID) throws SQLException {

Connection con = this.getConnection();

CallableStatement cs = null;

ResultSet rs = null;

HashMap hm = new HashMap();

try {

cs = con.prepareCall("{call sp_Accounts_GetUserRoles(?)}");

cs.setInt(1, userID);

rs = cs.executeQuery();

while (rs.next()) {

hm.put(new Integer(cs.getInt("RoleID")), cs.getString("Description"));

}

}

catch (SQLException ex) {

System.out.println("Error:HashMap getUserRoles(int userID)");

System.out.println(ex);

}

finally {

return hm;

}

}

//返回一个ArrayList来说明用户基于其角色成员关系赋予的所有许可列表

//用于管理需要

public ArrayList getEffectivePermissionList(int userID) throws SQLException {

//sp_Accounts_GetEffectivePermissionList

ArrayList al = new ArrayList();

Connection con = this.getConnection();

CallableStatement cs = null;

ResultSet rs = null;

try {

cs = con.prepareCall("{call sp_Accounts_GetEffectivePermissionList(?)}");

cs.setInt(1, userID);

rs = cs.executeQuery();

while (rs.next()) {

al.add(new Integer(rs.getInt("PermissionID")));

}

}

catch (SQLException ex) {}

finally {

return al;

}

}

public ArrayList getUserList() {

Connection con = this.getConnection();

CallableStatement cs = null;

ResultSet rs = null;

ArrayList al = new ArrayList();

try {

cs = con.prepareCall("{call sp_Accounts_GetUserList()}");

rs = cs.executeQuery();

while (rs.next()) {

al.add(new Integer(rs.getInt("UserID")));

}

}

catch (SQLException ex) {}

finally {

return al;

}

}

//基本思想:将剑所到的数据行用集合的形式保存,字段名作为Key,字段值作为KeyValue

public HashMap retrive(int userID) throws SQLException { //检索指定用户的详细信息sp_Accounts_GetUserDetails

HashMap hm = new HashMap();

Connection con = this.getConnection();

CallableStatement cs = null;

ResultSet rs = null;

try {

cs = con.prepareCall("{call sp_Accounts_GetUserDetails(?)}");

cs.setInt(1, userID);

rs = cs.executeQuery();

while (rs.next()) {

hm.put("UserID", new Integer(rs.getInt("UserID")));

hm.put("EmailAddress", rs.getString("EmailAddress"));

hm.put("FullName", rs.getString("FullName"));

hm.put("Address1", rs.getString("Address1"));

hm.put("Address2", rs.getString("Address2"));

hm.put("City", rs.getString("City"));

hm.put("Province", rs.getString("Province"));

hm.put("ZipCode", rs.getString("ZipCode"));

hm.put("HomePhone", rs.getString("homePhone"));

hm.put("Country", rs.getString("Country"));

}

}

catch (SQLException ex) {

System.out.println(ex);

}

finally {

return hm;

}

}

public HashMap retrive(String emailAddress) {

HashMap hm = new HashMap();

Connection con = this.getConnection();

CallableStatement cs = null;

ResultSet rs = null;

try {

cs = con.prepareCall("{call sp_Accounts_GetUserDetailsByEmail(?)}");

cs.setString(1, emailAddress);

rs = cs.executeQuery();

while (rs.next()) {

hm.put("UserID", new Integer(rs.getInt("UserID")));

hm.put("EmailAddress", rs.getString("EmailAddress"));

hm.put("FullName", rs.getString("FullName"));

hm.put("Address1", rs.getString("Address1"));

hm.put("Address2", rs.getString("Address2"));

hm.put("City", rs.getString("City"));

hm.put("Province", rs.getString("Province"));

hm.put("ZipCode", rs.getString("ZipCode"));

hm.put("HomePhone", rs.getString("homePhone"));

hm.put("Country", rs.getString("Country"));

}

}

catch (SQLException ex) {

System.out.println(ex);

}

finally {

return hm;

}

}

}

上面仅实现User模块

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有