当前位置: 代码迷 >> java >> 在不同的columnName中使用两个LIKE?
  详细解决方案

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

热度:64   发布时间:2023-08-04 09:17:48.0

我正在尝试在程序的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();
}

您在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();
}

我在这里看到的是表名称“ basis”后面缺少一个空格。 通常,您应该通过现有的数据库客户端手动测试SQL语句,然后将其复制到代码中。

如果您愿意使用可以减轻痛苦的工具,请尝试使用 。