Exception in thread "main" java.lang.NullPointerException怎么解决啊

veronica001 2012-07-01 09:56:39
StudentMain.java
package com.lele.jdbc.main;

import java.util.Scanner;

import com.lele.jdbc.menu.Menu;
import com.lele.jdbc.menu.Menu;


public class StudentMain {
public static void main(String[] args){
Scanner s=new Scanner(System.in);
boolean ok = true;
while(ok){
Menu.startInterface();
int i = s.nextInt(); //输入一个整数
switch(i ){
case 1:
Menu.look();
break;
case 2:
Menu.Insert();
break;
case 3:
Menu.alter();
break;
case 4:
Menu.query();
break;
case 5:
System.out.println(" 欢迎使用学生信息管理系统,再见!");
ok = false;
break;
}
}
}

}


Menu.java
package com.lele.jdbc.menu;

import java.util.List;
import java.util.Scanner;

import com.lele.jdbc.dao.StudentD;
import com.lele.jdbc.model.Student;

public class Menu {

public static StudentD sD = new StudentD();
public static Scanner s = new Scanner(System.in);

public static void startInterface(){
System.out.println("***********欢迎使用学生信息管理系统************");
System.out.println("1.浏览信息数据");
System.out.println("2.增加信息数据");
System.out.println("3.修改信息数据");
System.out.println("4.查询信息数据");
System.out.println("5.退出");
}

public static void look() {
List< Student > l = sD.getAllStudent();
System.out.println("所有的学生信息为:");
System.out.println("-------------------");
System.out.println("学生编号\t学生学号\t学生姓名\t学生性别\t学生年龄");
for( Student s : l ){
System.out.println(s.getId()+"\t"+s.getNumber()+"\t"+s.getName()+"\t"+s.getSex()+"\t"+s.getAge());
}
if( l.size()==0 ){
System.out.println("您所查询的 数据不存在!");
}
methodEnd();
}

public static void Insert() {
Student student = new Student();
System.out.println("学生信息输入");
Scanner s = new Scanner(System.in);
System.out.println("请输入学生学号:");
int number= s.nextInt();
System.out.println("请输入学生姓名:");
String name=s.next();
System.out.println("请输入学生性别:");
String sex=s.next();
System.out.println("请输入学生年龄:");
int age=s.nextInt();
sD.save(student);
System.out.println("添加成功!");
methodEnd();
}

public static void alter() {
List< Student > l = sD.getAllStudent();
System.out.println("全部学生信息:");
System.out.println("-------------------");
System.out.println("学生编号\t学生学号\t学生姓名\t学生性别\t学生年龄");
for( Student s : l ){
System.out.println(s.getId()+"\t"+s.getNumber()+"\t"+s.getName()+"\t"+s.getSex()+"\t"+s.getAge());
}
Student student = new Student();
System.out.println("请输入要修改的学生的编号");
Scanner a=new Scanner(System.in);
int ID=a.nextInt();
System.out.println("请输入学生学号:");
int number= a.nextInt();
System.out.println("请输入学生姓名:");
String name=a.next();
System.out.println("请输入学生性别:");
String sex=a.next();
System.out.println("请输入学生年龄:");
int age=a.nextInt();
try {
sD.updateById(student);
} catch (Exception e) {
System.out.println("更新失败,请检查您的输入!");
return ;
}
System.out.println("更新成功");
methodEnd();
}

public static void query() {
System.out.println("请输入要查询的学生编号:");
String num = s.next();
int number = 0 ;
try {
number = Integer.parseInt(num);
} catch (NumberFormatException e) {
}
if( number==0 ){
System.out.println("输入的学号不正确,请重新输入:");
query();
}else{
Student s = sD.getById(number);
if( s==null ){
System.out.println("所查询的学生不存在!");
}else{
System.out.println(s);
methodEnd();
}
}
}
public static void methodEnd(){
System.out.println("请按任意键并回车继续......");
new Scanner(System.in).next();
}
}





DataBase。java


package com.lele.jdbc.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DataBase {
static {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
Connection con = null;
String url = "jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=D:\\study software\\java\\java实验\\综合性实验\\stu.mdb";
Connection conn = DriverManager.getConnection(url, "", "");
return con;
}
}




StudentD.java
package com.lele.jdbc.dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import com.lele.jdbc.model.Student;
import com.lele.jdbc.util.DataBase;

public class StudentD {

private Connection con = null;
private Statement stmt = null;
private ResultSet rs = null;

public List<Student> getAllStudent() {
List<Student> list = new ArrayList<Student>();
try {
con = DataBase.getConnection();
stmt = con.createStatement();
String sql = "select * from student";
rs = stmt.executeQuery(sql);
while(rs.next()) {
Student po = new Student();
po.setId(rs.getInt(1));
po.setNumber(rs.getInt(2));
po.setName(rs.getString(3));
po.setSex(rs.getString(4));
po.setAge(rs.getInt(5));
list.add(po);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
rs.close();
stmt.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return list;
}
public boolean save(Student po) {
System.out.println(po);
boolean b =false;
try {
con = DataBase.getConnection();
stmt = con.createStatement();
String sql = "insert into student values(null,"+po.getNumber()+",'"+po.getName()+"','"+po.getSex()+"',"+po.getAge()+")";
int i =stmt.executeUpdate(sql);
if(i>0) b = true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
stmt.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return b;
}

public Student getById(int id) {
Student po = null;
try {
con = DataBase.getConnection();
stmt = con.createStatement();
String sql = "select * from student where Id="+id;
rs = stmt.executeQuery(sql);
if(rs.next()) {
po = new Student();
po.setId(rs.getInt(1));
po.setNumber(rs.getInt(2));
po.setName(rs.getString(3));
po.setSex(rs.getString(4));
po.setAge(rs.getInt(5));

}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
stmt.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return po;
}
public boolean updateById(Student po) {
boolean b =false;
try {
con = DataBase.getConnection();
stmt = con.createStatement();
String sql = "update student set name='"+po.getName()+"',age="+po.getAge()+",gender='"+po.getSex()+"',studyNumber='"+po.getNumber()
+"' where Id="+po.getId();
int i = stmt.executeUpdate(sql);
if(i>0) b = true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
stmt.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return b;
}
}






Student.java



package com.lele.jdbc.model;

public class Student {

/**
* 学生编号
*/
private int id;
/**
* 学好
*/
private int number;
/**
* 姓名
*/
private String name;
/**
* 性别
*/
private String sex;
/**
* 年龄
*/
private int age;




public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getNumber() {
return number;
}
public void setNumber(int Number) {
this.number = Number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "学生 [编号=" + id + ", 学号=" + number + ", 名字="
+ name + ", 性别=" + sex + ", 年龄=" + age + "]";
}


}




一下是异常提示

Exception in thread "main" java.lang.NullPointerException
at com.lele.jdbc.dao.StudentD.getAllStudent(StudentD.java:40)
at com.lele.jdbc.menu.Menu.look(Menu.java:24)
at com.lele.jdbc.main.StudentMain.main(StudentMain.java:18)
...全文
545 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyuyou123 2012-07-02
  • 打赏
  • 举报
回复
是不是多了或者少了大括号(“{”)啊,以前我也老抱这样的错
leandzgc 2012-07-01
  • 打赏
  • 举报
回复
同意二楼所说。学习的时候老师写的示例都是这样写的:
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (con != null) {
con.close();
}
nmyangym 2012-07-01
  • 打赏
  • 举报
回复
把这句rs.close();之前加个判断:
if(rs!=null)
{
rs.close();
}
试试。
简易人 2012-07-01
  • 打赏
  • 举报
回复
在这行打个断点调试一下!这个行报at com.lele.jdbc.dao.StudentD.getAllStudent(StudentD.java:40)错的

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧