gpt4 book ai didi

java - 填充 JTable

转载 作者:行者123 更新时间:2023-12-01 12:48:15 28 4
gpt4 key购买 nike

我有一个 JTable,我想知道是否有更好的方法来填充它,这是我的代码:

//Metodo para llenar un jtable con datos de la base
public static DefaultTableModel llenarTabla(JTable tabla,String Consulta,Object []datos){
try (Connection conexion = pool.getConnection(clsConexion.espera)){//Tomamos una de las conexiones que hay en el pool
resultado = null;//Inicializamos la vareiable resultado a nula
modelo=null;
if(conexion!=null){//Si pudimos obtener una de las conexiones ejecutamos proceso
resultado = Consulta(Consulta, datos);//Hacemos la consulta de los datos de la base y los alojamos en un resultset
metaData = resultado.getMetaData();//Obtenemos los valores de la cantidad de columnas y filas que hay
columnas = metaData.getColumnCount();//Contamos las columnas
// Datos de las casillas
ArrayList<Object[]> informacion =new ArrayList<>();//Creamos el vectoe donde donde alojaremos la informacion
while (resultado.next()) {//Recorremos el resultset para tomar los valores
Object[] momento=new Object[columnas];//Creamos vector para guardar la informacion mientras se recorre
for (int i = 1; i <= columnas; i++) {//Tomamos los valores que esten en la fila - i - y en la columna en la que estamos del ciclo while
momento[i-1] = resultado.getObject(i); //Anadimos los datos al vector
}
informacion.add(momento);//Anadimos el los datos de vector a informacion cuando terminamos con una fila
} modelo=(DefaultTableModel)tabla.getModel();//Tomamos el modelo de la tabla en la que deseamos mostrar los datos
for (int i = 0; i <informacion.size(); i++) {//Recorremos la informacion
modelo.addRow(informacion.get(i));//Anadimos la informacion que este en la posicion - i - del vector
}
return modelo;
}else{WebOptionPane.showMessageDialog(null, "Error Nivel 2:\n Metodo: clsConexion/llenarTabla.\nError intentando conectar mediate una conexion del pool.","Conectando con la base de datos.",WebOptionPane.ERROR_MESSAGE);return null;}
} catch(SQLException ex){WebOptionPane.showMessageDialog(null, "Error Nivel 2.2:\n"+ex+"\n Metodo: clsConexion/llenarTabla.\nError Intentando crear modelo para la tabla","Informacion de la base de datos.",WebOptionPane.ERROR_MESSAGE);return null;}
}
//Data Manipulation Language (DML) & (DCL)-> SELECT, CALL, LOCK TABLE, MERGE
public static ResultSet Consulta(String consulta, Object []datos){//Metodo para realizar una consulta a la base, capturamos la consulta y los datos
try (Connection conexion = pool.getConnection(clsConexion.espera)){//Intentamos darle valor a la conexion
resultado = null;//Inicializamos la variable
sentenciaPreparada = null;
if(conexion!=null){//Verificamos si la conexion tiene valor
sentenciaPreparada = conexion.prepareStatement(consulta);//Preparamos la sentencia
if(datos.length >=1 && datos[0]!="SELECTSINPARAMETROS"){//Verificamos si en la consulta se cargaran parametros
for(int posicion =1; posicion<datos.length;posicion++){//Cliclo para a;adir los datos a la consulta que esta alojada en la sentencia
sentenciaPreparada.setObject(posicion, datos[posicion-1]);//A;adimos el dato en la posicion que le indicamos y el dato
}
}resultado = sentenciaPreparada.executeQuery();//Ejecutamos la sentencia
}else{WebOptionPane.showMessageDialog(null, "Error Nivel 2:\n Metodo: clsConexion/Consulta.\nError intentando conectar mediate una conexion del pool.","Conectando con la base de datos.",WebOptionPane.ERROR_MESSAGE);}
} catch (SQLException ex) {WebOptionPane.showMessageDialog(null, "Error Nivel 2.1:\n"+ex+"\n Metodo: clsConexion/Consulta.\nError Intentando hacer una conulta DML|DCL a la base.","Consulta a la base de datos.",WebOptionPane.ERROR_MESSAGE);}
finally{
try {
sentenciaPreparada.close();//Cerramos la sentencia
}catch (SQLException ex) {WebOptionPane.showMessageDialog(null, "Error Nivel 2.1:\n"+ex+"\n Metodo: clsConexion/Consulta DML|DCL.\nError Intentando cerrar sentencia.","Consulta a la base de datos.",WebOptionPane.ERROR_MESSAGE);}
}return resultado;
}

我还想实现 Lambda 表达式。

当填充JTable时,我应该使用什么,一个Vector来在读取数据时存储数据,或者一个ArrayList,我可以做什么从代码中改进?

此外,如果我希望我的 JTable 动态添加数据,例如,如果将新数据插入数据库,我怎样才能在不刷新 的情况下显示插入的数据JTable,我的意思是,JTable 将不断从数据库中读取数据,但是我必须对上面的代码进行哪些更改?

最佳答案

when populating a jtable what should i use, a Vector to store the data while reading it, or an arraylist

DefaultTableModel 支持 Vector,而不是 ArrayList。

如果您想使用 ArrayList,那么您需要使用自定义 TableModel。

关于java - 填充 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24473238/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com