2011-04-17 138 views
0

我做错了什么?我不断从SQL中得到奇怪的错误?我的SQL语句有什么问题?不能插入NULL

//get parameters from the request 
String custID=request.getParameter("cust_ID"); 
String saleID=request.getParameter("sale_ID"); 
String firstName=request.getParameter("first_Name"); 
String mInitial=request.getParameter("mI"); 
String lastName=request.getParameter("last_Name"); 
String streetName=request.getParameter("street"); 
String city=request.getParameter("city"); 
String state=request.getParameter("state"); 
String zipCode=request.getParameter("zip_Code"); 
String DOB=request.getParameter("DOB"); 
String agentID=request.getParameter("agent_ID"); 
String homePhone=request.getParameter("home_Phone"); 
String cellPhone=request.getParameter("cell_Phone"); 
String profession=request.getParameter("profession"); 
String employer=request.getParameter("emoployer"); 
String referrer=request.getParameter("referrer"); 


    preparedStatement = conn.prepareStatement("INSERT INTO customer (cust_ID, sale_ID, first_Name, mI, last_Name, street_Name, city, state, zip_Code, DOB, agent_ID, home_Phone, cell_Phone, profession, employer, referrer)" 
       + " VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); 

preparedStatement.setInt(1, Integer.valueOf(custID)); 
preparedStatement.setInt(2, Integer.valueOf(saleID)); 
preparedStatement.setString(3, firstName); 
preparedStatement.setString(4, mInitial); 
preparedStatement.setString(5, lastName); 
preparedStatement.setString(6, streetName); 
preparedStatement.setString(7, city); 
preparedStatement.setString(8, state); 
preparedStatement.setString(9, zipCode); 
preparedStatement.setString(10, DOB); 
preparedStatement.setInt(11, Integer.valueOf(agentID)); 
preparedStatement.setString(12, homePhone); 
preparedStatement.setString(13, cellPhone); 
preparedStatement.setString(14, profession); 
preparedStatement.setString(15, employer); 
preparedStatement.setString(16, referrer); 

preparedStatement.executeUpdate(); 

SQL DDL

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)  NOT NULL, 
     city   VARCHAR2(30)  NOT NULL, 
     state   VARCHAR2(2)  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)    
    );  

SQL DML

INSERT INTO customer VALUES (primary_ID.nextval,17,'Kito','M','Bradford','123 DeLancy Lane','Wabash','TX','12345','01-JAN-69',1,'222-222-2222','301-555-6874','software engineer','HPL', NULL); 
    INSERT INTO customer VALUES (primary_ID.nextval,18,'Morpheus',' ','Smith','1289 Matrix Lane','Idaho', 'NE', '45678','06-JUN-72',2,'321-654-9877','258-852-9635','doctor', 'The OC', NULL); 

错误消息

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


67:  <%preparedStatement.setString(15, employer);%> 

68:  <%preparedStatement.setString(16, referrer);%> 

69: 

70:  <%preparedStatement.executeUpdate();%> 


root cause 

javax.servlet.ServletException: java.sql.SQLException: [Oracle][ODBC][Ora]ORA- 
01400:cannot insert NULL into ("CM485A07"."CUSTOMER"."STREET_NAME") 

回答

3

您tyring插入一个NULL值转换成具有NOT的STREET_NAME列NULL约束。

大概的东西是错误的位置:

String streetName=request.getParameter("street"); 

仔细检查与实际请求的请求参数的名称。也许名称不匹配或请求方忘记发送它。

BTW看起来就像你有一个错字这里:

String employer=request.getParameter("emoployer"); 

我期待你的请求参数被称为“老板”没有额外的Ø

+1

好。 。 。所以我刚刚删除了NOT NULL限制,她现在正在工作:) – Mike 2011-04-17 13:23:06

+0

旧面条不喜欢在凌晨1点正常工作。感谢您的协助! – Mike 2011-04-17 13:23:49