mysql模糊查找英文可以查找中文不行(详细记录)

mysql模糊查找英文可以查找中文不行,这个问题我找了好久都没有一个符合我情况的详细描述,所以我把我自己的情况详细记录以供大家参考

问题描述如下:

1、查找条件为中文时,查找结果值为空;


2、英文可以正常查找:


3、而我直接从数据库命令行查找中文条件时,也是可以正常查找的(如图)


解决方法:

遇到mysql模糊查找英文可以查找中文不行这个问题的时候,我查了好多帖子,都说在数据库连接字符串后加上characterEncoding=UTF-8之类的语句,实际上我的是加了的


最终我发现,是因为我添加的方式不对,导致指定编码格式未生效

我更正为: <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?useunicode=true&amp;characterEncoding=UTF-8" />

问题解决!



以下是Java MySQL swing 人事管理系统模糊查找的代码实现: 1. 首先,我们需要定义一个文本框来接收用户输入的模糊查找关键词: ``` JTextField searchField = new JTextField(20); ``` 2. 然后,在询按钮的事件处理程序中,我们可以使用如下代码来进行模糊查找: ``` String keyword = searchField.getText(); String sql = "SELECT * FROM employees WHERE name LIKE '%" + keyword + "%' OR department LIKE '%" + keyword + "%'"; PreparedStatement statement = connection.prepareStatement(sql); ResultSet result = statement.executeQuery(); ``` 这里的 `employees` 是我们的表名,`name` 和 `department` 是我们要进行模糊查找的字段名。`LIKE` 关键字可以进行模糊匹配,`%` 表示匹配任意字符,所以 `%keyword%` 就是匹配包含关键词的任意字符串。 3. 最后,我们将询结果显示在表格中: ``` DefaultTableModel model = (DefaultTableModel) table.getModel(); model.setRowCount(0); while (result.next()) { Object[] row = new Object[4]; row[0] = result.getInt("id"); row[1] = result.getString("name"); row[2] = result.getString("department"); row[3] = result.getInt("salary"); model.addRow(row); } ``` 这里的 `table` 是我们的表格组件,`DefaultTableModel` 是表格模型,可以用来管理表格数据。`setRowCount(0)` 可以清空表格数据,然后我们遍历询结果,将每条记录的字段值存储到 `Object[]` 数组中,最后通过 `model.addRow(row)` 来添加到表格中。 完整代码示例: ``` JTextField searchField = new JTextField(20); JButton searchButton = new JButton("询"); JTable table = new JTable(); // 询按钮的事件处理程序 searchButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { String keyword = searchField.getText(); String sql = "SELECT * FROM employees WHERE name LIKE '%" + keyword + "%' OR department LIKE '%" + keyword + "%'"; PreparedStatement statement = connection.prepareStatement(sql); ResultSet result = statement.executeQuery(); DefaultTableModel model = (DefaultTableModel) table.getModel(); model.setRowCount(0); while (result.next()) { Object[] row = new Object[4]; row[0] = result.getInt("id"); row[1] = result.getString("name"); row[2] = result.getString("department"); row[3] = result.getInt("salary"); model.addRow(row); } } catch (SQLException ex) { ex.printStackTrace(); } } }); // 将文本框和按钮添加到面板中 JPanel searchPanel = new JPanel(); searchPanel.add(searchField); searchPanel.add(searchButton); // 将表格添加到滚动面板中 JScrollPane scrollPane = new JScrollPane(table); // 将面板和滚动面板添加到窗口中 JFrame frame = new JFrame("人事管理系统"); frame.getContentPane().add(searchPanel, BorderLayout.NORTH); frame.getContentPane().add(scrollPane, BorderLayout.CENTER); frame.pack(); frame.setVisible(true); ``` 注意,这里的 `connection` 是一个已经建立好的数据库连接,可以参考其他 Java MySQL 连接的代码实现。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值