我有连接到MySQL并检索数据的Java代码。我有以下代码,并且始终给出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();
}
}
最佳答案
您正在尝试将字段名称设置为参数-您不能这样做。您只能将值指定为参数。因此,基本上您的前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
关于java - SQL语法错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7273636/