Java - Error con PreparedStatement (sql);

 
Vista:
sin imagen de perfil

Error con PreparedStatement (sql);

Publicado por Carolina (5 intervenciones) el 17/03/2017 14:36:05
1
2
3
4
5
6
7
8
9
10
11
12
13
try {
    String sql= "INSERT INTO t_cliente (nom_clien, ape_clien, ced_clien, sexo, fecha,tel_clien) VALUES ('"+nombre.getText()+"','"+apellido.getText()+"','"+cedula.getText()+"','"+sexo.getText()+"','"+fecha.getText()+"','"+telefono.getText()+ "')";
    PreparedStatement pst = cn.prepareStatement(sql);
 
    int n;
    n= pst.executeUpdate();
    if (n>0){
 
    }
} catch(SQLException e){
    System.out.print (e.getMessage());
 
}
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

Error con PreparedStatement (sql);

Publicado por YYanes (144 intervenciones) el 17/03/2017 14:54:17
Hola amigo:

Le recomiendo que no concatene la cadena String hasta lograr la cadena SQL completa que desea ejecutar. Lo ideal es pasarle los parámetros uno a uno para irlos parseando y que vayan tomando un formato correcto (eso es lo que te debe estar sucediendo, debes estar entrando en un conflicto de formatos). Mira este ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* --------- En una clase ADO declarada para todas las transacciones a la base de datos, creamos un método "AddEmpresa" y le pasamos por parámetro un Objeto de tipo "Empresa" ------- */
 
    public void AddEmpresa(Empresa empresa)
    {
         String consulta = " insert into Empresa(Nombre, Activa, Codigo) values (?, ?, ?); ";
         try {
            PreparedStatement pre = conexion.prepareStatement(consulta);
            pre.setString(1, empresa.GetNombre());  //--- le pasamos el valor del 1er parámetro en formato String
            pre.setInt(2, empresa.GetActiva());         //--- le pasamos el valor del 2do parámetro en formato Enteger
            pre.setString(3, empresa.GetCodigo());   //--- le pasamos el valor del 3er parámetro en formato String
            pre.execute();
            JOptionPane.showMessageDialog(null,"Se ha agregado la nueva empresa.","Inserción de datos",1);
         }
         catch (SQLException e){
            System.out.print (e.getMessage());
         }
    }
 
//--------------------------

Un GigaSaludo!!!
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

Error con PreparedStatement (sql);

Publicado por YYanes (144 intervenciones) el 17/03/2017 15:07:26
Olvidé comentar:

En mi base de datos, los atributos de mi tabla Empresa son: Nombre (VarChar), Activa (int), Codigo (VarChar), que coinciden precisamente con la tipología que devuelven los métodos empresa.GetNombre(), empresa.GetActiva() y empresa.GetCodigo() respectivamente.

Por eso es que a la variable "PreparedStatement pre" hay que pasarle los atributos en ese orden (de acuerdo con la sentencia SQL), y con esa tipología:
1
2
3
pre.setString(1, unString_paraPrimerAtributo);
pre.setInt(2, unEntero_paraSegundoAtributo);
pre.setString(3, otroString_paraTercerAtributo);


De esa manera su código será más sencillo, más legible, y más seguro. ¿"Seguro" por qué?, pues al pasarle un valor con caracteres extraños (como las comillas simples) al concatenar tu String habría problemas, por ejemplo:

1
2
3
String parte1 = "-Primera parte ";
String parte 2 = "-Parte con 'comillas'  simples ";
String parte3 = " -parte final";

Al decir:

1
String final = parte1 + parte2 + parte3;

quedarían comillas simples en la cadena, lo cual es un problema para una sentencia SQL:

final = "-Primera parte -Parte con 'comillas' simples -parte final"
¿Comprende el riesgo? Así es como se hacen las "inyecciones SQL".
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

Error con PreparedStatement (sql);

Publicado por Carolina (5 intervenciones) el 17/03/2017 18:54:52
Gracias, de casualidad tienes un Sistema de Facturacion hecho del cual me pueda guiar, te lo agradeceria mucho ya que es un proyecto que tengo que entregar el 22 de este mes
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

Error con PreparedStatement (sql);

Publicado por YYanes (144 intervenciones) el 21/03/2017 14:47:06
No, lo siento mucho, de verdad que si lo tuviera se lo daría. Mucha suerte con la entrega de su trabajo, espero le dé tiempo terminarlo.
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

Error con PreparedStatement (sql);

Publicado por Jackob Levi (1 intervención) el 16/09/2021 08:05:16
Buenos dias, una pregunta ahora a mi me arroja un error al querer escribir el codigo asi..

public void insertarDatos(){

try{
"
String SQL="insert into alumnos (Nombres,Apellidos,Materia,Calficacion,Estado) values(?,?,?,?,?)";

PreparedStatement pst=con.prepareStatement(SQL);

pst.setString(1,JTFNombre.getText());
pst.setString(1,JTFApellidos.getText());


}catch(Exception e){
}
}

y el NetBeans me lo corrige y deja de marcar el error solo si acepto que lo corrija así....

public void insertarDatos(){

try{
"
String SQL="insert into alumnos (Nombres,Apellidos,Materia,Calficacion,Estado) values(?,?,?,?,?)";

PreparedStatement pst=(PreparedStatement)con.prepareStatement(SQL);

pst.setString(1,JTFNombre.getText());
pst.setString(1,JTFApellidos.getText());


}catch(Exception e){
}
}

mi duda es si va a funcionar del mismo modo? disculpa no soy experto y estoy usando una versión de JDK 16 y NetBeans 12, te agradecería mucho resolvieras mi duda, buen día
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