Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我能';我不知道是什么';我的sql语法有什么问题_Java_Mysql_Database_Syntax_Syntax Error - Fatal编程技术网

Java 我能';我不知道是什么';我的sql语法有什么问题

Java 我能';我不知道是什么';我的sql语法有什么问题,java,mysql,database,syntax,syntax-error,Java,Mysql,Database,Syntax,Syntax Error,救命啊!我不知道为什么我总是得到错误java.sql.SQLSyntaxException:您的sql语法中有一个错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行使用接近(by)值('19'、'Bob'、'Marquez'、'Secretary'…)的正确语法 下面是我的sql查询及其代码 String value = lbl_emp.getText(); try{ String sql= "insert into thepayroll

救命啊!我不知道为什么我总是得到错误java.sql.SQLSyntaxException:您的sql语法中有一个错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行使用接近(by)值('19'、'Bob'、'Marquez'、'Secretary'…)的正确语法 下面是我的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
是一种新的编码方式。换句话说,它在SQL解析器中很重要,因此将其用作列标识符会混淆MySQL的解析器

要将保留关键字用作列标识符,必须在后面的记号中对其进行分隔:

INSERT INTO thepayroll (..., `by`) VALUES (...)
您需要使用所有保留关键字执行此操作。请参阅我上面给出的链接。如果文档页面中的关键字旁边有“(R)”,则该关键字是保留关键字,必须进行分隔


另一种方法是将列命名为其他名称,这样它们就不会与任何保留关键字冲突。

非常感谢!我试着把它改成由创建的
,结果成功了!