1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
| import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import sun.jdbc.odbc.JdbcOdbcDriver;
public class MyTableModel4 extends AbstractTableModel{
static final long serialVersionUID = 1L;
String[] nomDesColonnes;
Object[][] donnees;
public MyTableModel4(ResultSet rs) throws SQLException{
ResultSetMetaData rsmd = rs.getMetaData();
int ncols = rsmd.getColumnCount();
nomDesColonnes = new String[ncols];
for(int i=1; i<=ncols; i++){
nomDesColonnes[i-1] = rsmd.getColumnLabel(i);
}
rs.last();
int nlignes=rs.getRow();
//Remise du curseur à sa position initiale
rs.beforeFirst();
donnees = new String [nlignes][ncols];
boolean suivant = rs.next();
int k=0;
while(suivant){
for(int j=1; j<=ncols; j++){
donnees[k][j-1] = rs.getString(j);
}
suivant = rs.next();
k++;
}
}
/* retourne le nombre d'element de la colonne */
public int getColumnCount() {
return nomDesColonnes.length;
}
/* retourne le nombre d'elements de la ligne */
public int getRowCount() {
return donnees.length;
}
/* retourne le nom de la colonne */
public String getColumnName(int col) {
return nomDesColonnes[col];
}
/* retourne la valeur à la ligne row et colonne col */
public Object getValueAt(int row, int col) {
return donnees[row][col];
}
/* retourne le type de chaque colonne */
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
/* definie les cellules éditables ou non */
public boolean isCellEditable(int row, int col) {
return false;
}
/* permet de modifier l'element en placant value a la ligne row colonne col */
public void setValueAt(Object value, int row, int col) {
donnees[row][col] = value;
fireTableCellUpdated(row, col); // on signal un changement
}
public static void main(String [] args){
//Parametre de connexion a la base de données
String url="jdbc:odbc:MAGIC";
String login = "root";
String password = "root";
Connection connection = null;
try{
Driver monDriver = new JdbcOdbcDriver();
DriverManager.registerDriver(monDriver);
connection=DriverManager.getConnection(url,login,password);
Statement stmt = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
String sql = "SELECT [Full Name] AS PERSONNE, "+
"[GROUP Name] AS EQUIPE, "+
"SUM(CASE "+
"WHEN [Seq.Assigned TO] = [Seq.Open BY] THEN 1 "+
"ELSE 0 "+
"END) AS OUVERT, " +
"SUM(CASE "+
"WHEN [Seq.Assigned TO] = [Seq.Closed BY] THEN 1 "+
"ELSE 0 "+
"END) AS FERME, "+
"SUM(CASE "+
"WHEN [Seq.Open BY] = [Seq.Closed BY] THEN 1 "+
"ELSE 0 "+
"END) AS [OUVERT & FERME] "+
"FROM MAGIC._SMDBA_.[Groups Details] G "+
"INNER JOIN MAGIC._SMDBA_.Incident I "+
"ON I.[Seq.Assigned TO] = G.[Seq.SupportStaff] "+
"WHERE (I.[Close Date & Time] BETWEEN '20070608 00:00:00.000' AND '20070608 19:00:00.000') "+
"AND (I.[GROUP Name]='EHSFAC-SERVICEDESK1' OR I.[GROUP Name]='EHSFAC-SERVICEDESK2') "+
"GROUP BY [Full Name], [GROUP Name]";
ResultSet rs = stmt.executeQuery(sql);
MyTableModel4 myModel = new MyTableModel4(rs);
JTable table = new JTable(myModel);
JFrame frame = new JFrame("MyTableModel");
JScrollPane scroll = new JScrollPane(table);
frame.setSize(300,200);
frame.add(scroll);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
while(true){
rs = stmt.executeQuery(sql);
boolean suivant = rs.next();
int k=0;
while(suivant){
while(k<myModel.getRowCount()){
for(int i=1; i<=myModel.getColumnCount(); i++){
myModel.setValueAt(rs.getString(i), k, i-1);
//myModel.setValueAt("random", k, i-1);
}
suivant = rs.next();
k++;
try {
Thread.sleep(2000);
}catch(InterruptedException ie){}
}
}
}
}catch(SQLException e){
e.printStackTrace();
}
}
} |
Partager