求各位大神帮忙看一下 为啥会出现空指针异常
W_fat 2018-01-12 11:53:30 package com.p.jbit;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class Test2{
private static final String driver = "com.mysql.jdbc.Driver";
private static final String url = "jdbc:mysql://localhost:3306/demo1?useUnicode=true&&characterEncoding=utf-8";
private static final String user="root";
private static final String password="123";
private Connection conn=null;
private ResultSet res ;
PreparedStatement prpe=null;
/*
* 添加
*/
public void insret(Preson preson){
try {
//加载驱动
Class.forName(driver);
conn=DriverManager.getConnection(url, user, password);
//创建操作sql语句
prpe=conn.prepareStatement("insert into preson(pname,paddr,psex)values(?,?,?)");
//开始给占位符赋值操作
prpe.setString(1, preson.getPname());
prpe.setString(2, preson.getPaddr());
prpe.setString(3, preson.getPsex());
int i=prpe.executeUpdate();
if(i!=0){
System.out.println("添加成功!!");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/*
* 删除
*/
public void Delete(int i){
try {
//加载驱动
Class.forName(driver);
conn=DriverManager.getConnection(url, user, password);
//创建操作sql语句
prpe=conn.prepareStatement("delete from preson where pid = ?");
prpe.setInt(1 , i);
int c = prpe.executeUpdate();
if(c!=0){
System.out.println("删除成功!");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/*
* 修改
*/
public void update(Preson pe){
try {
//加载驱动
Class.forName(driver);
conn=DriverManager.getConnection(url, user, password);
//创建操作sql语句
prpe=conn.prepareStatement("update preson set pname='李四',paddr='上海',psex='女' where pid=1");
int j = prpe.executeUpdate();
if(j!=0){
System.out.println("添加成功!");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/*
* 查询
*/
public List<Preson>demed(){
List<Preson> list = new ArrayList<Preson>();
try {
//加载驱动
Class.forName(driver);
conn=DriverManager.getConnection(url, user, password);
//创建操作sql语句
prpe=conn.prepareStatement("select * from preson");
res = prpe.executeQuery();
while(res.next()){
int pid = res.getInt("pid");
String pname = res.getString("pname");
String paddr = res.getString("paddr");
String psex = res.getString("psex");
Preson preson = new Preson();
preson.setPid(pid);
preson.setPname(pname);
preson.setPaddr(paddr);
preson.setPsex(psex);
list.add(preson);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
public static void main(String[] args) {
Test2 te = new Test2();
//Preson pe = new Preson();
// pe.setPname("老李");
// pe.setPaddr("天津");
// pe.setPsex("女");
//te.insret(pe);
//te.Delete(2);
//te.update(pe);
List<Preson> list = te.demed();
//语法没有报错 就是在最后运行的时候这个for循环总是出现空指针异常,SQL确定已经建立preson表了。
for(Preson preson : list){
System.out.println(preson.getPid()+"=="+preson.getPname()+"=="+preson.getPaddr()+"=="+preson.getPsex());
}
}
}