Java - Problems de sentencias

 
Vista:

Problems de sentencias

Publicado por Ger (39 intervenciones) el 27/12/2004 11:06:09
Hola, bueno, no se si es el foro mas indicado, pero veran, tengo un problema ejecutando una simple sentencia SQL en un servlet.
La sentencia es tan simple como:
select id_name from user_table where id_name=+user_login
El codigo entero es:

String query="select id_name from user_table where id_name="+user_login;
ResultSet rs = s.executeQuery(query);

donde user_login es una variable de tipo String. Pues bien, el error me lo da el servidor donde se ejecuta el servlet, que dice:

java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid Column name 'clanguil'.

Aqui donde pone clanguil es el resultado del contenido de la variable user_login.
Alguien sabe porque me puede dar este error??
Muchas 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
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

RE:Problems de sentencias

Publicado por Yamil Bracho (2315 intervenciones) el 27/12/2004 15:05:26
Cuandos e trata de variables String debes encerrrarlas entre apostrofes. Te queda entonces:

String query=\"select id_name from user_table where id_name=\'\"+ user_login + \"\'\";
ResultSet rs = s.executeQuery(query);

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:Problems de sentencias

Publicado por chuidiang (532 intervenciones) el 27/12/2004 15:11:36
En lenguaje sql, si pones

select ... where id_name=clanguil

considera que clanguil es el nombre de una columna de una tabla. Para que entienda que es una cadena de texto (un valor del campo, no el nombre de un campo), debes ponerlo entre comillas

select ... where id_name='clanguil'

Para ello, debes hacer lo que te indica yamil bracho.

Es lo mismo que en java, por ejemplo, con System.out.println ()

Sytem.out.println (cosa);

entiende que cosa es una variable o clase que debe imprimir, mientras que

Syste.out.println ("cosa");

escribe literalmente "cosa".

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:Problems de sentencias

Publicado por Ger (39 intervenciones) el 27/12/2004 15:32:22
Ahora en las sentencias tengo lo siguiente modificado tal y como me has dicho:

String query="select id_name from user_table where id_name=' "+user_login+"' ";
ResultSet rs = s.executeQuery(query);

Pero ahora me da otro error. Dice:

java.sql.SQLException: [Microsoft][Controlador ODBC] Estado del cursor no valido
A que se debe este otro error y como puedo solucionarlo?

Nota para chuidiang: user_login es una variable y es lo que quiero que sea, no me interesa que sea el literal pues lo que quiero es que lo compare con el contenido de esta variable.

Muchas gracias
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:Problems de sentencias

Publicado por chuidiang (532 intervenciones) el 28/12/2004 09:07:09
Hola:

Supongo que user_login es una variable en java, pero en la sentencia sql debe ser el valor literal del contenido de esa variable java o bien el nombre de otra tabla.

El error, ¿te da al intentar leer el resultado?. El resultset, antes de leerlo hay que ponerlo en la primera posición. Prueba rs.next() antes de leer nada, o bien rs.first() para empezar a leer desde el principio

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:Problems de sentencias

Publicado por Gerard (39 intervenciones) el 28/12/2004 09:31:01
Acabo de probar de usar rs.next() y luego rs.first(), y me cambia el error, ahora me da una excepción del servlet. Dice:

500 Servlet Exception

java.lang.NullPointerException
at k_test.servlet.identify.doPost(identify.java:41)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:96)
at com.caucho.server.http.Invocation.service(Invocation.java:315)
at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:135)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:246)
at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:164)
at com.caucho.server.TcpConnection.run(TcpConnection.java:139)
at java.lang.Thread.run(Thread.java:534)

Ya no se cual debe de ser el problema.
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