Newsgroup: it.comp.java
Titolo: ci riprovo

Esiste l'equivalente di una Dbgrid di visual basic in Java?

> Esiste l'equivalente di una Dbgrid di visual basic in Java?
Se non ricordo male un Dbgrid è una tabella collegabile direttamente ad un
database giusto?
Beh, se è questo che intendi...no!! Devi per forza pigliarti una tabella e
connetterla al database, eseguire una query e poi mandare il risultato in
pasto alla tabella. Puoi crearti una classe wrapper che faccia tutto questo
in maniera da poterla riutilizzare più volte.

Io ho risolto con delle classi proprietarie.
Ho utilizzato quelle delle Borland presenti in JBuilder
Ciao ciao.
"jake" <xx...@xxx.xx> ha scritto nel messaggio
news:55809vkraro1og8v0...@4ax.com...



Per DBgrid intendo un controllo grafico tipo jlabel jtext ecc formato
da righe e colonne che viene riempito ad es. dall'esecuzione di una
select..
Quindi in Java mi devo fare una classe che mi fa questo controllo
grafico? misa che non sono capace cacchio!!! C'č qualche classe gią
fatta o esempio...Grazie

 fatta o esempio...Grazie
La classe per le tabelle esiste già ed è JTable! Il resto (la connessione e
il popolamento), a meno di usare le classi proprietarie Borland, bisogna
farselo a mano.


Ok grazie provo a riempire una jtable

Ti passo una mia classe!
Si usa cosě:
    //Se lo statement non lo ctrei in questo modo la tabella non č
aggiornabile
    //ti anticipo che non tutti i database ti consentono di crearlo in
questo modo
    Statement stmt =
conn.CreateStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
    ResultSet rs = stmt.executeQuery("SELECT * FROM tabella");
    ResultSetMapper rsmapper = new ResultSetMapper(rs);
    JTable tabella = new JTable(rsmapper);
////////////////////////////
package dbmanager.mapping;
import java.util.*;
import java.sql.*;
import org.apache.log4j.*;
import javax.swing.table.*;
public class ResultSetMapper extends AbstractTableModel{
    public ResultSetMapper(){
        data = new Vector();
        nomiColonne = new Vector();
        }
    public ResultSetMapper(ResultSet rs)  throws SQLException{
        data = new Vector();
        nomiColonne = new Vector();
        setResultSet(rs);
        }
    public void setResultSet(ResultSet rs) throws SQLException{
 
this.rs
 = rs;
        ResultSetMetaData rsMeta = rs.getMetaData();
        numeroColonne = rsMeta.getColumnCount();
 
        for (int i = 0; i < numeroColonne; i++){
            nomiColonne.add(rsMeta.getColumnName(i + 1));
        }
        Object[]record = null;
        while (rs.next()){
            record = new Object[numeroColonne];
            for (int i = 0; i < numeroColonne; i++){
                record[i] = rs.getObject(i+1);
                    }
            data.add(record);
        }
        numeroRighe = data.size();
    }
    public ResultSet getResultSet(){ return rs; }
    public void setValueAt(Object obj, int row, int col){
        if (isUpdable()){
        try{
//          ResultSetMetaData rsMeta = rs.getMetaData();
//          int type = rsMeta.getColumnType(col + 1);
            rs.absolute(row + 1);
            rs.updateObject(col + 1, obj);
            rs.updateRow();
            Object[] record = (Object[])data.elementAt(row);
            record[col] = obj;
            fireTableCellUpdated(row, col);
        }catch(SQLException e){
            logger.fatal(e.getClass().getName()+": "+e.getMessage(), e);
            }
        }
        }
    public Object getValueAt(int row, int col){
        return ((Object[])data.elementAt(row))[col];
        }
 
    public Object getValueAt(int row, String colName){
        int size = nomiColonne.size();
        int index = -1;
        for (int i = 0; i < size; i++){
            String name = (String)nomiColonne.elementAt(i);
            if (name.equals(colName)){
                index = i;
                break;
            }
        }
 
        if (index == -1)return null;
        else return getValueAt(row, index);
    }
    public boolean isCellEditable(int row, int col){ 
        return isUpdable();
    }
    public int getRowCount(){ return numeroRighe; }
    public int getColumnCount(){ return numeroColonne; }
 
    public String getColumnName(int index){
        return (String)nomiColonne.elementAt(index);
    }
 
    public boolean isUpdable(){
        try{
        if (rs.getConcurrency() == ResultSet.CONCUR_UPDATABLE &&
           (rs.getType() == ResultSet.TYPE_SCROLL_INSENSITIVE ||
            rs.getType() == ResultSet.TYPE_SCROLL_SENSITIVE)){
        return true; 
            }
        }catch(SQLException e){
            logger.fatal(e.getClass().getName()+": "+e.getMessage(), e);
        }catch(Exception e){
            logger.fatal(e.getClass().getName()+": "+e.getMessage(), e);
            }
        return false;
    }
    private ResultSet rs;
    private Vector data, nomiColonne;
    private int numeroColonne, numeroRighe;
    private Logger logger = Logger.getLogger(this.getClass());
    }
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


Grazie ora la provo
