如何用java 实现oracle数据--〉sqlserver的功能
本人的想法由于日期类型的原因直接进行操作时不可行的,所以先对oracle的内容把所有日期型字段小于1800-1-1的都转换为1800-1-1,然后进行移动操作。
不过这个方法写出来的程序,总是出错,部分代码如下:
        String sTableName = "teacher";
        String sTN = sTableName  + "temp"; // 临时表名
        boolean bFlag = true;
        ResultSetMetaData rsmd = rs.getMetaData();
          // 判断有无日期型字段
          for(int j = 1; j <= rsmd.getColumnCount(); j++){
            String sColumnTypeName = rsmd.getColumnTypeName(j).toUpperCase();
            if("DATE".equals(sColumnTypeName)){
              bFlag = false;
              break;
            }
          }
          // 若有则生成一个临时表        
          if(!bFlag){
            sTN += "TEMP";
            sSQL = "create table " + sTN + " as select * from " + sTableName;
            stmt.executeUpdate(sSQL);
          
            // 构建更新字符串
            for(int j = 1; j <= rsmd.getColumnCount(); j++){   ///????问题总是出在这里
              String sColumnTypeName = rsmd.getColumnTypeName(j).toUpperCase();
              String sColumnName = rsmd.getColumnName(j).toUpperCase();      
              if("DATE".equals(sColumnTypeName)){
                sUpdate += sColumnName + " = (" + "case when "  
                  + sColumnName + " is null or "
                  + sColumnName + " < to_date('1800-1-1', 'YYYY-MM-DD')" 
                  + "then to_date('1800-1-1', 'YYYY-MM-DD') end),";
              }
            }
            sSQL = "update " + this.sTableName + " set " + sUpdate;
            stmt.executeUpdate(sSQL);
          }