1

我有 2 列的 jtable,然后我想将它的值插入数据库;

我知道它可以用类似的东西来完成。

    int count=table.getRowCount();
for(int i=0;i<count;i++){
Object obj1 = table.getValueAt(i, 0);
Object obj2 = table.getValueAt(i, 1);

问题是.. getRowCount 不知道该行是否为空,然后在数据库中,该空值仍将插入(并且它将在数据库中生成我的自动增量值)

我的问题是如何从 jtable 插入数据库,但不会插入空行?

非常感谢任何帮助,,

如果我要求太多,请给我一个处理空行的线索,

原谅我的英语

这是将数据添加到数据库的损坏方法

public void addToDatabase(){
            for (int i=0;i<table.getRowCount();i++){

                //#####################################
                //maybe need something in here
                if(table.getValueAt(i, 0)==null||table.getValueAt(i, 1) ==null){
                    return;
                //and maybe need something not return, but to get the next row (Just.. maybe ...)    
                //#####################################

                }else{
                    try{
                        Connection c = getCon("databasez");
                        PreparedStatement p = c.prepareStatement("INSERT INTO table_data VALUES (?,?)");
                        p.setString(1, table.getValueAt(i, 0).toString());
                        p.setFloat (Float.parseFloat(table.getValueAt(i, 1).toString()));
                        p.executeUpdate();
                        p.close();
                    }catch(Exception e){
                        JOptionPane.showMessageDialog(this, "THERE WAS AN INVALID DATA");
                    }
                    }
                }
    }
4

3 回答 3

1

假设您正在使用DefaultTableModel,则返回的结果getValueAt()将是null直到您编辑相应的单元格。

您还可以注册一个TableModelListener来接收一个TableModelEvent可以告诉您的听众发生了什么变化的内容。

private JTable table = new JTable(1, 2);
...
table.getModel().addTableModelListener(new TableModelListener() {

    @Override
    public void tableChanged(TableModelEvent e) {
        System.out.println(""
            + e.getType() + " "
            + e.getFirstRow() + " "
            + e.getLastRow() + " " 
            + e.getColumn());
    }
});
于 2012-10-25T15:50:52.337 回答
0

也许它会帮助你。 http://www.exampledepot.com/egs/javax.swing.table/InsertRow.html

首先,我只是在这里看到了 getData 方法,没有看到您调用的 insert 或类似的方法,所以我认为代码与您所说的无关。

其次,你也可以学习搜索关于jtable的api。如果你完全了解一个类的方法以及如何在一般情况下使用它,我认为你理解和使用它非常好。这也可以提高您对类似事物的理解。你会变得越来越强大,可以不问问题地学习其他困难的东西。

那是我学习程序的选择。

于 2012-10-25T09:57:05.013 回答
0
JAVA swing,SIMPLE WAY TO store jTable DATA in database


private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) // swing Button
{
 String name[] =new String[4]; // name is array and index 4 means no. of row 
 String age[]=new String[4]; //age is array and index 4 means no. of row  
//loop from 0 row to 4
for(int i=0;i<4;i++) 
 {
 name[i]=table.getValueAt(i,0).toString(); // it get value from 0 row and 0 column
 age[i]=table.getValueAt(i,1).toString();  // it get value from 0 row and 1 column

//similarly for more column  

try
{
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/crm","root","");
Statement s1=con.createStatement();
int mc=s1.executeUpdate("insert into testtable(Name,Age) values('"+name[i]+"','"+age[i]+"')");

}

        catch(Exception ex)
        {
            javax.swing.JOptionPane.showMessageDialog(null,ex.getMessage().toString());

        }
}
于 2013-12-05T16:43:18.683 回答