2014-08-27 50 views
0

存在的我查询数据库,以获得后援查询所有值有时执行完美,但在其他时间查询失败是这样的:MYSQL列未找到错误servlet的

select * from myTable where objtype='EQUI' and scnrtype='C' 
java.sql.SQLException: Column 'dataType' not found. 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1084) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:973) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:918) 
    at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1162) 
    at com.mysql.jdbc.ResultSetImpl.getCharacterStream(ResultSetImpl.java:2056) 
    at com.hastha.marerp.googlemaps.DBUtils.getScreenFields(DBUtils.java:672) 
    at com.hastha.marerp.googlemaps.DBUtils.getScreenFieldsJSON(DBUtils.java:754) 
    at com.hastha.marerp.googlemaps.DynamicMenuItemBuilder.doGet(DynamicMenuItemBuilder.java:67) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:620) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) 
    at org.apache.tomcat.util.net.JIoEondpoint$SocketProcessor.run(JIoEndpoint.java:316) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Unknown Source) 

dataTypechar(8)为它是数据类型。

我已经尝试了rs.getString()rs.getCharecterStream()其中rs是从此查询中获得的ResultSet。我认为这对问题没有影响,因为错误发生在甚至到达此行之前。

This is a description of myTable

这是我的代码:

public ArrayList<ScenarioFieldInfo> getScreenFields(String objType, String scenarioType) 
{ 
    System.out.println("Input args objType: "+objType+" and scenarioType: "+scenarioType); 
    PreparedStatement pst = null; 
    ResultSet rs = null; 
    ArrayList<ScenarioFieldInfo> scenarioFieldList = new ArrayList<ScenarioFieldInfo>(); 
    try { 
     String sql = "select * from myTable where objtype='"+objType+"' and scnrtype='"+scenarioType+"'"; 
     System.out.println(sql); 
     pst = (PreparedStatement) conn.prepareStatement(sql.toString()); 
     rs = pst.executeQuery(); 
     while(rs.next()){ 
      ScenarioFieldInfo fieldInfo = new ScenarioFieldInfo(); 
      fieldInfo.fieldName = rs.getString("fieldName"); 
      fieldInfo.fieldLabel = rs.getString("FieldLabel"); 
      //fieldInfo.sapType=rs.getString("dataType"); 
      BufferedReader reader=new BufferedReader(rs.getCharacterStream("dataType")); 
      try { 
       String sapType=reader.readLine(); 
       fieldInfo.sapType=sapType; 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      fieldInfo.parameter=rs.getString("PARAMETER"); 
      scenarioFieldList.add(fieldInfo); 
     } 
     System.out.println("There are "+scenarioFieldList.size()+" screen fields"); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
    finally 
    { 
     close(rs); 
     close(pst); 
    } 
    return scenarioFieldList; 
} 
+0

w^IDE会告诉你关于对象'rs'的信息吗?在那里不退出这个属性?当你在mysql中执行sql查询时,结果中是否存在缺失的列? – reporter 2014-08-27 08:58:26

+0

@reporter有时查询失败,在其他时候它可以很好地工作...... – vamsiampolu 2014-08-27 09:03:21

+0

您的意思是说MySQL有时也会失败吗? – reporter 2014-08-27 09:04:49

回答

0

我发现代码是崩溃,因为我有getCharecterStream代替getString这是导致我的代码case.Modiying一个错误:

rs.getString("dataType"); 

固定问题