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 に答える