【问题标题】:How to insert data in my table? [closed]如何在我的表中插入数据? [关闭]
【发布时间】:2011-11-20 23:32:06
【问题描述】:

我创建了一个 login.jsp 页面...在此页面提交按钮底部添加新用户链接。如果我单击该链接,它会打开新的用户注册表单。我已经在 oracle 中创建了表,如果我提供要存储在数据库中的数据,但它指示空指针异常.....来自 newuser_db.java 的第 92 行我的数据库连接编码在 newuser_db.java 中。请帮我...... 错误:第 92 行是 stmt1 = con.prepareStatement("insert into userdetails values(ka1.nextval,?,?,?,?,?,?,?,23,'as','14-nov-87')");

设计:

完整代码:

package com.sla;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.PreparedStatement;


import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * Servlet implementation class newuser_db
 */
public class newuser_db extends HttpServlet {
    private static final long serialVersionUID = 1L;
    PreparedStatement stmt=null;
    Connection con =null;
    ResultSet rs=null;


    /**
     * @see HttpServlet#HttpServlet()
     */
    public newuser_db() {
        super();
        // TODO Auto-generated constructor stub
    }
    @Override
    public void init() throws ServletException {
        // TODO Auto-generated method stub
        super.init();
        try
        {
            Class.forName("sun.Jdbc.Odbc.JdbcOdbcDriver");
        }
        catch (ClassNotFoundException ex)
        {
            ex.printStackTrace();
        }


        try
        {
            con =DriverManager.getConnection("Jdbc:odbc:servletdb","system","balaji");

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



        // TODO Auto-generated method stub
    }

    @Override
    public void service(ServletRequest arg0, ServletResponse arg1)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        super.service(arg0, arg1);
        PrintWriter out=arg1.getWriter();
        String s1=arg0.getParameter("USERID");
        String s2=arg0.getParameter("FIRSTNAME");
        String s3=arg0.getParameter("LASTNAME");
        String s4=arg0.getParameter("EMAILID");
        String s5=arg0.getParameter("ORGNAME");
        String s6=arg0.getParameter("MOBILENO");
        String s7=arg0.getParameter("PHONENO");
        String s8=arg0.getParameter("PASSWORD");

        out.println("inserted");
        out.println(s1);




        out.println("inserted1");
        //String sql="insert into userdetails values(ka.nextval,"+s1+","+s2+","+s3+","+s4+","+s5+","+s6+","+s7+",56,'de',01-jan-98)";
        PreparedStatement stmt1;
        try {
            stmt1 = con.prepareStatement("insert into userdetails values(ka1.nextval,?,?,?,?,?,?,?,23,'as','14-nov-87')");
        stmt1.setString(1,s1);
            stmt1.setString(2,s2);
            stmt1.setString(3,s3);
            stmt1.setString(4,s4);
            stmt1.setString(5,s5);
            stmt1.setString(6,s6);
            stmt1.setString(7,s7);
            stmt1.setString(8,s8);


            //stmt1.executeUpdate();
            out.println("inserted2");
            stmt1.executeUpdate();
            out.println("inserted3");
        } catch (SQLException e1) {
            // TODO Auto-generated catch block
        out.println(e1);

        }


    }
    @Override
    public void destroy() {
        // TODO Auto-generated method stub
        super.destroy();
        try
        {
            if(stmt!=null)
                stmt.close();
            stmt=null;

        }
        catch (SQLException ex)
        {
            ex.printStackTrace();
        }
        try
        {
            if(con!=null)
                con.close();
            con=null;

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



    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

}

请任何人帮助我...我很困惑.......

【问题讨论】:

  • 您在代码的第 92 行抱怨 NullPointerException。可能想向我们展示代码的第 92 行。当然,您可以在 use_db 类的第 92 行查看 null 是什么变量。
  • 我的数据库连接代码正确吗?请检查.....

标签: java oracle jsp servlets


【解决方案1】:

这看起来你已经学习了RoseIndia.net 上的一个可怕的教程。我建议阅读一个更好的 JDBC 教程网站。

您的代码有很多地方可能出错。我建议从团队中知识渊博的人那里获得帮助;一个互联网论坛只能帮助你这么多。

  • PreparedStatementResultSetConnection 被声明为 servlet 的类成员。这是一种糟糕的编码实践,因为这些成员现在将在多个请求之间共享,并且任何请求都能够更改这些成员的状态,从而导致其他请求的行为变得模糊和混乱。
  • sun.Jdbc.Odbc.JdbcOdbcDriver 用于连接到 Oracle 10g Express 版实例。对于 JDBC 驱动程序来说,这是一个糟糕的选择,因为它是一种类型 1 驱动程序,并且打算在您没有用于数据库的实际 JDBC 驱动程序时使用。请改用 Oracle 10g/11g JDBC 驱动程序。
  • 您在init 中捕获了诸如ClassNotFoundExceptionSQLException 之类的异常,并在不中止执行的情况下打印它们的堆栈跟踪。在这种情况下,容器将忽略抛出的任何异常,因为您打印了它们的堆栈跟踪。因此 servlet 将被初始化,但考虑到异常的性质,它完全无法处理请求。
  • 您正在覆盖service,而不是为doGetdoPost 提供方法主体。这又是一个糟糕的做法。不要覆盖service,除非你有充分的理由(而且我很确定你没有)。

说了这么多,您最有可能在service 方法中得到NullPointerException 的原因可能是因为在init 方法的这一行中引发了异常:

con =DriverManager.getConnection("Jdbc:odbc:servletdb","system","balaji");

由于您正在捕获此行引发的任何异常,并且没有对其进行任何处理,您会发现con 变量在此类事件中将为空。稍后,当 servlet 处理请求并尝试创建 PreparedStatement 实例时,它将失败,因为 Connection 实例为空。

【讨论】:

  • 谢谢我不工作了....其实我试了这么多天,我发到这里之后,没人帮我...反正我会试试.....
  • 好吧,如果你在这里发布有意义的问题,人们愿意回答。通过您为构建问题和调试问题所付出的努力,您可能会通过类似的努力获得答案。
  • 1. response.setContentType("text/html"); 2.String url = "jdbc:mysql://localhost:3306/";请解释这两行为什么他们使用.....
  • 我不明白为什么要继续阅读那篇垃圾文章,尽管被告知它写得不好。请阅读 Oracle/Sun 的 JDBC tutorial
【解决方案2】:

如果您在第 92 行收到 NullPointerException,则似乎 con 为空。您的代码是否调用了 init?我注意到它不是从构造函数中调用的。

【讨论】:

  • 请给我看那行....我是 jsp&servlet 应用程序的新手.........
  • 在您的 newuser_db 类中,您有一个 init 方法来打开连接并由此实例化 con。你叫了吗?如果不是 con 则为 null
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-21
  • 1970-01-01
  • 2016-04-06
  • 1970-01-01
相关资源
最近更新 更多