我有一个 MySQL 表 EMPLOYEES
,其形式如下:
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。在之前的尝试中,我给了它一个电话号码并收到了相同的消息。
有谁知道为什么会这样吗?
如果缺少任何重要信息,请告诉我,我可以添加它。
谢谢, 埃里普
最佳答案
当您执行插入
时,您应该始终列出列。
这有效吗?
INSERT INTO EMPLOYEES(fname, lname, phoneNumber, hours, employee_Num)
VALUES ('" +fName + "','" + lName + "','" + phoneNumber + "'," + hours + ",'" + employeeNum + "')
关于java - JDBC——没有足够的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29738040/