`
kongshanxuelin
  • 浏览: 922446 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

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);
				}

			}
		}
	}
 
1
0
分享到:
评论

相关推荐

    Oracle XML DB

    ### Oracle XML DB:详解与应用 #### 一、引言 随着互联网的发展和企业信息化建设的需求不断升级,数据处理和管理的方式也在发生着深刻的变化。其中,XML(可扩展标记语言)作为一种重要的数据交换格式,在现代...

    jdbc-oracle-thinjdbc-oracle-thin

    ### JDBC-Oracle-Thin 驱动介绍与配置详解 #### 一、JDBC-Oracle-Thin 概述 在数据库连接技术中,Java Database Connectivity (JDBC) 是一种用于执行 SQL 语句的标准 Java API,可以为多种关系数据库提供统一访问...

    Java使用Jdbc连接Oracle执行简单查询操作示例

    Java使用Jdbc连接Oracle执行简单查询操作示例 Java使用Jdbc连接Oracle执行简单查询操作,是指使用Java语言通过Jdbc(Java Database Connectivity)连接Oracle数据库并执行简单查询操作的过程。本文将通过实例形式...

    Jdbc连接oracle远程数据库中文乱码解决

    - `applicationContext-db.xml`: 这是Spring框架中的一个配置文件,用于定义数据源(DataSource)和事务管理器等。在这个文件中,我们可以配置JDBC连接池,同时指定字符集,确保数据传输时的编码一致性。例如: ``...

    XML Database Developer's Guide - Oracle XML DB

    例如,通过使用Oracle的JDBC驱动和.NET提供程序,开发人员可以轻松地在Java和.NET应用中访问和操作XML数据。 总的来说,《Oracle数据库XML开发者指南》深入讲解了如何利用Oracle XML DB来存储、管理和查询XML数据,...

    jdbc连接oracle字符集不同出现乱码

    ### JDBC 连接 Oracle 字符集不同导致乱码问题解析及解决方案 #### 问题背景 在使用 JDBC(Java Database Connectivity)连接 Oracle 数据库时,可能会遇到一个常见的问题:从远程 Oracle 数据库获取的数据出现乱码...

    jdbc连接oracle

    Class.forName("oracle.jdbc.OracleDriver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getconn() { if (conn==null) { try { conn=DriverManager.get...

    会议管理系统项目servlet+jdbc+oracle的实现.zip

    会议管理系统项目servlet+jdbc+oracle的实现 会议管理系统项目servlet+jdbc+oracle的实现 会议管理系统项目servlet+jdbc+oracle的实现 会议管理系统项目servlet+jdbc+oracle的实现 会议管理系统项目servlet+jdbc+...

    oracle.jdbc.driver.oracledriver Oracle JDBC驱动包 ojdbc6

    Oracle JDBC驱动包是Oracle数据库与Java应用程序之间进行通信的关键组件,它使得Java程序员能够通过编写Java代码来操作Oracle数据库。标题中的"ojdbc6"指的是Oracle JDBC驱动的一个特定版本,适用于Java SE 6环境。...

    jdbc读写Oracle的CLOB字段

    JDBC读写Oracle的CLOB字段

    jdbc连接oracle数据库

    本主题将围绕“jdbc连接Oracle数据库”这一核心知识点展开,探讨如何使用Java通过JDBC驱动连接Oracle数据库,并关注与之相关的ojdbc5和ojdbc6版本。 首先,ojdbc5和ojdbc6是Oracle公司提供的JDBC驱动程序,用于Java...

    JDBC连接Oracle测试

    JDBC连接Oracle测试 package com.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DB { private static Connection conn; private static ...

    jdbc连接oracle工具类

    本篇文章将详细讲解如何创建一个JDBC连接Oracle的工具类,以及在实际应用中需要注意的事项。 首先,我们需要了解JDBC的基本概念。JDBC是Java与数据库交互的一组接口和类,它允许Java程序通过SQL语句来操作数据库。...

    java使用jdbc连接oracle数据库

    Java使用JDBC(Java Database Connectivity)来连接Oracle数据库是一个常见的任务,它允许Java应用程序与各种数据库进行交互。在本场景中,`ojdbc6.jar`是Oracle提供的JDBC驱动程序,用于建立Java应用程序与Oracle...

    使用jdbc_oracle实现的分页功能

    本示例着重讲解如何利用JDBC和Oracle数据库实现分页功能,同时涵盖一个表的基本操作:增加、删除和修改。 首先,我们需要了解JDBC。JDBC是Java API,它提供了一套标准接口,使得Java程序可以与各种类型的数据库进行...

    jdbc连接oracle jar包

    在Java环境下连接Oracle数据库,你需要特定的驱动包,即Oracle JDBC驱动,通常这个驱动包含在`ojdbc.jar`文件中。 Oracle JDBC驱动主要有三种类型: 1. **JDBC-ODBC桥接驱动**:它是最早的Oracle JDBC驱动,通过...

    jdbc连接oracle,执行存储过程,带数据库存储过程

    在IT行业中,数据库操作是必不可少的一部分,特别是在Java开发中,我们经常使用JDBC(Java Database Connectivity)来与各种数据库进行交互,包括Oracle。本篇将详细介绍如何使用JDBC连接Oracle数据库并执行存储过程...

    jdbc连接oracle简单示例

    在IT行业中,JDBC(Java Database Connectivity)是Java编程语言中用于访问数据库的标准接口,而Oracle则是一款广泛应用的关系型数据库管理系统。本示例将详细解释如何在Eclipse集成开发环境中,通过JDBC连接到...

    用jdbc测试oracle连接

    通过Java Database Connectivity (JDBC) API,我们可以编写程序来与Oracle数据库进行交互。本教程将详细讲解如何使用JDBC测试Oracle数据库的连接,确保你的应用程序能够顺利地与数据库进行通信。 首先,你需要确保...

    Flink JDBC Connector 支持Oracle

    Flink JDBC Connector 支持Oracle , Flink 1.13.6 支持Oracle 11.2.0.4

Global site tag (gtag.js) - Google Analytics