1、 import java.io.*;
2、 import java.awt.event.*;
3、 import java.awt.*;
4、 import java.text.*;
5、 import java.util.*;
6、 import java.sql.*;
7、 public class Library_System
8、 {
9、 public static void main(String args[])
10、 {
11、 UI userInterface = new UI();
12、 userInterface.init();
13、 }
14、 }
15、 class UI
16、 {17、 private Connection conn;//
18、 private Statement stmt1;
19、 private Statement stmt2;
20、 private Vector books;
21、 private Vector students;22、 public void init()
23、 {
24、 this.connectDB();
25、 this.readDB();
26、 }
27、 public void connectDB()
28、 {
29、 try
30、 {
31、 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
32、 String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=library_System.mdb";
33、 conn = DriverManager.getConnection(url);
34、 stmt1 = conn.createStatement();
35、 stmt2 = conn.createStatement();
36、 }
37、 catch(Exception e)
38、 {
39、 e.printStackTrace();
40、 }
41、 }42、 public void readDB()
43、 {
44、 books = new Vector();
45、 students = new Vector();
46、 Student s;
47、 Book b;
48、 try{
49、 ResultSet rs1 = stmt1.executeQuery("select * from books");50、 while(rs1.next())
51、 {
52、 b = new Book(rs1.getString(1).trim(),
53、 rs1.getString(2).trim(),
54、 rs1.getString(3).trim(),
55、 rs1.getString(4).trim(),
56、 rs1.getInt(5),
57、 rs1.getInt(6),
58、 rs1.getString(7),
59、 rs1.getInt(8));
60、 books.add(b);
61、 }
62、 ResultSet rs2 = stmt2.executeQuery("select * from students");
63、 while(rs2.next())
64、 {
65、 s = new Student(rs2.getString(1).trim(),
66、 rs2.getString(2).trim(),
67、 rs2.getString(3).trim(),
68、 rs2.getString(4).trim(),
69、 rs2.getString(5).trim());
70、 students.add(s);
71、 }
72、 }catch(SQLException e)
73、 {
74、 e.printStackTrace();
75、 }
76、 Book bb = (Book)books.elementAt(1);//测试是否连接上数据库
77、 System.out.println(bb.getID());78、 }79、 public void updateDB(String sql1,String sql2)
80、 {
81、 try{
82、 stmt1.executeUpdate(sql1);
83、 stmt2.executeUpdate(sql2);
84、 }catch(SQLException e)
85、 {
86、 e.printStackTrace();
87、 }88、 }89、 public void closeDB()
90、 {
91、 try
92、 {
93、 conn.close();
94、 }catch(SQLException e)
95、 {
96、 e.printStackTrace();
97、 }
98、 }
99、 public void test()
100、 {
101、 System.out.println("this is a test");
102、 }
103、 }
104、 /**********************图书和学生信息********************************/
105、 class Book
106、 {
107、 private String bookID;
108、 private String bookName;
109、 private String author;
110、 private String bookman;//出版商
111、 private int remainCount;//剩余数量
112、 private int totalCount;//总数量
113、 private String prePeopleID;//预定人ID
114、 private int lendedCount;//已借出次数115、 public Book(String id,String name,String auth,String bman,int rCount,int tCount,String pID,int lCount)
116、 {
117、 bookID = id;
118、 bookName = name;
119、 author = auth;
120、 bookman = bman;
121、 remainCount = rCount;
122、 totalCount = tCount;
123、 prePeopleID = pID;
124、 lendedCount = lCount;
125、 }
126、 public String getID()
127、 {
128、 return bookID;
129、 }130、 }131、 class Student 
132、 {
133、 private String sID;
134、 private String sName;
135、 private String bBookID;
136、 private String preBookID;
137、 private String email;138、 public Student(String sID,String sName,String bBookID,String preBookID,String email)
139、 {
140、 this.sID = sID;
141、 this.sName = sName;
142、 this.bBookID = bBookID;
143、 this.preBookID = preBookID;
144、 this.email = email;
145、 }146、 }
147、 /*
148、 D:\>java Library_System
149、 Exception in thread "main" java.lang.NullPointerException
150、 at UI.readDB(Library_System.java:69)
151、 at UI.init(Library_System.java:27)
152、 at Library_System.main(Library_System.java:12)
153、 */

解决方案 »

  1.   

    应该是:
    D:\>java Library_System
    Exception in thread "main" java.lang.NullPointerException
            at UI.readDB(Library_System.java:62)
            at UI.init(Library_System.java:25)
            at Library_System.main(Library_System.java:12)
      

  2.   

    NullPointerException,错误很明显
      

  3.   

    在INIT函数里再调用一下CLOSEDB 啊,连接还没关呢.
      

  4.   

    艾,大哥阿,能给点具体点不?我知道问题出在rs2语句里面,但是上面的rs1是可以返回数据库结果的阿?为什么rs2就会出现空指针呢??
      

  5.   

    我开始用一个Statement调用两个executeQuery()也是一样的结果