Что не так с моим оператором SQL?Невозможно вставить NULL - PullRequest
0 голосов
/ 17 апреля 2011

Что я делаю не так?Я продолжаю получать странные ошибки от SQL?

   //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")

1 Ответ

4 голосов
/ 17 апреля 2011

Вы пытаетесь вставить значение NULL в столбец street_Name с ограничением NOT NULL.

Возможно, здесь что-то не так:

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

Дважды проверьте имя параметра запроса по отношению к фактическому запросу. Возможно, имеется несоответствие в именах, или запрашивающая сторона забывает отправить его.

Кстати, похоже, у вас есть опечатка здесь:

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

Я ожидаю, что ваш параметр запроса называется "работодатель" без дополнительного o

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...