Thread View: es.comp.lenguajes.java
6 messages
6 total messages
Started by luisfleon
Wed, 13 Feb 2008 22:31
Es posible adicionar un registro al ResultSet sin que actualice la Base de Datos ???
Author: luisfleon
Date: Wed, 13 Feb 2008 22:31
Date: Wed, 13 Feb 2008 22:31
5 lines
1441 bytes
1441 bytes
Amigos .. deseo hacer una consulta ... Es posible adicionar un registro al ResultSet sin que actualice la Base de Datos ??? De ser posible, como se puede hacer eso ??? Muchas Gracias ... Luis
Re: Es posible adicionar un registro al ResultSet sin que actualice la Base de Datos ???
Author: Eduardo Yáñez Parareda
Date: Tue, 19 Feb 2008 11:14
Date: Tue, 19 Feb 2008 11:14
7 lines
1525 bytes
1525 bytes
> Amigos .. deseo hacer una consulta ... Es posible adicionar un > registro al ResultSet sin que actualice la Base de Datos ??? De ser > posible, como se puede hacer eso ??? no creo, �pero qu� sentido tiene?. Si quieres usar el ResultSet como lista de datos, lee el ResultSet, crea unos objetos con la informaci�n le�da, y los guardas en una estructura como un List, Map, etc..., y luego usas esa estructura como quieras.
Re: Es posible adicionar un registro al ResultSet sin que actualice la Base de Datos ???
Author: luisfleon
Date: Thu, 21 Feb 2008 20:14
Date: Thu, 21 Feb 2008 20:14
13 lines
1972 bytes
1972 bytes
On 19 feb, 07:14, Eduardo Yáñez Parareda <eduardo.yanezNOS...@NOSPAMgmail.com> wrote: > > Amigos .. deseo hacer una consulta ... Es posible adicionar un > > registro al ResultSet sin que actualice la Base de Datos ??? De ser > > posible, como se puede hacer eso ??? > > no creo, ¿pero qué sentido tiene?. Si quieres usar el ResultSet como lista de datos, lee el ResultSet, crea unos > objetos con la información leída, y los guardas en una estructura como un List, Map, etc..., y luego usas esa estructura > como quieras. Tienes razon, voy a revisar eso ...
Re: Es posible adicionar un registro al ResultSet sin que actualice la Base de Datos ???
Author: luisfleon
Date: Thu, 21 Feb 2008 20:16
Date: Thu, 21 Feb 2008 20:16
87 lines
4393 bytes
4393 bytes
On 21 feb, 16:14, luisfl...@gmail.com wrote:
> On 19 feb, 07:14, Eduardo Yáñez Parareda
>
> <eduardo.yanezNOS...@NOSPAMgmail.com> wrote:
> > > Amigos .. deseo hacer una consulta ... Es posible adicionar un
> > > registro al ResultSet sin que actualice la Base de Datos ??? De ser
> > > posible, como se puede hacer eso ???
>
> > no creo, ¿pero qué sentido tiene?. Si quieres usar el ResultSet como lista de datos, lee el ResultSet, crea unos
> > objetos con la información leída, y los guardas en una estructura como un List, Map, etc..., y luego usas esa estructura
> > como quieras.
>
> Tienes razon, voy a revisar eso ...
Disculpa tendras posibilidad de revisar este caso y ver si me puedes
ayudar por favor ???
Saludos amigos, quiero hacerles una consulta para ver que me sugieren.
Estoy haciendo una ventana de consulta. Un JTable y JTextField. De
manera que al ir escribiendo en el JTextField, se deberia ir filtrando
la informacion consultada, actualizando el JTable en base a un
ResultSet. Cuando hago la prueba con una tabla de 12 registros
funciona a la perfeccion, el detalle es que cuando la prueba con una
tabla de 40 mil registros, se pone lentisimo. Me gustaria tener su
recomendaciones sobre lo que podria hacer al respecto ... Es correcto
lo que estoy haciendo ? Como podria mejorarlo ? .. Agradezco mucho sus
comentarios. Que utilizo es el siguiente:
// *** JDialgo JBuscar ***
public class JBuscar extends javax.swing.JDialog implements
TableModelListener {
private Connection conexion;
private ResultSet consulta;
private ResultSetTableModel tableModel;
// *** Constructor ***
public JBuscar() {
Class.forName("com.ibm.as400.access.AS400JDBCDrive r");
conexion=DriverManager.getConnection(url,usuarios, clave);
Statement sentencia=CONEXION.createStatement(ResultSet.TYPE_
SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE,
ResultSet.HOLD_CURSORS_OVER_COMMIT);
consulta=sentencia.executeQuery("SELECT CODIGOPAIS, DESCRIPCIONPAIS
FROM PAIS");
tableModel = new ResultSetTableModel(consulta);
initComponents();
}
// *** initComponents ***
private void initComponents() {
...
jTextField1 = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new JTable(tableModel);
...
}
// *** Evento CaretUpdate del jTextField ***
private void jTextField1CaretUpdate(javax.swing.event.CaretEven t evt)
{
if (!this.jTextField1.getText().trim().equals("")) {
consulta = FrmPrincipal.getConexionPrincipal().Consulta("SELE CT
CODIGOPAIS, DESCRIPCIONPAIS FROM PAIS WHERE CODIGOPAIS + " LIKE '%" +
this.jTextField1.getText().trim().toUpperCase() + "%'");
} else {
consulta = FrmPrincipal.getConexionPrincipal().Consulta("SELE CT
CODIGOPAIS, DESCRIPCIONPAIS FROM PAIS");
}
tableModel = new ResultSetTableModel(consulta);
this.jTable1.setModel(tableModel);
}
}
//**************************
Re: Es posible adicionar un registro al ResultSet sin que actualice la Base de Datos ???
Author: Eduardo Yáñez Parareda
Date: Fri, 22 Feb 2008 10:57
Date: Fri, 22 Feb 2008 10:57
41 lines
2579 bytes
2579 bytes
> private Connection conexion;
> private ResultSet consulta;
> private ResultSetTableModel tableModel;
A primera vista, nunca tendr�a un atributo ResultSet. Lee el ResultSet y guarda la info en un List, Set o lo que mejor
te venga.
En segundo lugar, las conexiones a la BD, �en qu� momento las liberas?, en ning�n sitio. Forma correcta de hacer una
consulta (m�s o menos):
public void foo() {
Connection conn = null;
Statement stmt = null;
try {
conn = getConexion()....;
stmt = conn.createStatement....
ResultSet rs = stmt.executeQuery....
// Bucle para recorrer el ResultSet y guardarlo en una estructura....
while(rs.hasNext()) {
.....
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
Si no tienes m�s remedio, usa las conexiones as�, pero yo usar�a pooles de conexiones, o algo como Hibernate para
gestionar todo eso.
Al dejar conexiones y statements abiertos, dejas muchos recursos sin liberar, por lo que te quedas sin memoria...
Re: Es posible adicionar un registro al ResultSet sin que actualice la Base de Datos ???
Author: luisfleon
Date: Fri, 22 Feb 2008 19:59
Date: Fri, 22 Feb 2008 19:59
54 lines
3307 bytes
3307 bytes
On 22 feb, 04:57, Eduardo Yáñez Parareda
<eduardo.yanezNOS...@NOSPAMgmail.com> wrote:
> > private Connection conexion;
> > private ResultSet consulta;
> > private ResultSetTableModel tableModel;
>
> A primera vista, nunca tendría un atributo ResultSet. Lee el ResultSet y guarda la info en un List, Set o lo que mejor
> te venga.
>
> En segundo lugar, las conexiones a la BD, ¿en qué momento las liberas?, en ningún sitio. Forma correcta de hacer una
> consulta (más o menos):
>
> public void foo() {
> Connection conn = null;
> Statement stmt = null;
> try {
> conn = getConexion()....;
> stmt = conn.createStatement....
> ResultSet rs = stmt.executeQuery....
> // Bucle para recorrer el ResultSet y guardarlo en una estructura....
> while(rs.hasNext()) {
> .....
> }
> } catch (Exception ex) {
> ex.printStackTrace();
> } finally {
> try {
> if (stmt != null) {
> stmt.close();
> }
> if (conn != null) {
> conn.close();
> }
> } catch (SQLException ex) {
> ex.printStackTrace();
> }
> }
>
> }
>
> Si no tienes más remedio, usa las conexiones así, pero yo usaría pooles de conexiones, o algo como Hibernate para
> gestionar todo eso.
>
> Al dejar conexiones y statements abiertos, dejas muchos recursos sin liberar, por lo que te quedas sin memoria...
Muchas gracias por tus sugerencia, me parece muy importante lo que me
indicas lo tomare muy en cuenta.
Saludos
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads