Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JTable中添加/删除数据库中的数据_Java_Sql_Swing_Jtable_Awt - Fatal编程技术网

Java 在JTable中添加/删除数据库中的数据

Java 在JTable中添加/删除数据库中的数据,java,sql,swing,jtable,awt,Java,Sql,Swing,Jtable,Awt,我创建了一个Jtable,用于存储数据库中的数据,我可以使用Jbutton删除/添加Jtable的内容。当我没有尝试运行代码时,我得到了以下结果: 当我两次向Jtable中添加数据时,其中有一个额外的空行 当我两次将数据删除到Jtable中时,特定行中的数据将被删除,但它也会添加一个透明的空行。 为什么会发生这种情况 下面是我认为存在问题的代码: //add,delete button final JToggleButton tglbtnAdd = new JToggleButton("Add"

我创建了一个Jtable,用于存储数据库中的数据,我可以使用Jbutton删除/添加Jtable的内容。当我没有尝试运行代码时,我得到了以下结果:

当我两次向Jtable中添加数据时,其中有一个额外的空行 当我两次将数据删除到Jtable中时,特定行中的数据将被删除,但它也会添加一个透明的空行。 为什么会发生这种情况

下面是我认为存在问题的代码:

//add,delete button
final JToggleButton tglbtnAdd = new JToggleButton("Add");
final JToggleButton tglbtnDelete = new JToggleButton("Delete");


JButton button = new JButton("1");
button.addActionListener(new ActionListener() {
    public void actionPerformed(final ActionEvent arg0) {
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            Connection dbconbt1 = DriverManager.getConnection("" +"jdbc:sqlserver://localhost;databaseName=Store;user=sa;password=");
            Statement sqlstatement = dbconbt1.createStatement();
            ResultSet dbresultset1 = sqlstatement.executeQuery("select * from Store.dbo.Product where ProductID = 'P-1'");
            ResultSetMetaData rsmetadata = dbresultset1.getMetaData();       // Get metadata on them
            int numcols = rsmetadata.getColumnCount();    // How many columns?
            //  Get column names

            for (int i = 1; i <= numcols; i++) {
                defaultmodel2.addColumn( rsmetadata.getColumnName(i));
            }

            if(tglbtnAdd.isSelected() == true) {
                while (dbresultset1.next()) {   
                    Vector<Object> row = new Vector<Object>(numcols);
                    for (int i = 1; i <= numcols; i++) {
                        row.addElement( dbresultset1.getObject(i) );
                    }
                    defaultmodel2.addRow(row );
                }
            }

            if(tglbtnDelete.isSelected() == true) { 
                /**while (dbresultset1.next())
                {    
                    Vector<Object> row = new Vector<Object>(numcols);
                    row.removeElement( dbresultset1.getObject(0) );
                } 
                 */ 
                defaultmodel2.removeRow(0);
            }
            //  Get row
            dbresultset1.close();
            sqlstatement.close();
            dbconbt1.close();

使您的表结构只加载表单,只需从JTextField或您使用的任何对象数组中获取数据。最后,将对象数组添加到模型中。对于delete,只需调用model.removeow方法

你能给我更多的信息吗?我不明白,输入jtable的数据来自数据库。