如何将 jlist 作为单个块插入 MySQL 数据中

How to insert jlist as a single block in MySQL data

我创建了一个 java 软件应用程序,其中有一个表单,其中包含几个 JTextField 和一个 JList。 JList 中的项目也由用户在同一页面中存在的 JTextField 的帮助下插入。我想在单击提交按钮时将 JTextField 和 JList 保存在 MySQL 数据库中。我已成功将 JTextField 数据插入 MySQL 数据库 table,但问题是我不知道如何将 JList 保存在单个块中。只是为了练习,我尝试保存 JList 并为数据库中的每个项目获取新行。

有什么方法可以将整个 JList 添加到单个块中。

如果不是,我如何link JList 以及 MySQL 中的剩余数据。

我知道我们一次只能问一个问题,但另一个问题是如何在 JTable 中以 JList 的形式将 JList 从数据库检索到 JTable 以及所有其他详细信息。

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

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

    }                                        

String item="";
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         

       for(int i = 0; i < jList1.getModel().getSize(); i++)
       {         item = (String)jList1.getModel().getElementAt(i);
        try{

                    Class.forName("com.mysql.jdbc.Driver");
                    Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/a","root","");
                    PreparedStatement stmt = conn.prepareStatement("insert into listt (listitem) values (?)");
                    stmt.setString(1,item);
                    stmt.execute();
                    conn.close();
        }
catch(Exception e){
                    JOptionPane.showMessageDialog(null, e);
                    e.printStackTrace();
                }       
       } 
       JOptionPane.showMessageDialog(null, "Done");
    }  

上面的代码有两个按钮 btn1 将 JTextField 数据添加到 JList,btn2 将 JList 项添加到数据库。它将每个项目保存在数据库的新行中,但我想将它保存在与其他数据一起的单个块中的一行中。

用于显示从 MySQL 到 JList 和 jTable 的数据的代码:

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

        try{

            Class.forName("com.mysql.jdbc.Driver");
            Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/a","root","");
            String query="SELECT listitem FROM listt;";
            PreparedStatement prepstmt=conn.prepareStatement(query);            
            ResultSet rs=prepstmt.executeQuery(); 

            while(rs.next()){

                String item= rs.getString(1);
                dlm.addElement(item);
                jList1.setModel(dlm);

            }

        }catch(Exception e){

            JOptionPane.showMessageDialog(null, e);
        }

    }                                        

当前 JTable 结果的图像。 ![https://imgur.com/dPlnLVu]

Jtable 的代码在这里:

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



    Update_table();

}                                        

private void Update_table(){

    try{

        Class.forName("com.mysql.jdbc.Driver");
        Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/ft","root","");
        String query="SELECT * FROM ftt;";
        PreparedStatement prepstmt=conn.prepareStatement(query);  
        ResultSet rs=prepstmt.executeQuery(); 
        jTable1.setModel(DbUtils.resultSetToTableModel(rs));

    }catch(Exception e){

        JOptionPane.showMessageDialog(null, e);
    }
}

listitem 列中的项目应该在每一行的 JList 中,并且不会显示 null 显示它是在将 jlist 值保存到数据库时在 Mysql 数据库中自动生成的。

剩下的事情都解决了,但我仍然需要在 jTable 中生成 JList。

 String allitem="";
    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/a", "root", "");
    PreparedStatement stmt = conn.prepareStatement("insert into listt (listitem) values (?)");
    stmt.setString(1, allitem);
    stmt.execute();
    conn.close();
}catch(
Exception e)
{
    JOptionPane.showMessageDialog(null, e);
    e.printStackTrace();
}

试试这个

   while(rs.next()){

        String item= rs.getString(1);
        String[] arrOfStr = item.split("::"); 
        for (String a : arrOfStr) {
            dlm.addElement(a);
            jList1.setModel(dlm);
        }

    }

用上面的

替换你的 while 块