26.6.2 存储类的设计
【实例26.8】选择什么样的数据结构对以上的学生类对象进行存储呢?本例选择Vector这种数据结构,对学生进行存储。这种数据结构同字符串数组的用法几乎一样,具体的代码如下所示。
01 import java.util.Vector;
02 import java.sql.*;
03 class storesystem
04 {
05 public Vector getstudent(Connection con, String sql)
06 {
07 Vector v=new Vector();
08 try
09 {
10 Statement st=con.createStatement();
11 ResultSet rs=st.executeQuery(sql);
12 while(rs.next())
13 {
14 String name=rs.getString(1);
15 String code=rs.getString(2);
16 String sexy=rs.getString(3);
17 String age=rs.getString(4);
18 String address=rs.getString(5);
19 String birthday=rs.getString(6);
20 String grade=rs.getString(7);
21 String major=rs.getString(8);
22 student ss=new student(name, code);
23 ss.setsexy(sexy);
24 ss.setmajor(major);
25 ss.setbirthday(birthday);
26 ss.setaddress(address);
27 ss.setage(age);
28 ss.setgrade(grade);
29 v.add(ss);
30 }
31 rs.close();
32 }
33 catch(Exception e)
34 {
35 e.printStackTrace();
36 }
37 return v;
38 }
39 40
public student getobject(Connection con, String stname)
41 {
42 student sst=null;
43 try
44 {
45 Statement st=con.createStatement();
46 String sql="select*from studentinfo where stname='"+stname+"'";
47 ResultSet rs=st.executeQuery(sql);
48 ///通过结果集中的getString方法从数据库表中提取表字段的数据
49 ///再将提取出来的数据赋值给学生对象
50 ///最后将学生对象存储到vector数据结构中
51 while(rs.next())
52 {
53 String code=rs.getString(2);
54 String sexy=rs.getString(3);
55 String age=rs.getString(4);
56 String address=rs.getString(5);
57 String birthday=rs.getString(6);
58 String grade=rs.getString(7);
59 String major=rs.getString(8);
60 sst=new student(stname, code);
61 sst.setsexy(sexy);
62 sst.setmajor(major);
63 sst.setbirthday(birthday);
64 sst.setaddress(address);
65 sst.setage(age);
66 sst.setgrade(grade);
67 }
68 rs.close();
69 70
}
71 catch(Exception e)
72 {
73 e.printStackTrace();
74 }
75 return sst;
76 }
77 ///通过设置数据库的URL、密码、用户名来建立与数据库的连接
78 public Connection getConnection()
79 {
80 Connection con=null;
81 String url1="jdbc:odbc:schoolmanage";
82 String username="";
83 String password="";
84 try
85 {
86 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
87 con=DriverManager.getConnection(url1,username, password);
88 }
89 catch(SQLException e){e.printStackTrace();
90 }
91 catch(ClassNotFoundException ex){ex.printStackTrace();
92 }
93 return con;
94 }
95 }
【代码说明】以上代码从数据库中提取数据,然后按照每个字段的不同,分别赋值给学生类中的每个字段。最后,将学生类的对象添加到Vector数据结构中。这样数据存取速度大大加快,每次对数据库的操作,就不必在数据库中执行。
本程序属于本地程序,如果是在网络数据库中,这样操作会增加网络的负担。解决方案是可以将网络数据库下载到本地的Vector的数据结构中,然后直接操作本地数据结构,等操作完后,再提交到数据库中,这样就能加快速度。