我有一个名为Servicos.java的JInternalFrame,代码如下:

MySqlDAO sqlDAO = new MySqlDAO();
Connection conexao = null;
PreparedStatement pst = null;
ResultSet rs = null;

public Servicos() {
    initComponents();
    conexao = sqlDAO.conector();


}

private void procurar(){
    String sql = "select * from servicos where in like ?";
    try{
        pst = conexao.prepareStatement(sql);
        pst.setString(1, in.getText()+"%");
        rs=pst.executeQuery();
        table.setModel(DbUtils.resultSetToTableModel(rs));
    }catch(Exception e){
        e.printStackTrace();
    }
}
private void inKeyPressed(java.awt.event.KeyEvent evt) {
    // TODO add your handling code here:
    procurar();
}

当我运行应用程序时,出现以下错误:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;请查看与mysql服务器版本相对应的手册,在第1行的“in like”%”附近使用正确的语法

最佳答案

SQL语法错误出现在:

select * from servicos where in like ?

您的请求应该是:
select * from servicos where <columnName> like ?

不能将in直接用作列名,因为它是保留关键字。如果要使用它,必须用反引号将其转义:
select * from servicos where `in` like ?

10-08 06:48