如何从jtable插入数据库?

时间:2012-10-25 09:44:24

标签: java swing jdbc jtable row

我有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");
                    }
                    }
                }
    }

3 个答案:

答案 0 :(得分:1)

假设您使用的是DefaultTableModelgetValueAt()返回的结果将为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());
    }
});

答案 1 :(得分:0)

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

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

第二,你也可以学习搜索关于jtable的api。 如果你完全了解一个类的方法以及如何以一般方式使用它,我认为你理解并使用它很好。 这也可以提高你理解类似的东西。 如果不提出问题,你就会变得越来越强大,学习其他困难的东西。

这是我学习计划的好处。

答案 2 :(得分: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());

        }
}