gpt4 book ai didi

java - Java 和 MySQL 数据库中的搜索过滤器

转载 作者:行者123 更新时间:2023-11-29 01:05:29 26 4
gpt4 key购买 nike

我正在用 Java 编写代码,用户可以在名为 lastname 的 JTextField 中键入姓氏,然后在 MySQL 数据库中搜索可能的匹配项。例如,用户开始键入字母“M”(不区分大小写且没有双引号),所有以字母“M*”开头的姓氏都将显示在 JTable 上。如果用户键入第二个字母,例如“A”,JTable 上的结果将只显示带有“MA”的姓氏,然后如果用户键入第三个字母,例如“N”, JTable 将只显示所有带有“MAN***”等的姓氏..

我读过

SELECT * FROM table WHERE lastname LIKE value

并尝试在我的程序中使用它,但是,我遇到了一个错误。

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxError.Exception: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%' at line 1

这是我在 JTextField 姓氏中按下键时的部分代码:

private void lastNameKeyPressed(java.awt.event.KeyEvent evt) {                                    

Connection conn = null;

String url = "jdbc:mysql://localhost:3306/";
String dbName = "students_dbs";
Statement stmt = null;
ResultSet result = null;
String driver = "com.mysql.jdbc.Driver";
String databaseUserName = "user1";
String databasePassword = "test";
PreparedStatement pst = null;

try{
conn = DriverManager.getConnection(url + dbName, databaseUserName, databasePassword);
stmt = conn.createStatement();
System.out.println("Connected to the database.");
}catch(Exception e){
System.out.println("Failed to connect ot the database.");
}


try{
String sql = "SELECT studentno, lastname, firstname, middlename FROM student WHERE lastname LIKE '%" + lastname.getText() + "'%";
pst = conn.prepareStatement(sql);
result = pst.executeQuery();
studentsTable.setModel(DbUtils.resultSetToTableModel(result));
}
catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}
}

我用谷歌搜索了一两天,但是,我卡住了。我对在 MySQL 中使用 LIKE 有点陌生。非常感谢任何帮助!提前致谢!

最佳答案

最后一个 ' 字符的位置是错误的:

String sql = "SELECT studentno, lastname, firstname, middlename FROM student 
WHERE lastname LIKE '% " + lastname.getText() + " '% ";

应该是:

String sql = "SELECT studentno, lastname, firstname, middlename FROM student 
WHERE lastname LIKE '% " + lastname.getText() + " %' ";

关于java - Java 和 MySQL 数据库中的搜索过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22144254/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com