我无法找出我的 sql 语法有什么问题
I can't find out what's wrong with my sql syntax
Mysql Syntax Error
求助!我无法找出为什么我一直收到错误 java.sql.SQLSyntaxException:您的 SQL 语法有错误;查看与您的 MySQL 服务器版本对应的手册,了解在 'by)values ('19','Bob','Marquez','Secretary'... 附近使用的正确语法...) 在第 1 行
这是我的 sql 查询代码。
String value = lbl_emp.getText();
try{
String sql= "insert into thepayroll
(emp_id, first_name, last_name, job_title, basic_salary,
rate, overtime, overtime_hrs, "+
"a_vale, bonus, a_other, a_reason, total_allowance, sss,
pagibig, philhealth, d_vale, absence, d_other, " +
"d_reason, total_deduction, total_salary, by)
values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,'"+value+"')";
pst = conn.prepareStatement(sql);
pst.setString(1,txt_empid.getText());
pst.setString(2,txt_firstname.getText());
pst.setString(3,txt_lastname.getText());
pst.setString(4,txt_job.getText());
pst.setString(5,txt_salary.getText());
pst.setString(6,txt_drate.getText());
pst.setString(7,lbl_overtime.getText());
pst.setString(8,txt_overtime.getText());
pst.setString(9,lbl_avale.getText());
pst.setString(10,txt_bonus.getText());
pst.setString(11,txt_aother.getText());
pst.setString(12,txt_areason.getText());
pst.setString(13,lbl_atotal.getText());
pst.setString(14,txt_sss.getText());
pst.setString(15,txt_pagibig.getText());
pst.setString(16,txt_philhealth.getText());
pst.setString(17,txt_dvale.getText());
pst.setString(18,lbl_absence.getText());
pst.setString(19,lbl_dother.getText());
pst.setString(20,txt_dreason.getText());
pst.setString(21,lbl_dtotal.getText());
pst.setString(22,lbl_stotal.getText());
pst.execute();
JOptionPane.showMessageDialog(null,"Data is saved successfully");
} catch (Exception e){
JOptionPane.showMessageDialog(null,e);
} finally {
try{
rs.close();
pst.close();
}catch(Exception e){
JOptionPane.showMessageDialog(null,e);
}
}
}
BY
是一个 reserved keyword in MySQL。换句话说,它在 SQL 解析器中很重要,因此将它用作列标识符会混淆 MySQL 的解析器。
要将保留关键字用作列标识符,您必须用反引号将其分隔:
INSERT INTO thepayroll (..., `by`) VALUES (...)
您需要对所有保留关键字执行此操作。请参阅我上面给出的link。如果该文档页面中的关键字旁边有“(R)”,则它是保留关键字,必须用分隔符分隔。
另一种方法是将您的列命名为其他名称,这样它们就不会与任何保留关键字冲突。
Mysql Syntax Error
求助!我无法找出为什么我一直收到错误 java.sql.SQLSyntaxException:您的 SQL 语法有错误;查看与您的 MySQL 服务器版本对应的手册,了解在 'by)values ('19','Bob','Marquez','Secretary'... 附近使用的正确语法...) 在第 1 行 这是我的 sql 查询代码。
String value = lbl_emp.getText();
try{
String sql= "insert into thepayroll
(emp_id, first_name, last_name, job_title, basic_salary,
rate, overtime, overtime_hrs, "+
"a_vale, bonus, a_other, a_reason, total_allowance, sss,
pagibig, philhealth, d_vale, absence, d_other, " +
"d_reason, total_deduction, total_salary, by)
values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,'"+value+"')";
pst = conn.prepareStatement(sql);
pst.setString(1,txt_empid.getText());
pst.setString(2,txt_firstname.getText());
pst.setString(3,txt_lastname.getText());
pst.setString(4,txt_job.getText());
pst.setString(5,txt_salary.getText());
pst.setString(6,txt_drate.getText());
pst.setString(7,lbl_overtime.getText());
pst.setString(8,txt_overtime.getText());
pst.setString(9,lbl_avale.getText());
pst.setString(10,txt_bonus.getText());
pst.setString(11,txt_aother.getText());
pst.setString(12,txt_areason.getText());
pst.setString(13,lbl_atotal.getText());
pst.setString(14,txt_sss.getText());
pst.setString(15,txt_pagibig.getText());
pst.setString(16,txt_philhealth.getText());
pst.setString(17,txt_dvale.getText());
pst.setString(18,lbl_absence.getText());
pst.setString(19,lbl_dother.getText());
pst.setString(20,txt_dreason.getText());
pst.setString(21,lbl_dtotal.getText());
pst.setString(22,lbl_stotal.getText());
pst.execute();
JOptionPane.showMessageDialog(null,"Data is saved successfully");
} catch (Exception e){
JOptionPane.showMessageDialog(null,e);
} finally {
try{
rs.close();
pst.close();
}catch(Exception e){
JOptionPane.showMessageDialog(null,e);
}
}
}
BY
是一个 reserved keyword in MySQL。换句话说,它在 SQL 解析器中很重要,因此将它用作列标识符会混淆 MySQL 的解析器。
要将保留关键字用作列标识符,您必须用反引号将其分隔:
INSERT INTO thepayroll (..., `by`) VALUES (...)
您需要对所有保留关键字执行此操作。请参阅我上面给出的link。如果该文档页面中的关键字旁边有“(R)”,则它是保留关键字,必须用分隔符分隔。
另一种方法是将您的列命名为其他名称,这样它们就不会与任何保留关键字冲突。