2015-04-20 80 views
0

我有一個MySQL表,EMPLOYEES,它具有以下形式:JDBC - 沒有足夠的價值

CREATE TABLE EMPLOYEES 
(
     FNAME   VARCHAR(15)    NOT NULL, 
     LNAME   VARCHAR(15)    NOT NULL, 
     PHONE   CHAR(10), 
     HOURS   INT      NOT NULL, 
     EMPLOYEE_NUM CHAR(5)     NOT NULL, 
     PRIMARY KEY(EMPLOYEE_NUM) 
); 

我試圖寫一個程序,讓我操作表。我有以下方法試圖做到這一點。

void addEmployee(Connection conn) throws SQLException, IOException { 

    Statement stmt = conn.createStatement(); 

    String fName = readEntry("First name: "); 
    String lName = readEntry("Last name: "); 
    String phoneNumber = readEntry("Phone number: "); 
    String hours = readEntry("Number of hours worked: "); 
    String employeeNum = readEntry("Employee Number: "); 
    String query = "INSERT INTO EMPLOYEES VALUES ('" + 
      fName + "','" + lName + "','" + phoneNumber + "'," + hours + ",'" + employeeNum + "')"; 
    try { 
     int nrows = stmt.executeUpdate(query); 
    } catch (SQLException e) { 
     System.out.println("Error Adding Catalog Entry"); 
     while (e != null) { 
      System.out.println("Message  : " + e.getMessage()); 
      e = e.getNextException(); 
     } 
     return; 
     } 
    stmt.close(); 
    System.out.println("Added Catalog Entry"); 
} 

當我嘗試執行此調用:

First name: fname 
Last name: lname 
Phone number: 
Number of hours worked: 34 
Employee Number: 01923 
Error Adding Catalog Entry 
Message  : ORA-00947: not enough values 

在這種嘗試中,我離開 「phoneNumber的」 空白NULL。在之前的嘗試中,我給了它一個電話號碼,並得到了相同的信息。

有誰知道爲什麼會發生這種情況?

如果缺少任何重要信息,請告訴我,我可以添加它。

感謝, erip

+0

使用'PreparedStatement',你也可以考慮提供列'的順序插入僱員(FNAME,LNAME,電話,小時,EMPLOYEE_NUM)VALUES(?,?,?,?,?)' 。請參閱[使用準備好的語句](http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html)以獲取更多詳細信息 – MadProgrammer

+0

@MadProgrammer此工作。非常感謝! – erip

回答

0

當你做一個insert,你應該總是名單列。

這是行不通的?

INSERT INTO EMPLOYEES(fname, lname, phoneNumber, hours, employee_Num) 
     VALUES ('" +fName + "','" + lName + "','" + phoneNumber + "'," + hours + ",'" + employeeNum + "') 
+0

*「這是否工作?」*似乎使它成爲一個評論;) - 此外,應該總是使用'PreparedStatement's – MadProgrammer