⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 executeoracle.java

📁 基于数据库操作的封装
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
    }catch(SQLException sqlex){
      throw sqlex;
    }catch(Exception ex){
      throw ex;
    }finally{
      return hashResult;
    }
  }


  /**
   *
   *    key  -- PrimaryKeyObj
   * 	  item -- Hashtable	锟斤拷要锟斤拷锟铰碉拷锟斤拷锟絓uFFFD
   *
   * @see org.shaoye.magic.Operate#set(Object, Map)
   *
   */
  public void set(Object key, Map item) throws SQLException {

          if (table == null || table.length() == 0)
                  throw (new MagicException("Error 001 : table's name is null"));
          //001锟斤拷锟斤拷

          sql = "";
          sql += "UPDATE " + table + " SET ";
          int size = item.size();
          String[] arrfield = new String[size];
          Object[] arrvalue = new Object[size];

          PrimaryKeyObj _pk = new PrimaryKeyObj();
          _pk = (PrimaryKeyObj) key;

          String condition_param = "";
          String param = "";
          Hashtable _item = new Hashtable(item);
          int i = 0;

          for (java.util.Enumeration en = _item.keys(); en.hasMoreElements();) {
                  String fieldName = (String)en.nextElement();
                  arrfield[i] = fieldName;
                  arrvalue[i] = _item.get(fieldName);
                  sql = sql + fieldName + "=?";
                  if (i < size - 1) {
                          sql += ",";
                          param += ",";
                  }
                  i++;
          }
          sql = sql.substring(0,sql.length()-1);
          sql += " WHERE ";

          for (int j = 0; j < _pk.getPrimaryKeySize(); j++) {
                  Column col = new Column();
                  sql = sql + ((Column) _pk.getPrimaryKey(j)).getName() + "=?";
                  if (j < _pk.getPrimaryKeySize() - 1)
                          sql += " and ";
          }

          pstmt = conn.prepareStatement(sql);
          System.out.println(sql);
          for (int k = 0; k < arrfield.length; k++) {
                  this.setData(pstmt, k + 1, arrfield[k], arrvalue[k]);
          }

          for (int l = 0; l < _pk.getPrimaryKeySize(); l++) {
                  this.setData(
                          pstmt,
                          l + 1 + arrfield.length,
                          ((Column) _pk.getPrimaryKey(l)).getName(),
                          ((Column) _pk.getPrimaryKey(l)).getDefaultValue());
          }

          pstmt.executeUpdate();

  }

  /**
  *
  *    key  -- PrimaryKeyObj
  * 	  item -- Hashtable	锟斤拷要锟斤拷锟铰碉拷锟斤拷锟絓uFFFD
  *
  * @see org.shaoye.magic.Operate#set(Object, Map)
  *
  */
 public void set(PrimaryKeyObj key, Map item) throws SQLException {

         if (table == null || table.length() == 0)
                 throw (new MagicException("Error 001 : table's name is null"));
         //001锟斤拷锟斤拷

         sql = "";
         sql += "UPDATE " + table + " SET ";
         int size = item.size();
         String[] arrfield = new String[size];
         Object[] arrvalue = new Object[size];

         PrimaryKeyObj _pk = new PrimaryKeyObj();
         _pk = (PrimaryKeyObj) key;

         String condition_param = "";
         String param = "";
         Hashtable _item = new Hashtable(item);
         int i = 0;

         for (java.util.Enumeration en = _item.keys(); en.hasMoreElements();) {
                 String fieldName = (String)en.nextElement();
                 arrfield[i] = fieldName;
                 arrvalue[i] = _item.get(fieldName);
                 if(arrvalue[i]!=null)
                	 sql = sql + fieldName + "=";
                 else
                	 i++;
                 
                 Set col_keys = this.columns.keySet();
                 java.util.Iterator col_iter = col_keys.iterator();
                 while(col_iter.hasNext())
                 {
               	  String col_key = (String)col_iter.next();
               	  String col_type = "";
               	  if(fieldName.equals(col_key)&&arrvalue[i]!=null)
               	  {
               		  col_type = ((Column)columns.get(fieldName)).getType();
               		  if(col_type.toUpperCase().indexOf("CHAR") >= 0) {
               			  sql +="'"+arrvalue[i]+"',";
               		  }
               		  else if(col_type.equalsIgnoreCase("NUMBER")){
               			  sql +=arrvalue[i]+",";
               		  }
               		  else if(col_type.equalsIgnoreCase("DATE")){
               			  sql +="TO_DATE('"+arrvalue[i]+"','"
               			           + Globals.DATE_FORMAT_SHORT +"'),";
               		  }
               		  else
               			  continue;
               	  }
                 } 
         }
         sql = sql.substring(0,sql.length()-1);
         sql += " WHERE ";

         for (int j = 0; j < _pk.getPrimaryKeySize(); j++) {
                 Column col = new Column();
                 sql = sql + ((Column) _pk.getPrimaryKey(j)).getName() + "=" + ((Column)_pk.getPrimaryKey(j)).getDefaultValue();
                 if (j < _pk.getPrimaryKeySize() - 1)
                         sql += " and ";
         }
         if(i==size);
         else{	 
        	 pstmt = conn.prepareStatement(sql);
        	 System.out.println(sql);
        	 pstmt.executeUpdate();
         }

 }  
  
  /**
   * 锟斤拷锟斤拷莘诺锟絇reparedStatement锟斤拷
   * */
  protected void setData(
          PreparedStatement ps,
          int columnIndex,
          String colname,
          Object value)
          throws SQLException {
          String _break="";
          for (Enumeration en = columns.keys(); en.hasMoreElements();) {
            Column column = new Column();
            String _colname = (String)(en.nextElement());
            if (colname.equalsIgnoreCase(_colname)) {
              column = (Column)columns.get(_colname);
              _break="break";
            }
            else
              continue;
            String type = column.getType();
            if (type.toUpperCase().indexOf("CHAR") >= 0) {
              System.out.println(column.getName());
              ps.setString(columnIndex, (String) value);
              return;
            }
            if (type.equalsIgnoreCase("NUMBER") || type.equalsIgnoreCase("INT")) {
              String val = "";
                  val = (String)value;
              if(val==null || val.equals(""))val="0";
              if (column.getScale() == 0 && column.getPrecision() <= 12) {
                if(val=="0")
                  ps.setInt(columnIndex, (Integer.parseInt(val)));
                else
                  ps.setInt(columnIndex, (Integer.parseInt(String.valueOf(value))));
                return;
              }
              if (column.getScale() == 0 && column.getPrecision() > 12) {
                if(val=="0")
                  ps.setLong(columnIndex, (Long.parseLong(val)));
                else
                  ps.setLong(columnIndex, ( Long.parseLong(String.valueOf(value))));
                return;
              }
              if (column.getScale() > 0) {
                if(val=="0")
                  ps.setDouble(columnIndex, ( Double.parseDouble(val)));
                else
                  ps.setDouble(columnIndex, ( Double.parseDouble(String.valueOf(value))));
                return;
              }
            }
            if (type.equalsIgnoreCase("DATE")) {
              if (value instanceof java.sql.Date) {
                ps.setDate(columnIndex, (java.sql.Date) value);
                return;
              }
              if (value instanceof java.sql.Time) {
                ps.setTime(columnIndex, (java.sql.Time) value);
                return;
              }
              if (value instanceof java.util.Date) {
                ps.setTimestamp(
                    columnIndex,
                    (new java.sql.Timestamp( ( (java.util.Date) value).getTime())));
                return;
              }
              throw new MagicException(
                  "Error 010 : Datetime object instance "
                  + value.getClass().getName()
                  + " no support");
            }
            if(_break.equals("break"))
              break;
          }
  }

  /**
   * 取锟斤拷一锟斤拷锟斤拷\uFFFD
   * key -- 锟斤拷录锟斤拷锟斤拷锟斤拷锟絓uFFFD
   *
   * @see org.shaoye.magic.Operate#get(Object)
   */
  public Map get(Object key) throws SQLException,Exception {

          if (table == null || table.length() == 0)
                  throw (new MagicException("Error 001 : table's name is null"));
          //001锟斤拷锟斤拷
          Hashtable hashResult = new Hashtable();
          PrimaryKeyObj _pk = new PrimaryKeyObj();
          ResultSet rs = null;
          _pk = (PrimaryKeyObj) key;
          try{
            sql = "";
            sql += "SELECT * FROM " + table + " WHERE ";

            for (int j = 0; j < _pk.getPrimaryKeySize(); j++) {
              Column col = new Column();
              sql = sql + ( (Column) _pk.getPrimaryKey(j)).getName() + "=?";
              if (j < _pk.getPrimaryKeySize() - 1)
                sql += " and ";
            }
            pstmt =
                conn.prepareStatement(
                sql);
            System.out.println(sql);

            for (int l = 0; l < _pk.getPrimaryKeySize(); l++) {
              this.setData(
                  pstmt,
                  l + 1,
                  ( (Column) _pk.getPrimaryKey(l)).getName(),
                  ( (Column) _pk.getPrimaryKey(l)).getDefaultValue());
            }
            rs = pstmt.executeQuery();

            if (rs.next()) {
              for (int s = 0; s < rs.getMetaData().getColumnCount(); s++) {
                if (rs.getString(rs.getMetaData().getColumnName(s + 1)) != null)
                  hashResult.put(
                      rs.getMetaData().getColumnName(s + 1),
                      rs.getString(rs.getMetaData().getColumnName(s + 1)));
                else
                  hashResult.put(
                      rs.getMetaData().getColumnName(s + 1), "");

              }
            }
            if (rs != null)
              rs.close();
          }catch(SQLException sqlex){
            throw sqlex;
          }catch(Exception ex){
            throw ex;
          }finally{
            return hashResult;
          }
  }

  /**
   * 锟斤拷始锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷\uFFFD
   * */
  protected Hashtable initColumn(String owner,String tblName) throws SQLException {
          String sql = "select * from all_tab_columns "
               + "where owner=upper('"+ owner +"') and table_name=upper('"+ tblName +"')";
          System.out.println(sql);
          Hashtable _columns = new Hashtable();
          pstmt = conn.prepareStatement(sql);
          ResultSet rs = pstmt.executeQuery();
          while (rs.next()) {
                  Column column = new Column();
                  column.setColumnId(rs.getInt("COLUMN_ID"));
                  column.setDefaultValue(rs.getString("DATA_DEFAULT"));
                  column.setLength(rs.getInt("DATA_LENGTH"));
                  column.setName(rs.getString("COLUMN_NAME"));
                  String nullable = rs.getString("NULLABLE");
                  column.setNullable(nullable.equalsIgnoreCase("Y") ? true : false);
                  column.setType(rs.getString("DATA_TYPE"));
                  if (column.getType().equalsIgnoreCase("number")) {
                          column.setPrecision(rs.getInt("DATA_PRECISION"));
                          column.setScale(rs.getInt("DATA_SCALE"));
                  }
                  _columns.put(column.getName(), column);
          }
          rs.close();
          return _columns;
  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -