问题描述
我正在尝试在程序的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();
}
1楼
您在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();
}
2楼
我在这里看到的是表名称“ basis”后面缺少一个空格。 通常,您应该通过现有的数据库客户端手动测试SQL语句,然后将其复制到代码中。
如果您愿意使用可以减轻痛苦的工具,请尝试使用 。