Base de datos y JTable
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.
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.
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.
Marita.
lo que puedes hacer es un modelo de datos y asignarlo al metodo setmodel del objeto JTable
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.
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.
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
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