使用MySQL数据库语法错误填充jTable

时间:2017-10-27 21:46:56

标签: java mysql jdbc

我有一个名为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'%'附近使用正确的语法

2 个答案:

答案 0 :(得分:2)

运营商为like,而不是in like。如果您的列实际上被命名为"在"中,您应该将其转义:

String sql = "select * from servicos where `in` like ?";
// Here -----------------------------------^

答案 1 :(得分:1)

您的SQL语法错误:

select * from servicos where in like ?

您的请求应该是:

select * from servicos where <columnName> like ?

您不能直接使用in作为列名,因为它是保留关键字。如果你想使用它,你必须使用反引号来逃避它:

select * from servicos where `in` like ?