<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    空山雪林通用模塊工作室

     

    JDBC操控Oracle XMLDB

    現在XML數據庫大行其道,特別在數據交換領域,由于XML數據庫本身的特點,可以大顯身手,那么JDBC如何來操作XMLDB呢,我們舉幾個簡單的例子拋磚引玉一下吧

    ?

    ?

    • 在數據庫中獲取XMLType類型的列值,比如存儲過程返回XmlType等,代碼如下:
    public static String getOracleXMlType2String(Object obj){
    		try{
    			if(obj instanceof OPAQUE){
    				StringBuffer sb = new StringBuffer();
    				OPAQUE op =(OPAQUE)obj; 
    				if(op!=null){
    					XMLType poxml = XMLType.createXML(op);
    					if(poxml!=null){
    						sb.append(poxml.getStringVal());
    					}
    				}
    				return sb.toString();
    			}
    			return obj.toString();
    		}catch(Exception ex){
    			return null;
    		}
    	}?

    執行存儲過程代碼:
     Object[] res = DbUtils.ExecuteSP("{call 存儲過程名(?,?)}", new Object[]{
    		new SpParameter(Types.VARCHAR, "IN", "in參數", "in參數值")
    		,new SpParameter(OracleTypes.OPAQUE,"OUT","x",null)}, conn);
    ?

    ?

    • 可以通過XmlType列的clob值,代碼如下:
    select x.sys_nc_rowinfo$.getclobval() as column_value	from xmltypeTable
    ?
    • 執行存錯過程(存儲過程中含XmlTYPE返回值)
    	public static final Object[] ExecuteSP(String stmt, Object[] inparams,
    			Connection connection) {
    		int i = 1;
    		CallableStatement st = null;
    		SpParameter sp = null;
    		SpParameter outp = null;
    		int DataType;
    		String Direction;
    		String Name;
    		String DataValue;
    
    		try {
    			st = connection.prepareCall(stmt);
    
    			int oupcount = 0;
    
    			for (i = 0; i < inparams.length; i++) {
    				if (inparams[i] instanceof SpParameter) {
    					sp = (SpParameter) inparams[i];
    
    					if (sp.GetDirection().toUpperCase().equals("IN")) {
    						switch (sp.GetDataType()) {
    						case Types.FLOAT:
    						case Types.INTEGER:
    							st
    									.setLong(i + 1, Long.parseLong(sp
    											.GetDataValue()));
    							break;
    
    						case Types.DATE:
    							st.setDate(i + 1, java.sql.Date.valueOf(sp
    									.GetDataValue()));
    							break;
    						case Types.SQLXML:
    							st.setSQLXML(i + 1, null);
    							break;
    						default:
    							st.setString(i + 1, sp.GetDataValue());
    							break;
    						}
    					} else {
    						if(sp.getDataType() == OracleTypes.OPAQUE){
    							st.registerOutParameter (i+1, OracleTypes.OPAQUE,"SYS.XMLTYPE");
    						}else
    							st.registerOutParameter(i + 1, sp.GetDataType());
    						oupcount = oupcount + 1;
    					}
    				} else
    					st.setObject(i + 1, inparams[i]);
    			}
    
    			st.execute();
    			i = 1;
    
    			if (oupcount > 0) {
    				Object[] outps = new Object[oupcount];
    				int j = 0;
    				for (i = 0; i < inparams.length; i++) {
    					if (!(inparams[i] instanceof SpParameter))
    						continue;
    
    					sp = (SpParameter) inparams[i];
    
    					if (!sp.GetDirection().toUpperCase().equals("IN")) {
    						DataType = sp.GetDataType();
    						Direction = sp.GetDirection();
    						Name = sp.GetName();
    
    						switch (DataType) {
    						case Types.FLOAT:
    							DataValue = String.valueOf(st.getLong(i + 1));
    							break;
    
    						case Types.INTEGER:
    							DataValue = String.valueOf(st.getInt(i + 1));
    							break;
    
    						case Types.DATE:
    							DataValue = st.getDate(i + 1).toString();
    							break;
    
    						case OracleTypes.OPAQUE:
    							DataValue = getOracleXMlType2String(st.getObject(i+1));
    							break;
    						default:
    							DataValue = st.getString(i + 1);
    							break;
    						}
    
    						sp.setDataValue(DataValue);
    						outps[j++] = DataValue;
    
    						// res.addElement(new SpParameter(DataType, Direction,
    						// Name,
    						// DataValue));
    					}
    				}
    
    				return outps;
    			} else {
    				return null;
    			}
    		} catch (SQLException ex) {
    			
    		} finally {
    			if (st != null) {
    				try {
    					st.close();
    				} catch (Exception ex) {
    					log.error(ex);
    				}
    
    			}
    		}
    	}
    ?


    已有 0 人發表留言,猛擊->>這里<<-參與討論


    JavaEye推薦



    posted on 2010-09-06 13:21 徐靈 閱讀(296) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    友情鏈接

    最新評論

    主站蜘蛛池模板: 亚洲国产91精品无码专区| 女人张腿给男人桶视频免费版 | 久9热免费精品视频在线观看| 亚洲成a人片在线观看日本麻豆| 久久精品国产亚洲AV电影网| 蜜臀91精品国产免费观看| 久久精品国产亚洲AV蜜臀色欲| av大片在线无码免费| 亚洲人成伊人成综合网久久| 国产麻豆视频免费观看| 亚洲天堂一区二区三区四区| 99在线视频免费观看视频| 亚洲精品国产国语| 免费h成人黄漫画嘿咻破解版| 男女作爱免费网站| 亚洲开心婷婷中文字幕| 免费h视频在线观看| 亚洲视频网站在线观看| 免费中文熟妇在线影片 | 亚洲午夜在线一区| 久久久久免费看黄A片APP| 亚洲国产精品成人午夜在线观看| 国产猛烈高潮尖叫视频免费 | 精品熟女少妇a∨免费久久| 亚洲电影在线免费观看| 午夜dj在线观看免费视频| 日韩精品视频在线观看免费| 亚洲av永久无码精品国产精品| 国产精品无码免费播放| 亚洲欧美黑人猛交群| 亚洲性日韩精品一区二区三区 | 免费一级毛片一级毛片aa| 久青草视频在线观看免费| 久久亚洲AV成人无码| 在线视频免费观看www动漫| 国产亚洲精品第一综合| 亚洲ⅴ国产v天堂a无码二区| 日韩精品成人无码专区免费| 一级特黄录像免费播放肥| 亚洲人成在线中文字幕| 亚洲色偷拍区另类无码专区|