java - 如何在MySQL数据库中保存的字符串中进行搜索

标签 java mysql string swing jlist

我通过在 jtextField 中获取用户的输入创建了一个 JList。然后,我通过将 JList 转换为字符串,将 jList 保存到 Mysql 数据库,因为我想将 JList 项保存在单行中作为单个条目。

将用户输入添加到 jList 的代码:

DefaultListModel dlm= new DefaultListModel();
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

        String userInput= jTextField2.getText();
        dlm.addElement(userInput);
        jList1.setModel(dlm);
        jTextField2.setText(null);     

    } 

用于将 JList 作为字符串保存到 MySQL 数据库的代码:

String allitem=null;
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         

         for(int i = 0;i<jList1.getModel().getSize();i++)
    {
        allitem = (String)jList1.getModel().getElementAt(i)+"::"+allitem;
    }

try
{
    Class.forName("com.mysql.jdbc.Driver");
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ft", "root", "");
    PreparedStatement stmt = conn.prepareStatement("insert into ftt (listname,listitem) values (?,?)");
    stmt.setString(1, jTextField1.getText());
    stmt.setString(2, allitem);
    stmt.execute();
    conn.close();
}catch(
Exception e)
{
    JOptionPane.showMessageDialog(null, e);
    e.printStackTrace();
}
    JOptionPane.showMessageDialog(null, "done"); 

    }                                        

现在在下一页中用户可以查看 JList 中的所有字符串(Jlist 保存为字符串)项。我想向用户显示所选 JList 项目的详细信息。我已经创建了一个 Jtable,并希望显示所选 JList 项的其他详细信息。

我尝试过的代码:

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         

        Update_table1();

    }  

private void Update_table1(){

        try{

            Class.forName("com.mysql.jdbc.Driver");
            Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/ft","root","");
            String query="SELECT listname FROM ftt WHERE listitem=?;";
            PreparedStatement prepstmt=conn.prepareStatement(query);  
            String s = (String) jList1.getSelectedValue();
            prepstmt.setString(1,s);
            ResultSet rs=prepstmt.executeQuery(); 
            jTable3.setModel(DbUtils.resultSetToTableModel(rs));

        }catch(Exception e){

            JOptionPane.showMessageDialog(null, e);
        }
    }

但是,当使用此代码时,Jtable 没有显示任何值,尽管它采用表头名称。请任何人检查我是否正确地搜索保存在 MySQL 数据库中的字符串。我认为问题就在那里,因为其他事情都运转良好。

注意:它没有显示任何错误或异常。

最佳答案

这不是像连接字符串那样保存记录的最佳方法。您最好使用规范化表并将所有列表元素保留为记录。对于您的代码,您尝试查询包含串联信息的字段。因此,您可以使用“like”关键字而不是“=”。

"SELECT listname FROM ftt WHERE listitem like %?%;"

关于java - 如何在MySQL数据库中保存的字符串中进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57203075/

相关文章:

java - 如何生成区间(0.8;1)内的随机数?

php - mysql数据库查询失败

php - mysql 更新不能通过 php 脚本工作,尽管它通过 mysql 终端工作

java - 检查多个变量java中的替换空值

c++ - 从 C++ 字符串中删除特殊字符(' 和 - 除外)

c++ - 返回 std::string 作为 const 引用

java - Thread.start() 方法从不调用 run()

java - 刷新 RecyclerView 中的数据并保持其滚动位置将用户带到 Activity 的顶部

java - Jframe 打开时崩溃

mysql - 为什么 MySQL Workbench 执行查询的速度比我的应用程序慢得多?