我正在尝试在我的程序中在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();
}
答案 0 :(得分:4)
basis
和WHERE
之间缺少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。