内蒙古农业大学学士学位论文 17
}
public Integer getKcsl() { return this.kcsl; }
public void setKcsl(Integer kcsl) { this.kcsl = kcsl; } }
5.3.1.3 Dao公共类设计
Dao的全称是Data Access Object,即数据访问对象。在该类中实现了数据库的驱动、连接、关闭和多个操作数据库的方法,这些方法包括不同的数据表的操作方法。Dao类的定义,也就是数据库驱动和连接的代码。主要代码如下: public class Dao {
public String toString() { }
return getSpname();
//定义数据库驱动类
protected static String dbClassName = //定义数据库的URL
protected static String dbUrl =
+ \;
\;
\
//设置访问数据库的用户名
protected static String dbUser = \; //设置密码
protected static String dbPwd = \; protected static String second = null; //获取链接
public static Connection conn = null; static {
18 聆风企业仓库管理系统
try { }
if (conn == null) { }
e.printStackTrace();
JOptionPane.showMessageDialog(null,
\请将SQL Server 2000的JDBC驱动包复制到lib文件夹中。\);
System.exit(-1); e.printStackTrace();
Class.forName(dbClassName).newInstance();
初 始 化 连 接 代 码
conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd);
} catch (ClassNotFoundException e) {
}
} catch (Exception e) {
5.3.2 技术难点的实现 5.3.2.1 JDBC连接数据库
实现数据连接的方法以上已经进行了介绍,但这只是实现了数据库的宏观连接,没有实现对数据库中各张表的操作。在Dao类中对所有表的操作方法都是通过static方法实现的。下面对Dao类中关键的方法进行介绍:
1) getKhInfo(Item item)方法
该方法用于获取客户信息,方法的返回值是TbKhInfo类的对象,即客户信息的数据模型。方法将接收一个Item类的实例对象,通过该对象获取客户的Id,然后从数据库中获取该Id的数据信息,并且封装到客户的数据模型中,这个数据模型最后会作为方法返回,返回给方法的调用者。关键代码如下: // 读取客户信息
public static TbKhinfo getKhInfo(Item item) {
String where = \ + item.getName() + \; if (item.getId() != null)
where = \ + item.getId() + \; TbKhinfo info = new TbKhinfo();
ResultSet set = findForResultSet(\
+ where);
try {
内蒙古农业大学学士学位论文 19
}
}
if (set.next()) { }
e.printStackTrace();
info.setId(set.getString(\).trim()); info.setKhname(set.getString(\).trim()); info.setJian(set.getString(\).trim()); info.setAddress(set.getString(\).trim()); info.setBianma(set.getString(\).trim()); info.setFax(set.getString(\).trim()); info.setHao(set.getString(\).trim()); info.setLian(set.getString(\).trim()); info.setLtel(set.getString(\).trim()); info.setMail(set.getString(\).trim()); info.setTel(set.getString(\).trim()); info.setXinhang(set.getString(\).trim());
} catch (SQLException e) {
return info;
2)getGysInfo(Item item)方法
该方法用于获取供应商的信息,方法的返回值是TbGysinfo类的对象,即供应商数据表的模型对象。方法将接收Item类的对象参数,从Item对象中获取供应商的编号和名称,然后从数据库中获取该编号的供应商信息并封装到供应商数据模型对象中,最后将该模型对象作为反方返回值返回给方法调用者。该方法的关键代码如下: // 读取指定供应商信息
public static TbGysinfo getGysInfo(Item item) {
String where = \ + item.getName() + \; if (item.getId() != null)
where = \ + item.getId() + \; TbGysinfo info = new TbGysinfo();
ResultSet set = findForResultSet(\
+ where);
try {
if (set.next()) {
20 聆风企业仓库管理系统
}
}
}
info.setId(set.getString(\).trim());
info.setAddress(set.getString(\).trim()); info.setBianma(set.getString(\).trim()); info.setFax(set.getString(\).trim()); info.setJc(set.getString(\).trim()); info.setLian(set.getString(\).trim()); info.setLtel(set.getString(\).trim()); info.setMail(set.getString(\).trim()); info.setName(set.getString(\).trim()); info.setTel(set.getString(\).trim()); info.setYh(set.getString(\).trim());
} catch (SQLException e) {
e.printStackTrace();
return info;
3) checkLogin(String userStr,String passStr)方法
该方法用于判断登陆用户的用户名和密码是否正确,方法的返回值是boolean类型,接收的参数有userStr和passStr,分别是用户名和密码信息。该方法将在一条SQL语句中获取指定用户名和密码的数据。如果用户名和密码正确就返回true,否则返回false。关键代码如下: //匹配用户名和密码
public static boolean checkLogin(String userStr, String passStr) }
throws SQLException {
ResultSet rs = findForResultSet(\
+ userStr + \ + passStr + \);
name='\
if (rs == null)
return false; return rs.next();
在Dao类中还有很多static的数据表和数据库的处理方法,由于数量太多,这里就不再嗷述了,详见系统代码
内蒙古农业大学学士学位论文 21
。
5.3.2.2 数据库备份与恢复的实现
数据库备份与数据恢复是实现数据安全的重要手段,在系统中实现这个功能的方法是:restorOrBackup(String sql)。该方法用于执行实现数据库备份与恢复的SQL语句。由于这类数据库操作涉及到多用户操作、数据库连接共享等多种可能导致数据库备份与恢复无法执行的异常,所以该方法首先设置数据库的选项为单用户连接模式,再执行相应的SQL语句,这样就可以避免数据库恢复或备份时失败。该方法的关键代码如下:
public static int restoreOrBackup(String sql) throws Exception {
}
5.3.3 系统的模块功能实现
聆风企业仓库管理系统主要分为六个模块,可分为两类:登陆模块、主窗口模块。由于在此涉及内容太多,在此详细介绍登陆模块和主窗口模块下的进货单模块、库存管理模块和基本资料模块。
int rs = 0;
if (conn != null) { }
conn.close();
conn = DriverManager
.getConnection(
// 连接到系统数据库
\,
dbUser, dbPwd);
Statement stmt = conn.createStatement();
String single = \rs = stmt.executeUpdate(single); stmt.close();
rollback immediate \+ sql;
conn.close(); // 关闭数据库连接
conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd); // 恢复原return rs;
有数据库连接