有JDBC編程的人都會(huì)知道這是一個(gè)什么樣的異常。做為剛出道的菜鳥我可因?yàn)檫@個(gè)異常把我整一下。
          我希望這小段隨筆能給閱讀都帶來幫助,也希望大家多多指教。
          我在EJB中寫了一個(gè)方法:public Vector searchCase(String dataSource,BlacksmokeEnqDataobject inputObj,String sql,int maxAllowSize){
            Connection con = null;
            Vector VqueryData = null;
            PreparedStatement ps = null;
            ResultSet rs = null;
            FormatFunctions ff = new FormatFunctions();
            BlacksmokeEnqReportDataobject blsObj = null;
            SqlFunctions sf = new SqlFunctions();
            try{
             con = getConnection(dataSource);
             String drv_ic_n = inputObj.getDrv_ic_n();
             String caseType = inputObj.getCaseType();
             String vehicleNo = inputObj.getVehNo();
             String fleetType = inputObj.getFleetType();
             String make = inputObj.getMake();
             String model = inputObj.getModel();
             String payFrom = inputObj.getPayDateFrom();
             String payTo = inputObj.getPayDateTo();
             String offFrom = inputObj.getOffeDateFrom();
             String offTo = inputObj.getOffeDateTo();
             String entryFrom = inputObj.getEntryDateFrom();
             String entryTo = inputObj.getEntryDateTo();
             int smokeFrom = inputObj.getSmokeFrom();
             int smokeTo = inputObj.getSmokeTo();
             if (drv_ic_n.equals("")){
              drv_ic_n = null;
             }
             if (caseType.equals("")){
              caseType = null;
             }
             if (vehicleNo.equals("")){
              vehicleNo = null;
             }
             if (fleetType.equals("")){
              fleetType = null;
             }
             if (make.equals("")){
              make = null;
             }
             if (model.equals("")){
              model = null;
             }
             if (payFrom.length()>0 && payFrom.equalsIgnoreCase("00/00/0000")){
              payFrom = null;
             }
             if (payTo.length()>0 && payTo.equalsIgnoreCase("00/00/0000")){
              payTo = null;
             }
             if (offFrom.length()>0 && offFrom.equalsIgnoreCase("00/00/0000")){
              offFrom = null;
             }
             if (offTo.length()>0 && offTo.equalsIgnoreCase("00/00/0000")){
              offTo = null;
             }
             if (entryFrom.length()>0 && entryFrom.equalsIgnoreCase("00/00/0000")){
              entryFrom = null;
             }
             if (entryTo.length()>0 && entryTo.equalsIgnoreCase("00/00/0000")){
              entryTo = null;
             }   
             String tmpSql = sf.retuSqlS(sql);
             tmpSql = sf.linkSql(tmpSql,":LS_CO_FINE_PAID_D_FROM",payFrom);
             tmpSql = sf.linkSql(tmpSql,":LS_CO_FINE_PAID_D_TO",payTo);
             tmpSql = sf.linkSql(tmpSql,":LS_BLS_OFFENCE_D_FROM",offFrom);
             tmpSql = sf.linkSql(tmpSql,":LS_BLS_OFFENCE_D_TO",offTo);
             tmpSql = sf.linkSql(tmpSql,":LS_ENTRY_D_FROM",entryFrom);
             tmpSql =  sf.linkSql(tmpSql,":LS_ENTRY_D_TO",entryTo);
             ps = con.prepareStatement(tmpSql);
          //   System.out.println(tmpSql);
             int idx = 0;
             ps.setString(++idx,drv_ic_n);
             ps.setString(++idx,drv_ic_n);
             ps.setString(++idx,caseType);
             ps.setString(++idx,caseType);
             ps.setString(++idx,vehicleNo);
             ps.setString(++idx,vehicleNo);
             ps.setString(++idx,fleetType);
             ps.setString(++idx,fleetType);
             ps.setString(++idx,make);
             ps.setString(++idx,make);
             ps.setString(++idx,model);
             ps.setString(++idx,model);
             ps.setInt(++idx,smokeFrom);
             ps.setInt(++idx,smokeFrom);
             ps.setInt(++idx,smokeTo);
          //   ps.setInt(++idx,smokeTo);  
             ps.executeQuery();
             rs = ps.getResultSet();
             VqueryData = new Vector();
             idx = 0;
             while(rs.next() && idx <= maxAllowSize){
              blsObj = new BlacksmokeEnqReportDataobject();
              blsObj.setDRV_IC_N(rs.getString("DRV_IC_N"));
              blsObj.setDRV_NM(rs.getString("DRV_NM"));
              blsObj.setBLS_CASE_N(rs.getString("BLS_CASE_N"));
              blsObj.setBLS_CASE_T(rs.getString("BLS_CASE_T"));
              blsObj.setVEH_REGN_N(rs.getString("VEH_REGN_N"));
              blsObj.setBLS_FLT_T(rs.getString("BLS_FLT_T"));
              blsObj.setBLS_MAKE_C(rs.getString("BLS_MAKE_C"));
              blsObj.setBLS_MODEL_C(rs.getString("BLS_MODEL_C"));
              blsObj.setBLS_OFFENCE_D(ff.dateFormat(rs.getDate("BLS_OFFENCE_D")));
              blsObj.setENTRY_D(ff.dateFormat(rs.getDate("ENTRY_D")));
              blsObj.setSMOKE_LEV_READ(rs.getInt("SMOKE_LEV_READ"));
              blsObj.setCO_FINE_PAID_D(ff.dateFormat(rs.getDate("CO_FINE_PAID_D")));
              VqueryData.addElement(blsObj);
              idx++;
             }
             }catch(Exception e){
              blsObj.setErrStatus(sf.ckException(e));
              VqueryData.addElement(blsObj);
              e.printStackTrace();
             }finally{
              SqlFunctions.cleanup(ps, rs);
              SqlFunctions.cleanup(con);
             }
            return VqueryData;
           }這是一個(gè)通過XML文件來傳SQL語。把查詢語句寫在XML文件中,在Servlet中調(diào)用XML文件。
          上面那個(gè)錯(cuò)誤是因?yàn)闆]有對(duì)XML中的查詢變量進(jìn)行綁定,或者是多寫,或少寫變量,或者變量名寫錯(cuò)了。后來我重新認(rèn)真的做了一遍,發(fā)生我沒有寫錯(cuò)。我把JDeveloper關(guān)了,重新打開,可以了。我的沒有想這是怎么一回,如果有同樣問題的好友知道這是怎么一回事,請(qǐng)聯(lián)系我rodney_luo@163.com. QQ:86322591
          posted on 2005-09-15 16:19 rodney 閱讀(15717) 評(píng)論(1)  編輯  收藏 所屬分類: 工作中遇到的問題與解決方式
          Comments
          • # re: java.sql.SQLException: 無效的列索引 
            lehua
            Posted @ 2006-12-09 16:51
            你的表的列數(shù) 和insert語句中的列數(shù)不一樣  回復(fù)  更多評(píng)論   
           
          主站蜘蛛池模板: 巴塘县| 昌图县| 荣成市| 醴陵市| 安福县| 台北县| 石棉县| 泸西县| 涿州市| 泌阳县| 饶平县| 北流市| 临沂市| 仁化县| 綦江县| 牙克石市| 屏南县| 邓州市| 华安县| 西华县| 库伦旗| 会理县| 安化县| 辽中县| 临西县| 伊川县| 米脂县| 南部县| 沧源| 邹平县| 宜丰县| 雷山县| 县级市| 乐安县| 汉源县| 五家渠市| 赣州市| 四川省| 乐业县| 横山县| 嘉黎县|