我收到一个我不完全理解的错误,为什么会出现? 我有一个表单,我在其中输入相关JTextBox的详细信息,这些文本框中的数据应该发送到我在本地设置的数据库。
完整的错误消息
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException. You have an error in your
SQL syntax; check the manual that corresponds to your MySQL server version for the
right syntax to use near ')VALUES'asd','asd',",",",",",",'Home','Female','White
British' at line 1
代码
conn = (Connection) SQLConnect.ConnectDb();
//inserting all values to database
String sql = "INSERT INTO w1283057.criminalrecords "
+ "(FName, MName, Sname, DOB, Address, HPhone, BPhone, MPhone "
+ "ResidentStatus, Sex, Race, IncidentLocation, Zone, PremiseType "
+ "DateRecorded, TimeRecorded, Weapons, CrimeOffences) "
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
try{
//Declaring all variable that wiil be collected from JTextField
pst = conn.prepareStatement(sql);
//coverting JText to String
String fname = FName.getText();
String mname = MName.getText();
String surname = Surname.getText();
String dob = DOB.getText();
String fullAddress = FullAddress.getText();
String hPhone = HPhone.getText();
String bPhone = BPhone.getText();
String mPhone = MPhone.getText();
String incidentLocation = IncidentLocation.getText();
String incidentZone = IncidentZone.getText();
String incidentPrType = IncidentPrType.getText();
String incidentDate = IncidentDate.getText();
String incidentTime = IncidentTime.getText();
String incidentWeapons = IncidentWeapons.getText();
String crimeOffences = CrimeOffences.getText();
String radioText = "";
//collecting input data and assign them to variables
pst.setString(1, fname);
pst.setString(2, mname);
pst.setString(3, surname);
pst.setString(4, dob);
pst.setString(5, fullAddress);
pst.setString(6, hPhone);
pst.setString(7, bPhone);
pst.setString(8, mPhone);
//radio buttons Resident Status
if(RHome.isSelected())
{
radioText = RHome.getText();
pst.setString(9, radioText);
}
else if(RForeign.isSelected())
{
radioText = RForeign.getText();
pst.setString(9, radioText);
}
//radio buttons Sex
if(Male.isSelected())
{
radioText = Male.getText();
pst.setString(10, radioText);
}
else if(Female.isSelected())
{
radioText = Female.getText();
pst.setString(10, radioText);
}
//radio button Race
if(WhiteBritish.isSelected())
{
radioText = WhiteBritish.getText();
pst.setString(11, radioText);
}
else if(WhiteOther.isSelected())
{
radioText = WhiteOther.getText();
pst.setString(11, radioText);
}
else if(Black.isSelected())
{
radioText = Black.getText();
pst.setString(11, radioText);
}
else if(Asian.isSelected())
{
radioText = Asian.getText();
pst.setString(11, radioText);
}
else if(Indian.isSelected())
{
radioText = Indian.getText();
pst.setString(11, radioText);
}
/////////////////////////////////////
pst.setString(12, incidentLocation);
pst.setString(13, incidentZone);
pst.setString(14, incidentPrType);
pst.setString(15, incidentDate);
pst.setString(16, incidentTime);
pst.setString(17, incidentWeapons);
pst.setString(18, crimeOffences);
pst.executeUpdate();
System.out.println("records added sucessfully");
}
catch (SQLException a)
{
JOptionPane.showMessageDialog(null, a);
}
答案 0 :(得分:5)
您的值列表末尾有一个逗号,删除它,或用适当的值填充它。
+ "DateRecorded, TimeRecorded, Weapons, CrimeOffences,) " <---
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,)"; <----
答案 1 :(得分:4)
您的代码
String sql = "INSERT INTO w1283057.criminalrecords "
+ "(FName, MName, Sname, DOB, Address, HPhone, BPhone, MPhone "
+ "ResidentStatus, Sex, Race, IncidentLocation, Zone, PremiseType "
+ "DateRecorded, TimeRecorded, Weapons, CrimeOffences) "
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
试试这个......字段(MPhone,PremiseType)之后缺少逗号
String sql = "INSERT INTO w1283057.criminalrecords "
+ "(FName, MName, Sname, DOB, Address, HPhone, BPhone, MPhone, "
+ "ResidentStatus, Sex, Race, IncidentLocation, Zone, PremiseType, "
+ "DateRecorded, TimeRecorded, Weapons, CrimeOffences) "
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
问候。