You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
library/ReaderAccess.java

151 lines
5.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package Model.access;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
/**
* 读者信息表的增删改查
*
* @author rsw
*
*/
public class ReaderAccess {
/**
* 注册时向reader表中添加信息
*/
public void insertReader(String r_number, String r_name, String gender, int reader_type, String dept,
String classes, String r_tele, String r_email, String keeppass, String r_password) throws SQLException {
String sql = "INSERT INTO bookms.reader(number,name,gender,reader_type,dept,classes,tele,email,keeppass,password) VALUES(?,?,?,?,?,?,?,?,?,?)";
Connect.update_public(sql, r_number, r_name, gender, reader_type, dept, classes, r_tele, r_email, keeppass,
r_password);
}
/**
* 查询账号是否存在 用于用户注册和新增读者(保证账号唯一性)
*/
public boolean isNumber(String r_number) throws SQLException {
String sql = "SELECT number FROM bookms.reader WHERE number=?";
return Connect.exist(sql, r_number);
}
/**
* 查询账号密码是否存在
*/
public boolean queryRerader(String r_number, String r_password) throws SQLException {
String sql = "SELECT number,password FROM bookms.reader WHERE number=? AND password=?";
return Connect.exist(sql, r_number, r_password);
}
/**
* 查询个人信息
*/
public Vector<Vector<Object>> queryReaderInfo(String count) throws SQLException {
String sql = "SELECT * FROM bookms.reader WHERE number=?";
return Connect.queryExact_public(sql, count);
}
/**
* 修改读者信息
*/
public void updateReader(String dept, String classes, String tele, String email, String number)
throws SQLException {
String sql = "UPDATE bookms.reader SET dept=?,classes=?,tele=?,email=? WHERE number=?";
Connect.update_public(sql, dept, classes, tele, email, number);
}
/**
* 修改密码
*
* @throws SQLException
*/
public void updateReaderPass(String alterPass, String r_number, String r_password, String r_keepPass)
throws SQLException {
String sql = "UPDATE bookms.reader SET password='" + alterPass
+ "' WHERE number=? AND password=? AND keeppass=?";
Connect.update_public(sql, r_number, r_password, r_keepPass);
}
/**
* 查询 全部读者
*/
public Vector<Vector<Object>> seleReader() throws SQLException {
String sql = "SELECT number,name,gender,rt_name,dept,classes,tele,email,logindate from bookms.reader,bookms.readertype where bookms.reader.reader_type=bookms.readertype.rt_id";
return Connect.queryExact_public(sql);
}
/**
* 查询读者的信息 模糊查寻
*/
public Vector<Vector<Object>> queryReaderInfo(String number, String name, String dept, String classes)
throws SQLException {
String sql = "SELECT number,name,gender,rt_name,dept,classes,tele,email,logindate from bookms.reader,bookms.readertype "
+ "where bookms.reader.reader_type=bookms.readertype.rt_id AND (number LIKE ? OR name LIKE ? OR dept LIKE ? OR classes LIKE ?)";
return Connect.queryDim_public(sql, number, name, dept, classes);
}
/**
* 查询读者的信息 模糊查寻 类型查询 重写原因,读者类型如果模糊查寻,会出现读者类型相似性问题
*/
public Vector<Vector<Object>> seleReaderInfo(String number, String name, String dept, String classes,
String reader_type) throws SQLException {
String sql = "SELECT number,name,gender,rt_name,dept,classes,tele,email,logindate from bookms.reader,bookms.readertype "
+ "where bookms.reader.reader_type=bookms.readertype.rt_id AND (number LIKE ? OR name LIKE ? OR dept LIKE ? OR classes LIKE ?) AND rt_name=?";
Vector<Vector<Object>> dataVector = new Vector<Vector<Object>>(); // 存储所有数据里面每个小的Vector是存单行的
Connection conn = Connect.connectMySQL();// 调用数据库的连接方法
PreparedStatement ptmt = conn.prepareStatement(sql);
ptmt.setString(1, "%" + number + "%");
ptmt.setString(2, "%" + name + "%");
ptmt.setString(3, "%" + dept + "%");
ptmt.setString(4, "%" + classes + "%");
ptmt.setString(5, reader_type);
ResultSet rs = ptmt.executeQuery();
while (rs.next()) {
Vector<Object> vec = new Vector<Object>();// 就是这个存单行的最后放到上面的大的Vector里面
// 遍历数据库中每列的结果集 column需要遍历的列数
for (int i = 1; i <= 9; i++) {
vec.add(rs.getObject(i));
}
dataVector.add(vec);
}
Connect.closeMySQL();// 关闭连接
return dataVector;
}
/**
* 删除读者信息
*/
public void dropReader(String studentNumber) throws SQLException {
String sql = "DELETE FROM bookms.reader WHERE number=?";
Connect.update_public(sql, studentNumber);
}
/**
* 忘记密码 密保验证
*/
public boolean queryKeeppass(String forgetPass, String count) throws SQLException {
String sql = "SELECT keeppass FROM bookms.reader WHERE keeppass=? AND number=?";
return Connect.exist(sql, forgetPass, count);
}
/**
* 忘记密码后重置密码
*/
public void resetPass(String forgetPass, String count, String newPass) throws SQLException {
String sql = "UPDATE bookms.reader SET password='" + newPass + "' WHERE keeppass=? AND number=? ";
Connect.update_public(sql, forgetPass, count);
}
/**
* 查询是否有读者具备此读者类型 删除类读者类型前,保证没有读者应用此读者类型
*/
public boolean existReadertype(int rt_id) throws SQLException {
String sql = "SELECT reader_type FROM bookms.reader WHERE reader_type=?";
return Connect.exist(sql, rt_id);
}
}