UserDaoImpl.java:package org.fkjava.dao.impl;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.fkjava.dao.UserDao;
import org.fkjava.dto.User;
import org.fkjava.util.ConnectionFactory;
public class UserDaoImpl implements UserDao {
@Override
public User findByLoginNameAndPassword(String loginname,String password) throws SQLException{
System.out.println("1");
Connection con = null ;
Statement stm = null ;
ResultSet rs = null ;
User user = new User() ;
try {
//System.out.println("1");
ConnectionFactory cf = new ConnectionFactory() ;
con = cf.getOracleConnection() ;
stm = con.createStatement();
System.out.println(con);
StringBuffer sql = new StringBuffer() ;
//sql.append("select * from kero_user where ") ;
//sql.append(" loginname='"+loginname+"' and password='"+password+"' ") ;
//System.out.println(sql.toString());
rs = stm.executeQuery("select * from kero_user") ;
System.out.println(rs.getString("id"));
if(rs.next()){
user.setId(rs.getString("id")) ;
user.setLoginname(rs.getString("loginname")) ;
user.setPassword(rs.getString("password")) ;
user.setSex(rs.getString("sex")) ;
user.setAge(rs.getInt("age")) ;
return user ;
}
return null ;
} catch (Exception e) {
e.printStackTrace() ;
throw new SQLException(e) ;
}finally{
ConnectionFactory.close(con,stm,rs) ;
}
}
}-------------------------------------------------------------------------------
ConnectionFactory.java:package org.fkjava.util;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;import org.junit.Test;
public class ConnectionFactory {
private static final String ORACLEDRIVER = "oracle.jdbc.driver.OracleDriver";
private static final String ORACLEURL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl" ;
private static final String ORACLEUSER = "kero" ;
private static final String ORACLEPASSWORD = "kero" ;
@Test
public  Connection getOracleConnection(){
try {
System.out.println("4");
Class.forName(ORACLEDRIVER) ;

//Connection con = DriverManager.getConnection(ORACLEURL, ORACLEUSER, ORACLEPASSWORD) ;
//System.out.println(con);
return DriverManager.getConnection(ORACLEURL, ORACLEUSER, ORACLEPASSWORD) ;
} catch (Exception e) {
e.printStackTrace() ;
return null ;

}
}
public static void close(Connection con,Statement stm, ResultSet rs){
try {
if(rs != null) rs.close() ;
if(stm != null) stm.close() ;
if(con != null) con.close();
} catch (Exception e) {
e.printStackTrace() ;

}
}
}
--------------------------------------------------------------------------------
error:
3
kero
2
1
java.lang.NullPointerException
at org.fkjava.dao.impl.UserDaoImpl.findByLoginNameAndPassword(UserDaoImpl.java:21)
at org.fkjava.servlet.LoginServlet.doPost(LoginServlet.java:51)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.fkjava.filter.CharsetEndingFilter.doFilter(CharsetEndingFilter.java:40)
求大神帮忙,为什么会空指针,我把ConnectuonFactory.java的代码方另一个项目里运行正常,能获取链接,也能操作数据库。

解决方案 »

  1.   

    ConnectionFactory cf = new ConnectionFactory() ;
    con = cf.getOracleConnection() ;
    这里你输出con
    看看con是不是为null
      

  2.   

    我也知道返回的con是空,但是不知道为什么为空?我把这段代码放到别的地方去用,返回的CON不为空啊!
    public  Connection getOracleConnection(){
    try {
    System.out.println("4");
    Class.forName(ORACLEDRIVER) ;//Connection con = DriverManager.getConnection(ORACLEURL, ORACLEUSER, ORACLEPASSWORD) ;
    //System.out.println(con);
    return DriverManager.getConnection(ORACLEURL, ORACLEUSER, ORACLEPASSWORD) ;
    } catch (Exception e) {
    e.printStackTrace() ;
    return null ;}
      

  3.   

    你连接数据库的时候出错了,在异常捕获的时候你return null 如果你连接本地数据库的话你可以写localhost 有时候写ip jdbc是连接不上去的