2011年7月24日 星期日

[java] (3) list all data in database


/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/



/*

* test2.java

*

* Created on 2011/7/11, 下午 11:39:40

*/

package test;



import java.util.*;

import javax.swing.table.*;

import java.sql.*;





/**

*

* @author luke

*/

public class test21 extends javax.swing.JFrame {



/** Creates new form test2 */

public test21() {

initComponents();

}



/** This method is called from within the constructor to

* initialize the form.

* WARNING: Do NOT modify this code. The content of this method is

* always regenerated by the Form Editor.

*/

@SuppressWarnings("unchecked")

//

private void initComponents() {



jButton1 = new javax.swing.JButton();

jScrollPane1 = new javax.swing.JScrollPane();

data_jTable1 = new javax.swing.JTable();



setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);



jButton1.setText("列出");

jButton1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton1ActionPerformed(evt);

}

});



data_jTable1.setModel(new javax.swing.table.DefaultTableModel(

new Object [][] {

{null, null},

{null, null}

},

new String [] {

"ID", "Name"

}

) {

Class[] types = new Class [] {

java.lang.Integer.class, java.lang.String.class

};

boolean[] canEdit = new boolean [] {

false, true

};



public Class getColumnClass(int columnIndex) {

return types [columnIndex];

}



public boolean isCellEditable(int rowIndex, int columnIndex) {

return canEdit [columnIndex];

}

});

jScrollPane1.setViewportView(data_jTable1);

data_jTable1.getColumnModel().getColumn(0).setResizable(false);



javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGap(27, 27, 27)

.addComponent(jButton1)

.addGap(31, 31, 31)

.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 465, Short.MAX_VALUE)

.addGap(204, 204, 204))

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addContainerGap()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 194, Short.MAX_VALUE)

.addComponent(jButton1))

.addGap(220, 220, 220))

);



pack();

}//




// 模組類別 (AbstractTableModel)import javax.swing.table.*;

class MyTableModel extends AbstractTableModel // 設定好模組

{

// import java.util.*;

private ArrayList colname; //儲存欄位名稱的列表

private ArrayList data; //儲存整個表格的列表



public MyTableModel(ResultSet rs)

{

try{



// 取得欄位數量

ResultSetMetaData rm = rs.getMetaData();

int cnum = rm.getColumnCount();

colname = new ArrayList(cnum);



// 取得欄位名稱

for(int i=1; i<=cnum; i++){

colname.add(rm.getColumnName(i)); //儲存欄位名稱

}



// 取得列

data = new ArrayList();

while(rs.next()){

ArrayList rowdata = new ArrayList(); //儲存一整列資料的列表

for(int i=1; i<=cnum; i++){

rowdata.add(rs.getObject(i).toString()); //儲存各個資料

}

data.add(rowdata); //Save data step by step

}

}

catch(Exception e){

e.printStackTrace();

}

}

public int getRowCount() //傳回列數方法

{

return data.size();

}


public int getColumnCount() //傳回欄位數方法

{

return colname.size();

}


public Object getValueAt(int row, int column) //傳回各個儲存格值的方法

{

ArrayList rowdata = (ArrayList)data.get(row);

return rowdata.get(column);

}


public String getColumnName(int column) //傳回欄位名稱的方法

{

return (String) colname.get(column);

}


}



private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

Connection conn = null;

String url = "jdbc:mysql://localhost:3306/testdb";

String user = "testuser";

String password = "test623";



try {





conn = DriverManager.getConnection(url, user, password);



Statement st = conn.createStatement();



String qry = "SELECT * FROM Authors";



// 進行查詢

ResultSet rs = st.executeQuery(qry);

data_jTable1.setModel(new MyTableModel(rs));



// 關閉連線

rs.close();

st.close();

conn.close();



} catch (SQLException ex) {

System.out.println(ex.getMessage());

}



}



/**

* @param args the command line arguments

*/

public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {



public void run() {

new test21().setVisible(true);

}

});

}

// Variables declaration - do not modify

private javax.swing.JTable data_jTable1;

private javax.swing.JButton jButton1;

private javax.swing.JScrollPane jScrollPane1;

// End of variables declaration

}

0 意見:

張貼留言