Base de datos y JTable

Rosario
01 de Julio del 2009
Mi consulta es la siguiente:
Cargo los datos de una base de datos en un JTable pero cuando agrego nuevos datos a pesar de que llamo de nuevo a un metodo para volver a cargar, mi tabla no se actualiza. Que puedo hacer.
Gracias.

Marita
01 de Julio del 2009
Hola Rosario, disculpa el disturbo, yo quisiera saber como puedo cargar datos a un Jtable, utilizando como contenedor un file txt?... Me podrias ayudar.... Te lo agradezco.
Marita.

iscvictor
01 de Julio del 2009
lo que puedes hacer es un modelo de datos y asignarlo al metodo setmodel del objeto JTable

iscvictor
01 de Julio del 2009
mira lo que yo hice fue esto:

instancie un objeto tipo JTable, despues hice una clase (ModeloDatos) que se extiende de AbstractTableModel y hay cargue los datos de mi bd, despues al metodo setModel del objeto JTable le hice una instancia de la clase creada ModeloDatos, pero antes de asignalo, elimino todo del JTable.


iscvictor
01 de Julio del 2009
Este es un fragmento del codigo en el cual hago algo parecido a lo que necesitas:
class ModeloDatos extends AbstractTableModel {
private int NumRegistros=0;
private int Editable=0;
private String data[][];
private final String[] Encabezados={
new String("Indicativo"),
new String("Nombre"),
new String("Ap. Paterno"),
new String("Ap. Materno"),
new String("Pais"),
new String("Estado"),
new String("Ciudad"),
new String("Codigo Postal"),
new String("Apartado"),
};
private String dataEmpty[][]={
{"","","","","","","","",""}
};
public ModeloDatos(){

NumRegistros=RowCount();

getRowData();
}
public ModeloDatos(int x){
Editable=x;
data=dataEmpty;

}
public int RowCount(){
int cont=0;
try{
db.st=db.getSentencia();
db.rs=db.st.executeQuery("Select * From Datos_Personales");
db.rs.next();
if(db.rs.getRow()>0){
cont++;
while(db.rs.next())
cont++;
}
else
cont=1;
db.closeSentencia(db.st);
}catch(SQLException ex){
System.err.print("SQLException: " + ex.getMessage());
}
return cont;
}
//Obtine los datos y los pone en un arreglo para ser mostrados en el JTable
private void getRowData(){

data=new String[NumRegistros][9];
String qry="SELECT Datos_Personales.indicativo_completo, Datos_Personales.nombre, Datos_Personales.Apaterno, Datos_Personales.Amaterno, Indicativos.pais, Datos_Personales.Estado, Datos_Personales.ciudad, Datos_Personales.cp, Datos_Personales.PBox " +
"FROM Indicativos INNER JOIN Datos_Personales ON Indicativos.indicativo_prefijo = Datos_Personales.indicativo_prefijo " +
"WHERE (((Datos_Personales.indicativo_prefijo)=[Indicativos].[indicativo_prefijo])) " +
"ORDER BY Datos_Personales.indicativo_completo;";

try{
db.st=db.getSentencia();
db.rs=db.st.executeQuery(qry);
db.rs.next();
if(db.rs.getRow()>0){
for(int i=0;i<NumRegistros;i++){
for(int j=0;j<9;j++){
data[i][j]=db.rs.getString(j+1);
}
db.rs.next();
}
}
db.closeSentencia(db.st);
}catch(SQLException ex){
System.err.print("SQLException: " + ex.getMessage());


}


}

public int getColumnCount() {
return data[0].length;

}

public int getRowCount() {
return data.length;
}

public Object getValueAt(int rowIndex, int columnIndex) {
return data[rowIndex][columnIndex];

}

public boolean isCellEditable(int rowIndex, int columnIndex) {
boolean editable=false;
if(Editable>0){
if(columnIndex==0 || columnIndex==4)
editable=false;
else
editable=true;
}
else
editable=false;

return editable;
}

public void setValueAt(Object value, int row, int col) {
data[row][col] = value.toString();
this.fireTableDataChanged();

}

public Class getColumnClass(int c) {

return java.lang.String.class;

}

public String getColumnName(int col) {
return Encabezados[col];
}




}// Clase ModeloDatos

marita
01 de Julio del 2009
disculpa victor, me puedes explicar mejor como has hecho que la Jtable se cargue con los datos de un database... a mi no me funciona....ayudo...urgente