Java - hola, me pueden ayudar con un error que me aparce

 
Vista:
sin imagen de perfil

hola, me pueden ayudar con un error que me aparce

Publicado por abner (2 intervenciones) el 18/11/2018 16:58:21
hola, disculpen tengo un problema con una codigo que estoy programando si me pudieran ayudar por favor.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Connection c = null;
 
try{
Class.forName("org.postgresql.Driver");
c = DriverManager.getConnection("jdbc:postgresql://localhost:5432/ejemplo","postgres", "holakehace");
PreparedStatement ps = c.prepareStatement("SELECT * FROM personas WHERE patente");
ps.setString(1,txtpatente.getText());
 
ResultSet rs = ps.executeQuery();
 
if(rs.next()){
txtpatente.setText(rs.getString("patente"));
jTextField2.setText(rs.getString("modelo"));
jTextField3.setText(rs.getString("marca"));
jTextField4.setText(rs.getString("año"));
jTextField5.setText(rs.getString("permiso"));
 
}else{
JOptionPane.showMessageDialog(null, "La patente ingresada no se encuentra \n ingrese una");
}
} catch(Exception e){
System.err.println(e);
}



tengo ese codigo con un botón de buscar esa información en una base de datos, y al momento presionarlo me da el siguiente error:
org.postgresql.util.PSQLException: El índice de la columna está fuera de rango: 1, número de columnas: 0.


si alguien me pudiera ayudar por favor. de ante mano gracias.
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

hola, me pueden ayudar con un error que me aparce

Publicado por ernesto (7 intervenciones) el 18/11/2018 21:14:32
Hola

El error este en la consulta sql.

1
PreparedStatement ps = c.prepareStatement("SELECT * FROM personas WHERE patente");

La cláusula WHERE se utiliza para seleccionar aquellos registros que cumplen una o más condiciones. Su sintaxis es:


WHERE <search_condition>

Selecciona aquellas filas que cumplen la condición especificada por esta orden. La condición de búsqueda o de selección de registros se puede conformar utilizando columnas de la tabla, constantes, funciones y/o expresiones y operadores.


Ejemplos:

1
2
3
4
5
SELECT Apellidos, Salario FROM Empleados WHERE Salario > 21000;
 
    SELECT Id_Producto, Existencias FROM Productos WHERE Existencias <= Nuevo_Pedido;
 
    SELECT Apellidos, Nombre FROM Empleados WHERE Apellidos = ‘King’;
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

hola

Publicado por Abnerx (2 intervenciones) el 18/11/2018 21:37:26
y como puedo igualar la condición a un jTextField en el cual escribió el usuario?

(SELECT * FROM personas WHERE patente == jTextField) como lo hago??
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
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

hola

Publicado por Billy Joel (878 intervenciones) el 19/11/2018 16:11:09
Así
1
PreparedStatement ps = c.prepareStatement("SELECT * FROM personas WHERE patente = ?");

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

hola

Publicado por ernesto (7 intervenciones) el 19/11/2018 22:46:06
Para que le coloques la condición a tu sentencia sql.
Primero obtienes el valor de campo de texto con el método geText() y lo almacenas en una variable:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//Obteniendo el texto introducido en JTextField y almacenandolo en una variable
String valor = nombreDeTuTextfield.getText();
Connection c = null;
try{
Class.forName("org.postgresql.Driver");
c = DriverManager.getConnection("jdbc:postgresql://localhost:5432/ejemplo","postgres", "holakehace");
PreparedStatement ps = c.prepareStatement("SELECT * FROM personas WHERE patente= " + valor);
ResultSet rs = ps.executeQuery();
if(rs.next()){
txtpatente.setText(rs.getString("patente"));
 
jTextField2.setText(rs.getString("modelo"));
 
jTextField3.setText(rs.getString("marca"));
 
jTextField4.setText(rs.getString("año"));
 
jTextField5.setText(rs.getString("permiso"));
 
}else{
JOptionPane.showMessageDialog(null, "La patente ingresada no se encuentra \n ingrese una");
}
} catch(Exception e){
System.err.println(e);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

hola

Publicado por Yamil Bracho (2316 intervenciones) el 19/11/2018 23:25:15
Como recomendacion en vez de concatenar valores a un string para formar la sentencia sql a ejecutar, usa parametros:

1
2
3
4
PreparedStatement ps = c.prepareStatement("SELECT * FROM personas WHERE patente= ?");
ps.setString(1, valor);
ResultSet rs = ps.executeQuery();
...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar