1

それはデータを追加しません、columnamesは機能します、私は疲れ果てています私はここからどこへ行くべきか見当がつかないのです。エラーメッセージは表示されません。文字列ではなくオブジェクトが表示されます。また、model.addRow()がオブジェクト[] []を要求し、配信すると信じているので、なぜ機能しないのかわかりません。

initComponents();
   try {
    PreparedStatement stat = Domein.dConnection().prepareStatement("SELECT domainid , domain FROM nabilpx84_hamchi.dnsp_domains");
        ResultSet resultaat = stat.executeQuery();
        ResultSetMetaData naam = resultaat.getMetaData();

        Object[] kolommen = new Object[2];
        Object[][] data = null ;
        DefaultTableModel model = new DefaultTableModel(null,data);

        // kolom namen          
        for (int i = 1; i <= naam.getColumnCount(); ++i) {
            model.addColumn(naam.getColumnName(i));
        }
        //records

        data = new Object[1][2];

         while(resultaat.next())
        {
            data[0][0] = resultaat.getInt(1);
            data[0][1] = resultaat.getString(2);
            if(resultaat.isFirst())
            {
                model.addRow(data);
            }
        }

        uitvoerTabel.setModel(model);


    } catch (SQLException ex) {
        Logger.getLogger(Domein.class.getName()).log(Level.SEVERE, null, ex);
    }
4

3 に答える 3

2

テーブル モデルにデータを 2 回追加しているように見える、ファンキーなコードがあります。代わりに、列ヘッダーの Vector または String 配列と行数 0 で DefaultTableModel を作成し、while ループに Object 配列行または Vector 行を追加してみませんか?

また、行ごとに新しいオブジェクト配列またはベクターを作成する必要があります。あなたはwhileループでそれをしていません。

何かのようなもの:

    ResultSet resultaat = stat.executeQuery();
    ResultSetMetaData naam = resultaat.getMetaData();

    Vector<String> columnVector = new Vector<String>();
     for (int i = 1; i <= naam.getColumnCount(); ++i) {
        columnVector.addElement(naam.getColumnName(i));
    }       


    DefaultTableModel model = new DefaultTableModel(columnVector, 0);

    while(resultaat.next())    {
       // you must create a new Object array or Vector for each row
       Object[] rowData = new Object[2];
       rowData[0] = resultaat.getInt(1);
       rowData[1] = resultaat.getString(2);
       if(resultaat.isFirst()) {  // not sure what this is for
          model.addRow(rowData);
       }
    }

また、Rob Camick の Table from Database ブログもご覧ください: Table From Database

于 2013-02-20T21:02:32.520 に答える
2

あなたはそのようなことを試すことができます:

ResultSetMetaData metaData = rs.getMetaData();

// names of columns
Vector<String> columnNames = new Vector<String>();
int columnCount = metaData.getColumnCount();
for (int column = 1; column <= columnCount; column++) {
    columnNames.add(metaData.getColumnName(column));
}

// data of the table
Vector<Vector<Object>> data = new Vector<Vector<Object>>();
while (rs.next()) {
    Vector<Object> vector = new Vector<Object>();
    for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
        vector.add(rs.getObject(columnIndex));
    }
    data.add(vector);
}

DefaultTableModel model = new DefaultTableModel(data, columnNames);

一方、サービス層は、Swing アプリケーションで 1 つ以上のリポジトリーを切り離したり、サービス ファサードを持たせたりするのに役立ちます。

于 2013-02-20T21:03:17.380 に答える