JB2006+oracle10g,在原来的电脑上运行正常。
现在换到另一台电脑上开发。出现问题。测试以下程序,运行正常。(是否说明数据库安装是没问题了?)
package test;
import java.sql.*;
public class test {
    public static void main(String[] args) throws Exception {        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection conn = DriverManager.getConnection(
                "jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "tiger");
   
                PreparedStatement pst=null;
                String sql="insert into post(name) "+
                           "values (?)";
        
                try {
                    pst = conn.prepareStatement(sql);
                    pst.setString(1,"345");
                    pst.executeUpdate();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }finally {
        
                    try {
                        pst.close();
                        pst = null;
                        conn.close();
                        conn = null;
                    } catch (SQLException e) {
        
                        e.printStackTrace();
                    }        
        }    }}问题描述--------------------------------------------------
没有找到类1
2008-9-13 11:17:14 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet postaddservlet threw exception
java.lang.NullPointerException
at dao.base.PostAddDao.insertpost(PostAddDao.java:28)
at servlet.base.PostAddServlet.doGet(PostAddServlet.java:29)
at servlet.base.PostAddServlet.doPost(PostAddServlet.java:41)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
--------------------------------------------------------------//postAddServlet
package servlet.base;import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import bean.base.*;
import dao.base.*;
public class PostAddServlet extends HttpServlet {
    private static final String CONTENT_TYPE = "text/html; charset=GBK";    //Initialize global variables
    public void init() throws ServletException {
    }    //Process the HTTP Get request
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws
            ServletException, IOException {
        response.setContentType(CONTENT_TYPE);
       request.setCharacterEncoding("gbk");
       String name=request.getParameter("name");
       System.out.println(name);
       PostBean bean=new PostBean();
       bean.setName(name);       PostAddDao dao=new PostAddDao();
       if(dao.insertpost(bean)>0){
           request.setAttribute("postInsertSuccess","插入成功");
           response.sendRedirect("/WebModule1/base/postsearch.jsp");
       }    }    //Process the HTTP Post request
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws
            ServletException, IOException {
        doGet(request, response);
    }    //Clean up resources
    public void destroy() {
    }
}

解决方案 »

  1.   

    请检查传入PostAddDao 类中的数据是否都正确赋值!
      

  2.   

    经测试,数据是正确赋值了的。//PostAddDao 
    package dao.base;
    import bean.base.PostBean;
    import dbconn.*;
    import java.sql.*;
    public class PostAddDao {
        public int insertpost(PostBean bean)
        {
            System.out.println("insertpost:"+bean.getName());
            int result=0;
            Connection conn=DbConn.getConn();
            PreparedStatement pst=null;
            String sql="insert into post(name) "+
                       "values (?)";
            try {
                System.out.println("ok-1");    //!!!!!!!!!!此语句能执行(见下面错误信息)
                pst = conn.prepareStatement(sql);   //!!!!怀疑该语句处出了问题?
                System.out.println("ok-2"); //!!!!!!!!!!此语句已不能执行到(见下面错误信息)
                pst.setString(1,bean.getName());
                result=pst.executeUpdate();        } catch (SQLException ex) {
                ex.printStackTrace();
            }finally {            try {
                    pst.close();
                    pst = null;
                    conn.close();
                    conn = null;
                } catch (SQLException e) {                e.printStackTrace();
                }        }      return result;
        }
    }insertpost:few
    没有找到类ok-1
    2008-9-13 12:33:59 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet postaddservlet threw exception
    java.lang.NullPointerException
    at dao.base.PostAddDao.insertpost(PostAddDao.java:27)
    at servlet.base.PostAddServlet.doGet(PostAddServlet.java:29)
    at servlet.base.PostAddServlet.doPost(PostAddServlet.java:41)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)
      

  3.   

    我估计你的DbConn.getConn(); 返回的可能是Null
    因为你开始说了在以前的的机子上是好的。所以我想,你是不是忘记修改DbConn中的链接Oracle的字符串了啊。
    你这里jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "tiger"。说的是本地机应该有这个数据库。
    如果你本机没有Oracle,而是使用以前那台机子的Oracle的话,是不是你的链接应该改改呢。
    比如:jdbc:oracle:thin:@127.0.0.1:1521:orcl 改成 jdbc:oracle:thin:@以前机子的IP:1521:orcl
      

  4.   


    测试以下程序,运行正常。(是否说明数据库安装是没问题了?) 
    package test; 
    import java.sql.*; 
    public class test { 
        public static void main(String[] args) throws Exception {         Class.forName("oracle.jdbc.driver.OracleDriver"); 
            Connection conn = DriverManager.getConnection( 
                    "jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "tiger"); 
      
                    PreparedStatement pst=null; 
                    String sql="insert into post(name) "+ 
                              "values (?)"; 
            
                    try { 
                        pst = conn.prepareStatement(sql); 
                        pst.setString(1,"345"); 
                        pst.executeUpdate(); 
                    } catch (SQLException ex) { 
                        ex.printStackTrace(); 
                    }finally { 
            
                        try { 
                            pst.close(); 
                            pst = null; 
                            conn.close(); 
                            conn = null; 
                        } catch (SQLException e) { 
            
                            e.printStackTrace(); 
                        }        
            }     } } 
      

  5.   

    你在你发布的项目的lib下加入你的oracle驱动试试看