在不同的columnName中使用两个LIKE?

时间:2015-07-28 09:33:03

标签: java mysql swing

我正在尝试在我的程序中在JTable中创建搜索功能,但是当我使用这种语法时,我得到了sql语法错误。我在这个问题上已经阅读了很多问题和答案,我从来没有得到正确的语法。希望你能帮帮我。

private void fillTable(String keyword) throws SQLException{
    if (!keyword.equals("")){
        try( Connection con = DriverManager.getConnection
                            ("jdbc:mysql://localhost:3306/inventory?zero"
                                    + "DateTimeBehavior=convertToNull","root","");
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM basis"
                    + "WHERE barcode LIKE '%"+keyword+"%' or "
                    + "namaProduk LIKE '% "+keyword+" %'");               
        ){
            jTable1.setModel(buildTableModel(rs));
        }  
    }
    else fillTable();
}

2 个答案:

答案 0 :(得分:4)

basisWHERE之间缺少1个空格(原因导致语法错误)。

%与您的关键字之间有1个不需要的空格(使您的查询无关紧要)。

private void fillTable(String keyword) throws SQLException{
    if (!keyword.equals("")){
        try( Connection con = DriverManager.getConnection
                            ("jdbc:mysql://localhost:3306/inventory?zero"
                                    + "DateTimeBehavior=convertToNull","root","");
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM basis "
                    + "WHERE barcode LIKE '%"+keyword+"%' or "
                    + "namaProduk LIKE '%"+keyword+" %'");               
        ){
            jTable1.setModel(buildTableModel(rs));
        }  
    }
    else fillTable();
}

答案 1 :(得分:1)

我在这里看到的是,桌面名称"基础"背后缺少一个空间。通常,您应该通过现有的DB客户端手动测试SQL语句,然后将它们复制到您的代码中。

如果您对可以减轻痛苦的工具持开放态度,请尝试QueryDSL