Java ResustSet Columna '<column_name>' no encontrado -- java campo con exception campo con resultset camp Relacionados El problema

Java ResultSet Column '<column_name>' not found


5
vote

problema

Español

Tengo un resultado que estoy tirando de una base de datos que contiene la columna en cuestión. Lo sé porque cuando bucle a través de los registros, también bucle a través de las columnas:

  ResultSetMetaData rsmd = rs.getMetaData(); int numColumns = rsmd.getColumnCount();  try {      while(rs.next()) {                JSONObject obj = new JSONObject();                                   for (int i=1; i<numColumns+1; i++) {                                 String column_name = rsmd.getColumnName(i);             System.out.println(Time.formatDate(System.currentTimeMillis(),  true)+" - [ResultSetConverter.convert] column_name ["+column_name+"]");              ...              // line where exception is thrown             obj.put(column_name, rs.getString(column_name)+"");           }      }  } catch (Exception e) {     System.out.println(Time.formatDate(System.currentTimeMillis(),  true)+" - [ResultSetConverter.convert] Exception: "+e.getMessage());             }   

Al hacerlo, estoy imprimiendo en la consola los nombres de las columnas para verificar la existencia:

  4/1/2015 01:18 PM - [ResultSetConverter.convert] column_name [_id] 4/1/2015 01:18 PM - [ResultSetConverter.convert] column_name [image] 4/1/2015 01:18 PM - [ResultSetConverter.convert] column_name [company_code] 4/1/2015 01:18 PM - [ResultSetConverter.convert] Exception: Column 'company_code' not found.   

Como puede ver, justo después de imprimir la columna company_code ¡Se encuentra la excepción!

Los datos son de MySQL y la definición de campo es:

  `company_code` varchar(45) DEFAULT NULL,   

STICK TRACE:

  java.sql.SQLException: Column 'company_code' not found.     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)     at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1163)     at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5729)     at com.sequon.core.ResultSetConverter.convert(ResultSetConverter.java:96)     at com.sequon.core.Database.getDevicesForMap(Database.java:1360)     at com.sequon.api.Data.getDevices(Data.java:751)     at com.sequon.api.Data.getData(Data.java:354)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)     at java.lang.reflect.Method.invoke(Method.java:597)     at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)     at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)     at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)     at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)     at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)     at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)     at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)     at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1483)     at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1414)     at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1363)     at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1353)     at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:414)     at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)     at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708)     at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)     at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)     at java.lang.Thread.run(Thread.java:695)   

¿Qué no estoy entiendo?

Original en ingles

I have a ResultSet I am pulling from a database that contains the column in question. I know this because when I loop through the records, I also loop through the columns:

ResultSetMetaData rsmd = rs.getMetaData(); int numColumns = rsmd.getColumnCount();  try {      while(rs.next()) {                JSONObject obj = new JSONObject();                                   for (int i=1; i<numColumns+1; i++) {                                 String column_name = rsmd.getColumnName(i);             System.out.println(Time.formatDate(System.currentTimeMillis(),  true)+" - [ResultSetConverter.convert] column_name ["+column_name+"]");              ...              // line where exception is thrown             obj.put(column_name, rs.getString(column_name)+"");           }      }  } catch (Exception e) {     System.out.println(Time.formatDate(System.currentTimeMillis(),  true)+" - [ResultSetConverter.convert] Exception: "+e.getMessage());             } 

In doing so, I am printing into the console the column names to verify existence:

4/1/2015 01:18 PM - [ResultSetConverter.convert] column_name [_id] 4/1/2015 01:18 PM - [ResultSetConverter.convert] column_name [image] 4/1/2015 01:18 PM - [ResultSetConverter.convert] column_name [company_code] 4/1/2015 01:18 PM - [ResultSetConverter.convert] Exception: Column 'company_code' not found. 

As you can see, right after I print the column company_code the exception is encountered!

The data is from MySQL and the field definition is:

`company_code` varchar(45) DEFAULT NULL, 

Stack Trace:

java.sql.SQLException: Column 'company_code' not found.     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)     at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1163)     at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5729)     at com.sequon.core.ResultSetConverter.convert(ResultSetConverter.java:96)     at com.sequon.core.Database.getDevicesForMap(Database.java:1360)     at com.sequon.api.Data.getDevices(Data.java:751)     at com.sequon.api.Data.getData(Data.java:354)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)     at java.lang.reflect.Method.invoke(Method.java:597)     at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)     at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)     at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)     at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)     at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)     at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)     at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)     at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1483)     at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1414)     at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1363)     at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1353)     at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:414)     at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)     at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708)     at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)     at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)     at java.lang.Thread.run(Thread.java:695) 

What am I not understanding?

        
         
         

Lista de respuestas

3
 
vote
vote
La mejor respuesta
 

Aquí está la definición de Javadoc para el método resustset.getstring

getstring

cadena getstring (columna de cadena) arroja SQLEXception

Recupera el valor de la columna designada en la fila actual de este objeto resultset como una cadena en el lenguaje de programación de Java.

parámetros:

columnlabel: la etiqueta para la columna especificada con el sql como cláusula . Si el SQL como cláusula no se especificó , entonces la etiqueta es el nombre de la columna

devoluciones: el valor de la columna; Si el valor es SQL NULL, el valor devuelto es NULL

lanza:

SQLEXception: si la columnalabel no es válida; Si se produce un error de acceso a la base de datos o este método se llama en un conjunto de resultados cerrado

Por lo tanto, es posible que deba ver en su solicitud de SQL y asegúrese de que no usó una cláusula SQL AS, de lo contrario, use la etiqueta suministrada en lugar del nombre de la columna

 

Here is the Javadoc definition for ResultSet.getString method

getString

String getString(String columnLabel) throws SQLException

Retrieves the value of the designated column in the current row of this ResultSet object as a String in the Java programming language.

Parameters:

columnLabel - the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column

Returns: the column value; if the value is SQL NULL, the value returned is null

Throws:

SQLException - if the columnLabel is not valid; if a database access error occurs or this method is called on a closed result set

So you may need to see on your SQL request and be sure that you did not use a SQL AS clause otherwise you use the supplied label instead of the column name

 
 
 
 
0
 
vote

Si su atributo de la empresa_code no es una cadena intente usar un método diferente para obtener el valor de la columna.

Si la empresa_code es un tipo de entero, intenta esto:

  rs.getInt(column_name)   

o usted puede getObject método

  rs.getObject(column_name)   
 

If your company_code attribute is not a string try using a different method for get the column value.

If company_code is an integer type try this:

rs.getInt(column_name) 

Or you can you getObject method

rs.getObject(column_name) 
 
 

Relacionados problema

1  ¿Cómo manejar si una consulta de SQL no encuentra nada? Usando resideset en java  ( How to handle if a sql query finds nothing using resultset in java ) 
He encontrado algunas respuestas a esta pregunta en este sitio, pero no he podido aplicarlo correctamente. Estoy tratando de tomar la entrada de un usuario pa...

0  Selección de un campo particular de una tabla?  ( Selecting a particular field from a table ) 
Estoy usando la siguiente consulta SQL: Select * from table1 as t1, table2 as t2 where t1.id = t2.col Pero mi problema es que ambas tablas tienen campo...

-1  ResultSet devuelve solo la última fila en Jtable  ( Resultset returns only last row into jtable ) 
He hecho suficientes búsquedas para resolver mi problema que he hecho en parte, pero hay este error que sigue molestando. Estoy tratando de buscar datos de un...

6  Cómo convertir un objeto resultset a una salida de formato JSON  ( How to convert a resultset object to a json format output ) 
Tengo un resultado después de disparar una consulta. Por favor, avíseme cómo puedo convertirlo en una salida JSON en JSP. En la segunda etapa, asumamos que ...

-1  Cómo almacenar los resultados en la cadena para llamar al servlet  ( How to store resultset in string to be call in servlet ) 
Cómo almacenar LEIVEAMP que he llamado en la consulta seleccionada para almacenar en el nivel. Por lo tanto, puedo llamar dentro de mi loginservlet. ...

0  Necesidad de convertir un resultado establecido en alguna estructura de datos  ( Need to convert a result set to some data structure ) 
Tengo un Java.Sql.ResultSet como este: ============================= | colA | ColB | ColC | ColD | ============================= | 1 | 1 | 1 | 1...

0  Datos de almacenamiento en caché en JDBC  ( Caching data on jdbc ) 
He creado una aplicación de base de datos utilizando Java Swing. Mi programa recupera los datos de la base de datos cada vez que llamo a la clase de búsqueda....

27  ¿Cómo obtiene valores de todas las columnas usando ResultSet.GetBinaryStream () en JDBC?  ( How do you get values from all columns using resultset getbinarystream in jdbc ) 
¿Cómo puedo escribir una tabla completa a un archivo plano (archivo de texto) usando JDBC? Hasta ahora he intentado lo siguiente: Statement statement = con...

45  Tratamiento de un resultado de SQL como un arroyo Scala  ( Treating an sql resultset like a scala stream ) 
Cuando consulto una base de datos y recibo un resplandor de resultados (de solo adelante, solo lectura), el conjunto de resultados actúa como una lista de fil...

4  ¿Cómo puedo obtener claves generadas automáticamente y establecer el tipo de resultados?  ( How can i get auto generated keys and set the resultset type ) 
Tengo esta declaración SQL: Array( [0] => Array ( [type] => 4 [val] => 1 ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos