Java中查询值和目标字段的数量不同
我有一个prepardStatement,它应该执行MS Access的插入 下面是SQL语句Java中查询值和目标字段的数量不同,java,ms-access,ms-access-2007,Java,Ms Access,Ms Access 2007,我有一个prepardStatement,它应该执行MS Access的插入 下面是SQL语句 INSERT INTO DonorDetails (Title,FirstName,LastName,[IC NUMBER],[OLD IC NUMBER],Gender,DOB,COUNTRY,Race,[Address 1],[Address 2],[Address 3],[Address 4],City,State,Postcode,[TEL HSE],[TEL HP],[TEL OFF],[F
INSERT INTO DonorDetails (Title,FirstName,LastName,[IC NUMBER],[OLD IC NUMBER],Gender,DOB,COUNTRY,Race,[Address 1],[Address 2],[Address 3],[Address 4],City,State,Postcode,[TEL HSE],[TEL HP],[TEL OFF],[Fax Number],Email,Language,[Donation Amount],Frequency,Bank,MODE,[CHQ/MO/PO],[CREDIT CARD],[NAME OF CARD HOLDER],Expiry,[ISSUING BANK],[ACCOUNT NUMBER],CAMPAIGN,[SERIAL NO],[EVENT CODE],[AGENT ID],Channel,[SOURCE CODE],[SIGNUP DATE],Remarks, [Date Processed])values (?,?,?.?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
在插入过程中,我得到以下错误
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Number of query values and destination fields are not the same.
这就是我执行代码的方式,我相信字段/列的数量是41
Connection conn = Connect.ConnectDB();
System.out.println(sql);
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, salutation);
pst.setString(2, txtFirstName.getText());
pst.setString(3, txtLastName.getText());
pst.setString(4, newID);
pst.setString(5, oldID);
pst.setString(6, String.valueOf(cbGender.getSelectedItem()));
pst.setString(7, dobDate);
pst.setString(8, String.valueOf(cbNationality.getSelectedItem()));
pst.setString(9, race);
pst.setString(10, txtAddress.getText());
pst.setString(11, txtAddress2.getText());
pst.setString(12, txtAddress3.getText());
pst.setString(13, txtAddress4.getText());
pst.setString(14, txtCity.getText());
pst.setString(15, String.valueOf(cbState.getSelectedItem()));
pst.setString(16, txtPostCode.getText());
pst.setString(17, txtHomePhone.getText());
pst.setString(18, txtMobilePhone.getText());
pst.setString(19, txtOfficePhone.getText());
pst.setString(20, txtFax.getText());
pst.setString(21, txtEmail.getText());
pst.setString(22, txtLanguage.getText());
pst.setInt(23, amount);
pst.setString(24, frequency);
pst.setString(25, bankName);
pst.setString(26, mode);
pst.setString(27, prependNo + txtRefNo.getText());
pst.setString(28, cardNumber);
pst.setString(29, cardName);
pst.setString(30, cardExpiry);
pst.setString(31, issuingBank);
pst.setString(32, accountNumber);
pst.setString(33, String.valueOf(cbCampaign.getSelectedItem()));
pst.setString(34, lblSerialCode.getText()
+ txtSerialNumber.getText());
pst.setString(35, txtTeritoryCode.getText());
pst.setString(36, txtAgentID.getText());
pst.setString(37, String.valueOf(cbChannel.getSelectedItem()));
pst.setString(38, "OPTIMO");
pst.setString(39, df.format(signUpDate.getDate()));
pst.setString(40, textField.getText());
pst.setString(41, processedDate);
pst.execute();
我找不到上面的代码有什么问题。您在命令文本中的第三个和第四个问号占位符(
?
)之间有一个句点(
)而不是逗号(,
)。亲爱的上帝,您救了我,我们可以将它标记为关闭吗?