Java - Java y oracle...limitacion sentencia insert?

 
Vista:

Java y oracle...limitacion sentencia insert?

Publicado por ferrp80 (2 intervenciones) el 31/05/2006 23:11:46
A ver si alguien me puede decir q es lo que pasa...

He hecho una aplicacion de consola en Java, que lo que hace es leer solo 4 campos de una tabla, e inserta en otra base de datos ese registro que lee.

Tengo 625 registros en una tabla en la conexion connSip.
Lo que hago es que leo un registro, y luego hago un insert en la otra conexion, connExtranet.

Lo que sucede es que una vez que se han procesado todos los registros de la conexion connSip, me muestra el mensaje...

625 filas procesadas.
300 filas insertadas.

¿Alguna idea de por que me lee todas las filas pero solo me inserta 300 como maximo?...¿sera alguna limitacion de oracle?

El codigo es...

String cnifdnic,nombre,apellido1,apellido2;
int filas=0,inserciones=0;

try{
Conexion connSip=new Conexion("10.234.254.189","1521","Seg","SIPIRIS","1234 ");
Conexion connExtranet=new Conexion("10.234.254.186","1521","Extranet","EXTRA NET","1234");

ResultSet result=connSip.DevuelveDatos();

while(result.next())
{
cnifdnic=result.getString("CNIFDNIC");
nombre=result.getString("NOMBRE");
apellido1=result.getString("APELLIDO1");
apellido2=result.getString("APELLIDO2");

System.out.println(nombre+" "+apellido1+" "+apellido2);
connExtranet.InsertaDatos(cnifdnic,nombre,apellido 1,apellido2);
filas++;
}
inserciones=connExtranet.estado();
connSip.CerrarConexion();
connExtranet.CerrarConexion();
}
catch(SQLException ex)
{
}

System.out.println(filas+" filas procesadas.");
System.out.println(inserciones+" filas insertadas.");
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Java y oracle...limitacion sentencia insert?

Publicado por manru (161 intervenciones) el 01/06/2006 02:54:39
Hola
no hay ningun problema con Oracle... Llevo tiempo trabajando con esa base de datos...

Deberias verificar el codigo de Conexion connExtranet para saber porque el método
connExtranet.estado(); te devuelve 300

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Java y oracle...limitacion sentencia insert?

Publicado por chuidiang (950 intervenciones) el 01/06/2006 05:01:07
Hola:

Efectivamente, lo mejor es mirar en el metodo de inserción a ver si salta alguna excepcion y por qué.

Otra cosa que se me ocurre, pero que depende de como esté definida la base de datos, es que en la tabla de la connExtranet se hayan puesto algunas "constraints" que no cumplas y haga que fallen algunas inserciones. Por ejemplo, un apellido más largo en la tabla original de lo que admite la connExtranet, que hay nif repetidos que una tabla admite y la otra no, etc.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Java y oracle...limitacion sentencia insert?

Publicado por ferrp80 (2 intervenciones) el 01/06/2006 09:12:24
Ya tengo localizado y solucionado el error...

ORA-01000: número máximo de cursores abiertos excedido

Al final lo que hize fue...meter el conexion.createStatement() dentro del constructor de la conexion, y retocar el codigo donde se cierrn resultsets, statements y connections por si habia alguno que se quedaba abierto.

Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Java y oracle...limitacion sentencia insert?

Publicado por LUIS CARLOS (2 intervenciones) el 02/09/2009 18:36:11
yo tenia el mismo problema lo solucione con este estilo de programacion
Ejemplo de la interfaz PreparedStatement
El siguiente ejemplo de código muestra cómo se insertan datos en la base de datos y cómo se consulta la base de datos:

import java.sql.*;
import java.util.Properties;

public class PreparedStatementExample {

public static void main(java.lang.String[] args)
{
// Sugerencia: estos se cargan a partir de un objeto de propiedades.
String DRIVER = "com.ibm.db2.jdbc.app.DB2Driver";
String URL = "jdbc:db2://*local";

// Se registra el controlador JDBC nativo. Si no se puede
// registrar el controlador, la prueba no puede continuar.
try {
Class.forName(DRIVER);
} catch (Exception e) {
System.out.println("Imposible registrar el controlador.");
System.out.println(e.getMessage());
System.exit(1);
}

Connection c = null;
Statement s = null;

// 1) En primer lugar, este programa maneja la tarea de crear la tabla que
// más adelante utilizarán las sentencias preparadas.
try {
// Se crean las propiedades de la conexión
Properties properties = new Properties ();
properties.put ("user", "userid");
properties.put ("password", "password");

// Se conecta con la base de datos de iSeries 400 local
c = DriverManager.getConnection(URL, properties);

// Se crea un objeto Statement.
s = c.createStatement();
// Se suprime la tabla de prueba, si existe. Observe que
// en todo este ejemplo se presupone que la colección
// MYLIBRARY existe en el sistema.
try {
s.executeUpdate("DROP TABLE MYLIBRARY.MYTABLE");
} catch (SQLException e) {
// Se continúa simplemente... es probable que la tabla no exista.
}

// Se ejecuta una sentencia SQL que crea una tabla en la base de datos.
s.executeUpdate("CREATE TABLE MYLIBRARY.MYTABLE (NAME VARCHAR(20), ID INTEGER)");

} catch (SQLException sqle) {
System.out.println("El proceso de base de datos ha fallado.");
System.out.println("Razón: " + sqle.getMessage());
} finally {
// Se cierran los recursos de base de datos.
try {
if (s != null) {
s.close();
}
} catch (SQLException e) {
System.out.println("El borrado no ha podido cerrar Statement.");
}
}


// 2) En segundo lugar, este programa emplea una sentencia preparada para insertar muchas
// filas en la base de datos.
PreparedStatement ps = null;
String[] nameArray = {"Rich", "Fred", "Mark", "Scott", "Jason",
"John", "Jessica", "Blair", "Erica", "Barb"};
try {
// Se crea un objeto PreparedStatement que se empleará para insertar datos en la
// tabla.
ps = c.prepareStatement("INSERT INTO MYLIBRARY.MYTABLE (NAME, ID) VALUES (?, ?)");

for (int i = 0; i < nameArray.length; i++) {
ps.setString(1, nameArray[i]); // Se establece el nombre a partir de nuestra matriz.
ps.setInt(2, i+1); // Se establece el ID.
ps.executeUpdate();
}

} catch (SQLException sqle) {
System.out.println("El proceso de base de datos ha fallado.");
System.out.println("Razón: " + sqle.getMessage());
} finally {
// Se cierran los recursos de base de datos.
try {
if (ps != null) {
ps.close();
}
} catch (SQLException e) {
System.out.println("El borrado no ha podido cerrar Statement.");
}
}

// 3) Finalmente, empleamos una sentencia preparada para consultar la tabla
// de base de datos que hemos creado y para devolver datos de ella. En
// este ejemplo, el parámetro utilizado se ha establecido de manera arbitraria
// en 5, lo que implica devolver todas las filas en las que el campo ID sea
// igual o menor que 5.
try {
ps = c.prepareStatement("SELECT * FROM MYLIBRARY.MYTABLE " +
"WHERE ID <= ?");

ps.setInt(1, 5);

// Se ejecuta una consulta SQL en la tabla.
ResultSet rs = ps.executeQuery();
// Se visualizan todos los datos de la tabla.
while (rs.next()) {
System.out.println("El empleado " + rs.getString(1) + " tiene el ID " + rs.getInt(2));
}

} catch (SQLException sqle) {
System.out.println("El proceso de base de datos ha fallado.");
System.out.println("Razón: " + sqle.getMessage());
} finally {
// Se cierran los recursos de base de datos.
try {
if (ps != null) {
ps.close();
}
} catch (SQLException e) {
System.out.println("El borrado no ha podido cerrar Statement.");
}

try {
if (c != null) {
c.close();
}
} catch (SQLException e) {
System.out.println("El borrado no ha podido cerrar Connection.");
}

}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar