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