首页 文章

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

提问于
浏览
2

我有一个名为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 回答

  • 1

    您有一个SQL语法错误:

    select * from servicos where in like ?
    

    你的要求应该是:

    select * from servicos where <columnName> like ?
    

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

    select * from servicos where `in` like ?
    
  • 2

    运算符是 like ,而不是 in like . 如果您的列实际上名为"in",则应该将其转义:

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

相关问题