这段是数据库连接获取数据的代码:
package kignbi.dong;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;public class DB { Connection connect = null;
ResultSet rs = null;
public DB(DataSource dataSource) {

try {
connect = dataSource.getConnection();
}
catch(SQLException e) {
e.printStackTrace();
}
}

public ResultSet OpenSql(String sql) {
try {
Statement stmt = connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);

catch(SQLException ex) { 
ex.printStackTrace();
}
return rs;
}


public int ExecSql(String sql) {
int result = 0;
try {
Statement stmt = connect.createStatement();
result = stmt.executeUpdate(sql);

catch(SQLException ex) { 
System.err.println(ex.getMessage());

}
return result;
}

public void close(){
if(connect!=null){
try{
connect.close();
connect = null;
}catch(SQLException ex) { 
System.err.println(ex.getMessage());
}
}
}
}还有浏览器报错的提示:
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: java.lang.NullPointerException
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
kignbi.dong.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:46)
root cause java.lang.NullPointerException
kignbi.dong.DB.OpenSql(DB.java:25)
kignbi.dong.action.UserLoginAction.execute(UserLoginAction.java:69)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
kignbi.dong.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:46)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.35 logs.
有谁能帮忙看看,要怎么改代码才能解决这个问题。空指针J2EE

解决方案 »

  1.   

    dataSource实例化了么?
    下次代码里面注释上报错的地方
      

  2.   

    connect = dataSource.getConnection();
    Statement stmt = connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
     rs = stmt.executeQuery(sql);
    这3段报错了。我也额外创建个test.java文件来debug一下,connect还是null,获取不了数据库的内容。
      

  3.   

    问下你dateSource这个对象应该是创建coon对象用的的,在这个类里面你有给coonn对象赋值么?
    不行的你吧dateSource这个对象构造发出来
      

  4.   

    DataSource这个类的代码楼主拿出来晒晒。
      

  5.   

    connection为null,看看驱动。看看用户名密码之类的
      

  6.   

    楼主干脆Class.forName();得到connection算了
      

  7.   

    必然是构造方法里面的错误,先判断你的datasource是不是空,如果为空,进行如下赋值
                  OracleDataSource ods = new OracleDataSource();
                ods.setDriverType ( "thin" ); 
                ods.setNetworkProtocol("tcp"); 
                ods.setServerName ( "127.0.0.1" );
                ods.setDatabaseName("TEST"); 
                ods.setPortNumber(1521); 
                ods.setUser("user"); 
                ods.setPassword("123456"); 
                connect=ods.getConnection();