Java 为什么我总是得到这个空指针未知源错误?

Java 为什么我总是得到这个空指针未知源错误?,java,jdbc,sqlplus,Java,Jdbc,Sqlplus,我正在努力 org.apache.jasper.JasperException: An exception occurred processing JSP page /customerDelete.jsp at line 39 java.lang.NullPointerException sun.jdbc.odbc.JdbcOdbcPreparedStatement.clearParameter(Unknown Source) SQL表 //get parameters from

我正在努力

org.apache.jasper.JasperException: An exception occurred processing JSP page /customerDelete.jsp at line 39

java.lang.NullPointerException
sun.jdbc.odbc.JdbcOdbcPreparedStatement.clearParameter(Unknown Source)
SQL表

      //get parameters from the request 
      String firstName=request.getParameter("first_Name");  
      String lastName=request.getParameter("last_Name");    


 preparedStatement = conn.prepareStatement("DELETE FROM customer "
                                            + " WHERE customer.first_Name= " +firstName
                    + " AND customer.last_Name= " +lastName);

 preparedStatement.setString(1, firstName); // line 39
 preparedStatement.setString(2, lastName);

 preparedStatement.executeUpdate();

firstName很可能为null。

firstName很可能为null。

在prepareStatement中使用如下语法

          CREATE TABLE customer
    (cust_ID        NUMBER          NOT NULL,
    sale_ID             NUMBER          NOT NULL,
    first_Name      VARCHAR2(30)        NOT NULL,
    mI          VARCHAR2(2)         ,
    last_Name       VARCHAR2(50)        NOT NULL,
    street_Name     VARCHAR2(50)        ,
    city            VARCHAR2(30)        NOT NULL,
    state           VARCHAR2(50)        NOT NULL,
    zip_Code        VARCHAR2(5)     NOT NULL,
    DOB         DATE            ,
    agent_ID        NUMBER              ,
    home_Phone      VARCHAR2(12)        UNIQUE,         
    cell_Phone      VARCHAR2(12)        UNIQUE,
    profession      VARCHAR2(30)            ,
    employer        VARCHAR2(30)            ,
    referrer        VARCHAR2(30)            
    );      
定义查询的参数。
之后,可以将参数设置为prepareStatement。出现NPE是因为您试图设置sql语句缺少的参数。

在prepareStatement中,请使用如下语法

          CREATE TABLE customer
    (cust_ID        NUMBER          NOT NULL,
    sale_ID             NUMBER          NOT NULL,
    first_Name      VARCHAR2(30)        NOT NULL,
    mI          VARCHAR2(2)         ,
    last_Name       VARCHAR2(50)        NOT NULL,
    street_Name     VARCHAR2(50)        ,
    city            VARCHAR2(30)        NOT NULL,
    state           VARCHAR2(50)        NOT NULL,
    zip_Code        VARCHAR2(5)     NOT NULL,
    DOB         DATE            ,
    agent_ID        NUMBER              ,
    home_Phone      VARCHAR2(12)        UNIQUE,         
    cell_Phone      VARCHAR2(12)        UNIQUE,
    profession      VARCHAR2(30)            ,
    employer        VARCHAR2(30)            ,
    referrer        VARCHAR2(30)            
    );      
定义查询的参数。
之后,可以将参数设置为prepareStatement。出现NPE是因为您试图设置sql语句缺少的参数。

这是完整的DELETE语句吗?您指的是姓氏,但似乎您也打算使用姓氏。这是完整的DELETE语句吗?您指的是姓氏,但似乎您也打算使用姓氏。+1@Vik:Yup,OP您准备的语句是硬编码的SQL语句。您需要在其中一个或另一个之间进行选择。+1@Vik:Yup,OP您准备的语句是硬编码的SQL语句。你需要在两者之间做出选择。