请大家帮帮我,我写了数据库操作的代码.import java.sql.*;
import java.util.*;import javax.sql.*;
import javax.naming.*;
public class DataSources { private InitialContext ctx; private DataSource ds; private Connection conn; private Statement stmt; private HashMap map = new HashMap(); public Boolean DBConnet() {
try {
ctx = new InitialContext();
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mysql");
// ds = (DataSource) ctx.lookup("java:/ConnectDB");
conn = ds.getConnection();
// stmt = conn.createStatement();
} catch (Exception ex) {
System.err.print(ex);
return false;
}
return true;
}
 
@SuppressWarnings( { "unused", "unchecked" })
public List getResultList(String sql) {
try {
stmt = conn.createStatement();
java.sql.ResultSet rs = stmt.executeQuery(sql); List coulumn = null;
List row = new ArrayList();
while (rs.next()) {
coulumn = new ArrayList();
for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
coulumn.add(rs.getString(i));
}
row.add(coulumn);
}
rs.close();
return row; } catch (SQLException e) {
System.err.print(e);
return null;
}
}
@SuppressWarnings( { "unused", "unchecked" })
public List getOneRowResult(String sql) {
try {
stmt = conn.createStatement();
java.sql.ResultSet rs = stmt.executeQuery(sql);
List list = null;
list = new ArrayList();
while (rs.next()) {
for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
list.add(rs.getString(i));
}
}
rs.close();
return list; } catch (SQLException e) {
System.err.print(e);
return null;
}
}




public Boolean executeSQL(String sql) {
try {
stmt = conn.createStatement();
stmt.executeUpdate(sql);
} catch (SQLException e) {
System.err.print(e);
return false;
}
return true;
}
}
下面是业务操作的,继承他.
public  Boolean deleteCompany(int company_id){
          Boolean i;
         String sql="delete from book where company_id="+company_id;
         i=this.executeSQL(sql);
         ds.onClose();
         return true;
    }运行之后报错,空指针
java.lang.NullPointerException
at org.tdrms.datamanage.DataSources.executeSQL(DataSources.java:227)
at org.tdrms.bean.db.CompanyOPBean.deleteCompany(CompanyOPBean.java:16)
at org.tdrms.report.struts.action.DeletecompanyAction.execute(DeletecompanyAction.java:29)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.ecside.filter.ECSideFilter.doFilter(ECSideFilter.java:188)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Unknown Source)

解决方案 »

  1.   

    我怎么没看到你调用
    DBConnet()的建立数据库连接的代码啊!?  public Boolean deleteCompany(int company_id) {
        Boolean i;
        String sql = "delete   from   book   where   company_id=" + company_id;
        ds.DBConnet(); // 加上这一行看看
        i = this.executeSQL(sql);
        ds.onClose();
        return true;
      }
      

  2.   

    你好像没有调用DBConnet()   方法!