Foros del Web » Programación para mayores de 30 ;) » Java »

como pasar un String a una base de datos

Estas en el tema de como pasar un String a una base de datos en el foro de Java en Foros del Web. Hola a todos en estos momentos tengo un problemita y es que quiero guardar en una base de datos algo que tengo almacenado en un ...
  #1 (permalink)  
Antiguo 23/12/2005, 07:56
 
Fecha de Ingreso: diciembre-2005
Ubicación: Venezuela
Mensajes: 19
Antigüedad: 18 años, 5 meses
Puntos: 1
como pasar un String a una base de datos

Hola a todos en estos momentos tengo un problemita y es que quiero guardar en una base de datos algo que tengo almacenado en un string, pero no se puede.

solo e podido hacer lo siguiente:
por ejemplo:
1) statment.execute("insert into usuarios (nombre) values ('hola'");
pero en realidad me gustaria aprender a hacer algo como asi:

2) String ver = new String("hola ");
statment.execute("insert into usuarios (nombre) values (ver");


en fin que metodo, interfas, clase, puedo utilizar para porder realizar lo planteado en el segundo punto.

muchas gracias a todos.
  #2 (permalink)  
Antiguo 23/12/2005, 12:03
 
Fecha de Ingreso: diciembre-2005
Ubicación: Madrid, España
Mensajes: 154
Antigüedad: 18 años, 4 meses
Puntos: 2
Antes de nada, no uses execute(String), sino executeUpdate(String).

En cuanto a pasar la variable String "ver" como parámetro al Insert, sólo tienes que hacer lo siguiente con un Statement corriente:

Código:
String sql = "INSERT INTO Usuarios (Nombre) VALUES ('" + ver + "')";
stmt.executeUpdate(sql);
También podrías usar un preparedStatement, pero normalmente es más lento cuando insertas un único valor.

Saludos
  #3 (permalink)  
Antiguo 23/12/2005, 12:22
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Es mejor usar PreparedStatement para prevenir problemas al pasar los parametros, sobretodo al hacer los select, conocido como SQL-Injection, ya que puede representar un peligro para la seguridad.

Como ejemplo, si usas ese executeUpdate y le pasas como parametro ver = "L'Hopital", la sentencia falla. Y en realidad no deberia ser mas lento, puesto que al fin y al cabo al hacer executeUpdate, la base de datos tendra que hacer el trabajo de "precompilar" el SQL y ver que es correcto antes de ejecutarlo, asi que si el driver esta bien hecho, no deberia haber mucha diferencia. Y en todo caso, yo cambio unos milisegundos por mayor seguridad y no tener que tratar los parametros sin dudarlo .
  #4 (permalink)  
Antiguo 28/12/2005, 09:49
 
Fecha de Ingreso: diciembre-2005
Ubicación: Madrid, España
Mensajes: 154
Antigüedad: 18 años, 4 meses
Puntos: 2
Estoy de acuerdo en tus comentarios en cuanto a seguridad y caracteres de escape (aunque estos últimos son muy fáciles de evitar sin necesidad de un preparedStatement). En todo caso te cito una referencia que trata este tema: Java Programming with Oracle JDBC, Donald Bales, O'Reilly:

Cita:
A Prepared Statement Versus a Statement

It's a popular belief that using a PreparedStatement object to execute a SQL statement is faster than using a Statement object. That's because a PreparedStatement object makes only one round trip to the database to get its data type information when it is first prepared, while a Statement object must make an extra round trip to the database to get its metadata each time
it is executed. So the simple conclusion is that on the second and subsequent executions of a prepared statement, it is 50% faster than a statement. However, due to the overhead of using a PreparedStatement object, it takes at least 65 executions before a PreparedStatement object is faster than a Statement object. For a small number of executions, a PreparedStatement object is not faster than a Statement object.

However, that doesn't mean you shouldn't use a PreparedStatement. On the contrary, if you use the batch capabilities of a PreparedStatement object to execute the same SQL statement many times, it is significantly faster than a Statement object. Oracle's implementation of JDBC implements batching only for PreparedStatement objects, not for Statement objects.

Prepared statements are less dynamic than their statement counterparts; you can build a SQL statement dynamically at runtime, but doing so using a prepared statement requires more coding, and the code required is fairly specific to the task. Prepared statements can, however, greatly simplify formulating your SQL statements, because you don't have to worry about date formats, number formats, or tick characters in strings. And prepared statements allow you to insert or update streaming data types.
The advantages of using prepared statements are that they allow you to improve efficiency by batching, utilize the SQL statement cache in the database to increase its efficiency, simplify your coding, and allow you to insert or update streaming data types.
  #5 (permalink)  
Antiguo 28/12/2005, 16:37
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Totalmente de acuerdo, como ya dije, en que un executeStatement es mas rapido que un PreparedStatement, pero la información que citas es unicamente relativa a Oracle y es totalmente incompleta. Sin datos para respaldarlo, lo mismo podia haber dicho 65, que 66, que 250... teniendo en cuenta que el tiempo de ejecucion de ambas soluciones siendo funcionalmente equivalentes depende de muchas cosas, decir un numero exacto me parece poco serio.

Ademas, tampoco tiene en cuenta el coste en el servidor de ejecutar un tipo u otro de sentencia, que no es el mismo, asi que su análisis me parece además incompleto.

Pero bueno, cada uno usa lo que le parece más apropiado.

Un saludo
  #6 (permalink)  
Antiguo 01/01/2006, 18:28
 
Fecha de Ingreso: diciembre-2005
Ubicación: Madrid, España
Mensajes: 154
Antigüedad: 18 años, 4 meses
Puntos: 2
Bueno Green, no pretendía copiarte los anexos de demostración porque para eso los libros llevan Copyright

En cualquier caso sí está aplicado a Oracle, aunque es de preveer que el resultado sea extrapolable en muchos casos. Sea lo que sea, que cada uno use lo que más apropiado le parezca.

Saludos
  #7 (permalink)  
Antiguo 02/01/2006, 03:54
 
Fecha de Ingreso: agosto-2005
Mensajes: 142
Antigüedad: 18 años, 8 meses
Puntos: 0
Yo utilizo los prepared statement para hacer todo tipo de consultas, quizas en un principio te parezcan un poco mas "molestos" de hacer que las consultas tradionales pero en cuanto te acostumbres, veras que son de gran utilidad.

Aqui te pongo un ejemplo de una actualizacion.

while...

String updatea="update PERSONA_CARGO set ID_RAZON_SOCIAL=? WHERE ID_RAZON_SOCIAL=?";

PreparedStatement pstm = conn.prepareStatement(updatea);
pstm.setInt(1, idrazon);
pstm.setInt(2, idempresa);
pstm.execute();
pstm.close();

...end while

Te recomiendo que busques un post que inicié yo preguntado por este tipo de cosas en el que encontrarás cosillas de gran ayuda (por supuesto ninguna de ellas posteda por mi, sino por gente que sabe mucho mas que yo y que desde aquí les agradezco toda su ayuda). Se titulaba JAVA y SQL.

Feliz Año Nuevo a todos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:56.