2014-08-27 62 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"); 

固定問題