现在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);
select x.sys_nc_rowinfo$.getclobval() as column_value from xmltypeTable
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);
}
}
}
}
分享到:
相关推荐
### Oracle XML DB:详解与应用 #### 一、引言 随着互联网的发展和企业信息化建设的需求不断升级,数据处理和管理的方式也在发生着深刻的变化。其中,XML(可扩展标记语言)作为一种重要的数据交换格式,在现代...
Java使用Jdbc连接Oracle执行简单查询操作示例 Java使用Jdbc连接Oracle执行简单查询操作,是指使用Java语言通过Jdbc(Java Database Connectivity)连接Oracle数据库并执行简单查询操作的过程。本文将通过实例形式...
- `applicationContext-db.xml`: 这是Spring框架中的一个配置文件,用于定义数据源(DataSource)和事务管理器等。在这个文件中,我们可以配置JDBC连接池,同时指定字符集,确保数据传输时的编码一致性。例如: ``...
### JDBC-Oracle-Thin 驱动介绍与配置详解 #### 一、JDBC-Oracle-Thin 概述 在数据库连接技术中,Java Database Connectivity (JDBC) 是一种用于执行 SQL 语句的标准 Java API,可以为多种关系数据库提供统一访问...
例如,通过使用Oracle的JDBC驱动和.NET提供程序,开发人员可以轻松地在Java和.NET应用中访问和操作XML数据。 总的来说,《Oracle数据库XML开发者指南》深入讲解了如何利用Oracle XML DB来存储、管理和查询XML数据,...
### JDBC 连接 Oracle 字符集不同导致乱码问题解析及解决方案 #### 问题背景 在使用 JDBC(Java Database Connectivity)连接 Oracle 数据库时,可能会遇到一个常见的问题:从远程 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的实现 会议管理系统项目servlet+jdbc+oracle的实现 会议管理系统项目servlet+jdbc+oracle的实现 会议管理系统项目servlet+jdbc+oracle的实现 会议管理系统项目servlet+jdbc+...
JDBC读写Oracle的CLOB字段
本主题将围绕“jdbc连接Oracle数据库”这一核心知识点展开,探讨如何使用Java通过JDBC驱动连接Oracle数据库,并关注与之相关的ojdbc5和ojdbc6版本。 首先,ojdbc5和ojdbc6是Oracle公司提供的JDBC驱动程序,用于Java...
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的基本概念。JDBC是Java与数据库交互的一组接口和类,它允许Java程序通过SQL语句来操作数据库。...
Java使用JDBC(Java Database Connectivity)来连接Oracle数据库是一个常见的任务,它允许Java应用程序与各种数据库进行交互。在本场景中,`ojdbc6.jar`是Oracle提供的JDBC驱动程序,用于建立Java应用程序与Oracle...
Oracle JDBC驱动包是Oracle数据库与Java应用程序之间进行通信的关键组件,它使得Java程序员能够通过编写Java代码来操作Oracle数据库。标题中的"ojdbc6"指的是Oracle JDBC驱动的一个特定版本,适用于Java SE 6环境。...
Oracle12C JDBC驱动是连接Java应用程序与Oracle数据库12c Release 2 (12.2.0.1) 的关键组件。JDBC(Java Database Connectivity)是Java平台中的一个标准API,它允许Java程序通过Java语言来访问和操作数据库。在...
本示例着重讲解如何利用JDBC和Oracle数据库实现分页功能,同时涵盖一个表的基本操作:增加、删除和修改。 首先,我们需要了解JDBC。JDBC是Java API,它提供了一套标准接口,使得Java程序可以与各种类型的数据库进行...
在Java环境下连接Oracle数据库,你需要特定的驱动包,即Oracle JDBC驱动,通常这个驱动包含在`ojdbc.jar`文件中。 Oracle JDBC驱动主要有三种类型: 1. **JDBC-ODBC桥接驱动**:它是最早的Oracle JDBC驱动,通过...
在IT行业中,数据库操作是必不可少的一部分,特别是在Java开发中,我们经常使用JDBC(Java Database Connectivity)来与各种数据库进行交互,包括Oracle。本篇将详细介绍如何使用JDBC连接Oracle数据库并执行存储过程...
在IT行业中,JDBC(Java Database Connectivity)是Java编程语言中用于访问数据库的标准接口,而Oracle则是一款广泛应用的关系型数据库管理系统。本示例将详细解释如何在Eclipse集成开发环境中,通过JDBC连接到...
通过Java Database Connectivity (JDBC) API,我们可以编写程序来与Oracle数据库进行交互。本教程将详细讲解如何使用JDBC测试Oracle数据库的连接,确保你的应用程序能够顺利地与数据库进行通信。 首先,你需要确保...