如果我的知识正确,错误说我没有给Cust_LastName
一个值,但我正在尝试使用下面的代码。
整个集合用于我的数据库中的单个新行
// Accessing driver from JAR file
try {
Class.forName("com.mysql.jdbc.Driver");
// Creating a variable for the connection
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/schbank", "root", "s201431s");
// SQL statements to insert the information into the table
PreparedStatement statementFName = con.prepareStatement("insert into tblcustomer(Cust_FirstName)" + "values(?)");
PreparedStatement statementLName = con.prepareStatement("insert into tblcustomer(Cust_LastName)" + "values(?)");
PreparedStatement statementAddress = con.prepareStatement("insert into tblcustomer(Cust_Address)" + "values(?)");
PreparedStatement statementPhone = con.prepareStatement("insert into tblcustomer(Cust_PhoneNumber)" + "values(?)");
PreparedStatement statementSSN = con.prepareStatement("insert into tblcustomer(Cust_SSN)" + "values(?)");
PreparedStatement statementEmail = con.prepareStatement("insert into tblcustomer(Cust_Email)" + "values(?)");
PreparedStatement statementUsername = con.prepareStatement("insert into tblcustomer(Cust_Username)" + "values(?)");
PreparedStatement statementPassword = con.prepareStatement("insert into tblcustomer(Cust_Password)" + "values(?)");
// Sets the values
statementFName.setString(1, strFname);
statementLName.setString(1, strLname);
statementAddress.setString(1, strAddress);
statementPhone.setString(1, strPhone);
statementSSN.setString(1, strSSN);
statementEmail.setString(1, strEmail);
statementUsername.setString(1, strUserName);
statementPassword.setString(1, strPassword);
// Other code removed for brevity
} catch (SQLException ex) {
ex.printStackTrace(System.err);
}
答案 0 :(得分:0)
请改为尝试:
PreparedStatement stmt = con.prepareStatement(
"INSERT INTO tblcustomer (Cust_FirstName, Cust_LastName, Cust_Address, Cust_PhoneNumber, Cust_SSN, Cust_Email, Cust_Username, Cust_Password)"
+ " VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
stmt.setString(1, strFname);
stmt.setString(2, strLname);
stmt.setString(3, strAddress);
stmt.setString(4, strPhone);
stmt.setString(5, strSSN);
stmt.setString(6, strEmail);
stmt.setString(7, strUserName);
stmt.setString(8, strPassword);
现在你正在这样做,你试图在表格中进行8次单独插入,你想要一个包含8个值的插入。
答案 1 :(得分:0)
您的每个陈述都是单独的陈述。每个语句在执行时都会插入一个单独的行。该行只包含您在语句中填充的一列,而其他所有列都将按其默认值填充。
在第一个声明中,您只给Cust_Firstname
一个值。因此,您没有给Cust_LastName
赋值,并且您的数据库告诉您由于这个原因它无法执行该语句。
您可能希望一行包含所有列值,而不是八个行,每行都有一个列集。为此,您必须准备一个语句并填写其中的所有值。
答案 2 :(得分:0)
当您编写单独的insert语句时,这意味着它尝试为数据库中的每个语句输入单独的行。由于第一个insert语句执行时出现此错误,它期望Cust_LastName
值,因为此字段没有默认值。
您可以对所有列使用单个insert语句,您可以使用参数插入查询。