SQL语法错误

Jay*_*lya 0 java mysql sql

我有java代码连接MySQL和反向数据.我有以下代码,它总是给出SQLSyntaxErrorException并说第1行有语法错误.我无法理解为什么.请帮我.我可以肯定这些名字是正确的.


private void saveDetails(int slct) throws SQLException {

        if(slct == ADD_NEW_RECORD) {
            String query = "INSERT INTO emp(?,?,?,?,?,?,?,?,?,?,?,?,?,?) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
            PreparedStatement st = Main.db.con.prepareStatement(query);
            st.setString(1, "epfno");
            st.setString(2, "fname");
            st.setString(3, "lname");
            st.setString(4, "sex");
            st.setString(5, "nid");
            st.setString(6, "address");
            st.setString(7, "birthday");
            st.setString(8, "position");
            st.setString(9, "tpno");
            st.setString(10, "fathername");
            st.setString(11, "mothername");
            st.setString(12, "m_status");
            st.setString(13, "comments");
            st.setString(14, "photo_id");
            st.setInt(15, emp.epfno);
            st.setString(16, emp.fname);
            st.setString(17, emp.lname);
            st.setInt(18, emp.sex);
            st.setString(19, String.copyValueOf(emp.nid));
            st.setString(20, emp.address);
            st.setDate(21, emp.birthday);
            st.setString(22, emp.position);
            st.setString(23, emp.tpno);
            st.setString(24, emp.fathername);
            st.setString(25, emp.mothername);
            st.setBoolean(26, emp.m_status);
            st.setString(27, emp.comments);
            st.setString(28, emp.photo_id);

            st.execute();
        }
    }
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

您正在尝试将字段名称设置为参数 - 您不能这样做.您只能将指定为参数.所以基本上你的前14个setString调用应该消失了,你应该把这些字段名放在SQL中:

String query = "INSERT INTO emp(epfno, fname, lname, sex, nid, address, "
             + "birthday, position, tpno, fathername, mothername, m_status, "
             + "comments, photo_id) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

st.setInt(1, emp.epfno);
st.setString(2, emp.fname);
st.setString(3, emp.lname);
// etc
Run Code Online (Sandbox Code Playgroud)