2011-04-18 88 views
0
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) 

我想为什么我一直得到这个空指针未知的源错误?

 //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(); 

SQL表

  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)    
    );  
+0

这是一个完整的DELETE语句吗?你指的是last_Name,但它似乎也打算使用first_Name。 – Adam 2011-04-18 01:17:11

回答

5

在prepareStatement使用的语法像这样

delete from customer where customer.last_Name= ? and customer.first_Name= ? 

定义查询的参数。 之后,您可以将参数设置为prepareStatement。 NPE发生的原因是您尝试设置sql语句的缺少参数。

+1

+1 @Vik:Yup,你准备好的语句是硬编码的SQL语句。你需要在一个或另一个之间进行选择。 – bguiz 2011-04-18 04:24:26

+0

谢谢你们。那样做了! – Mike 2011-04-19 19:22:18