在网上找了好多教程 走好好多弯路 现在从头总结下

oralce11g 可以直接用xmltype节点存储xml文件

简单来说就是直接存一个文件进去

首先安装oracle11g 网上教程非常多 然后进Net manage进行服务调试和监听

然后下载PL/SQL Developer (一个图形化管理oracle的方便绿色软件吧)http://pan.baidu.com/s/1gdgkNOB 我自己传到网盘了这个是汉化版的

然后就创建一个xml数据库:

CREATE TABLE case (
case_id NUMBER(6) PRIMARY KEY,
case XMLType)
XMLType COLUMN case
STORE AS CLOB;
CREATE DIRECTORY CASEDIR AS 'E:\Eclipse_Project\oracle_jdbc';

这是我的表 名字是case case_id是主键 case XMLType就是存储xml的地方

CREATE DIRECTORY CASEDIR AS 'E:\Eclipse_Project\oracle_jdbc';

这句话是说给存储xml创建一个目录:CASEDIR  地址是'E:\Eclipse_Project\oracle_jdbc'  后面会用到

然后

1:

创建xml文档

方法非常多

这里用了第三方的jar包 请自行下载jdom.jar ————>http://files.cnblogs.com/sweetculiji/jdom.zip

build path到工程中

 import java.io.*;
import java.util.List;
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;
import org.jdom.xpath.*;
public class WriteXML {
public void BuildXML() throws Exception {
Element root, student, number, name, age;
root = new Element("student-info"); //生成根元素:student-info
// 生成元素:student(number,name,age)
student = new Element("student");
number = new Element("number");
name = new Element("name");
age = new Element("age");
Document doc = new Document(root); //将根元素植入文档doc中 // 给元素赋值
number.setText("001");
name.setText("lnman");
age.setText("24"); // 形成树
student.addContent(number);
student.addContent(name);
student.addContent(age);
root.addContent(student); // 设置格式并生成xml文件
Format format = Format.getCompactFormat();
format.setEncoding("gb2312"); //设置xml文件的字符为gb2312
format.setIndent(" "); //设置xml文件的缩进为4个空格
XMLOutputter XMLOut = new XMLOutputter(format);//元素后换行一层元素缩四格
XMLOut.output(doc, new FileOutputStream("E:\\Eclipse_Project\\oracle_jdbc\\case.xml"));
  //"E:\\Eclipse_Project\\oracle_jdbc\\case.xml"是指定输出的地方还有输出文件的名字 最好直接设置成前面CREATE DIRECTORY CASEDIR AS 'E:\Eclipse_Project\oracle_jdbc'; 这个地方 到时候直接从这把xml文档直接读入数据库
}
public static void main(String[] args) throws Exception { // 测试main函数
WriteXML w = new WriteXML();
System.out.println(" building an XML document .....");
w.BuildXML();
System.out.println("finished!");
}
}

输出的结果查看:

2把创建的xml文档插入到数据库中:

首先你得有oracle连接数据库的jar包

这个oralce安装后就自带 找到自己的安装路径

我的是D:\app\Administrator\product\11.2.0\dbhome_1\jdbc\lib

选择6或者6_g添加到工程中即可

用Myeclipse添加的时候可能会出现无法连接的情况

可以参考

http://wenku.baidu.com/view/4dbcd5700722192e4436f606.html来解决

插入的代码

 package com.steel.src;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class MD
{ ResultSet rs = null;
Statement st = null;
Connection con = null; //参数
String username = "默认用户名 我用的是scott";
String password = "改成你的密码";
String url = "jdbc:oracle:thin:@127.0.0.1:1522:tst";//默认端口是1521 我改成1522了注意下 在Oracle net Manage中可以修改 tst是数据库名字 public Connection getConnection()
{ //连接
try {
Class.forName("oracle.jdbc.driver.OracleDriver"); //用Myeclipse连接时候容易出现问题的地方 改各种jar包都不行 参照后面链接
con = DriverManager.getConnection(url, username,password);
System.out.print("连接成功!\n");
} catch (Exception ex)
{
ex.printStackTrace();
System.out.print("加载失败!");
}
return con; }
//关闭连接方法
public void closeConnection()
{ try {
if(rs != null) {
rs.close();
rs = null;
}
if(st != null) {
st.close();
st = null;
}
if(con != null) {
con.close();
con = null;
}
} catch (SQLException e)
{
e.printStackTrace();
}
} //插入xml文档
public boolean insert() throws SQLException
{
con=getConnection();
if(con!=null)
{
st = con.createStatement();
// 插入xml文件
String SQL2="Insert into case values('',XMLType(bfilename('CASEDIR','case.xml'),nls_charset_id('AL16UTF8')))";
st.executeUpdate(SQL2);
System.out.println("insert success!");
closeConnection();
return true;
}
return false; }
public static void main(String[] args) throws SQLException {
MD md = new MD();
boolean result=md.insert();
if(result)
System.out.println("insert success!");
} }

解释下这个sql语句:

  String SQL2="Insert into case values('1',XMLType(bfilename('CASEDIR','case.xml'),nls_charset_id('AL16UTF8')))";
case 表名字 前面创建的表只有2列 一列case_id 一列是xmltype
case_id 对应'1'
xmltype列对应 XMLType(bfilename('CASEDIR','case.xml'),nls_charset_id('AL16UTF8')))";
CASEDIR就是前面我们创建的xml目录:
CREATE DIRECTORY CASEDIR AS 'E:\Eclipse_Project\oracle_jdbc'; 的名字 必须要对应'case.xml必须在'E:\Eclipse_Project\oracle_jdbc'这个地方 所以刚才写xml文档的时候输出到这里 直接就可以读取了 第二次插入数据库的时候直接覆盖 另外mysql主键有自增的功能oracle不用这个实现 如果想要让case_id 也就是主键自增的话
可以进入数据库设置
首先
创建一个序列 名字叫case_id_sql  然后把这个case_id_sql 通过触发器赋值给主键就可以每次自增了

create sequence case_id_sql
increment by 1
start with 1
nomaxvalue
nominvalue
nocache;

用触发器赋值

create or replace trigger case_trigger
before insert on case
for each row

begin
select case_id_sql.nextval into :new.case_id from dual;
end;

case_trigger 随便取

before insert on case case是表名 case_id_sql.nextval是刚才你创建的那个序列名 new.主键

输入完end;以后没反应

是因为要用再输入个/来触发!坑死我了

这样以后主键就自增了

插入语句就可以改成

String SQL2="Insert into case values('',XMLType(bfilename('CASEDIR','case.xml'),nls_charset_id('AL16UTF8')))";

到底插入结束 可以到PL/SQL Developer 数据库table中查询

(我删了一些)

参考资料:http://blog.sina.com.cn/s/blog_5f240fc40100dvzb.html

Oracle 11g XML java连接的更多相关文章

  1. oracle 11g 大量废连接占满数据库连接问题处理

    问题描述: 数据库不断出现大量无用连接,超过数据库最大连接数,导致新的连接无法建立,访问不通数据库 问题分析: 服务器netstat连接数,大量连接来自办公网连接,不断在增加,通过服务器spid查看数 ...

  2. Tomcat7中配置Oracle 11g数据库DBCP连接池

    将       ojdbc6.jar       tomcat-jdbc-7.0.37.jar            拷贝到工程的WEB-INF\lib  下面 一.在Tomcat的配置文件Tomca ...

  3. Oracle 11g关闭用户连接审计

    sys.aud$表数据量增长较快.这时,不想关闭数据库的审计,但是又不想频繁的清理sys.aud$表.可进行如下操作关闭数据库连接的审计 noaudit connect;

  4. Oracle 11g RAC客户端使用SCAN IP无法连接问题

    Oracle 版本:11.2.0.1.0 客户端:Windows Server 2003/PLSQL Developer Oracle服务器端的ip设置如下: ##公网ip 192.168.135.2 ...

  5. Oracle 11g透明网关连接Sqlserver

    Oracle 11g透明网关连接Sqlserver oracle 透明网关是oracle连接异构数据库提供的一种技术.通过Gateway,可以在Oracle里透明的访问其他不同的数据库,如SQL Se ...

  6. Oracle 11g R2 RAC 高可用连接特性

    转自-阿里巴巴许春值 1.scan概念 什么叫 SCAN,SCAN (Single Client Access Name) 是 Oracle 从11g R2 开始推出的,客户端可以通过 SCAN 特性 ...

  7. [转]Oracle 11g R2 RAC高可用连接特性 – SCAN详解

    原文地址:http://czmmiao.iteye.com/blog/2124373   昨天帮朋友解决11g RAC SCAN问题,当时为这朋友简单解答了一些SCAN特性相关的问题,但我知道这仅仅是 ...

  8. 【转】Win7 64bit Oracle 11g 使用PL/SQL Developer 连接时提示“SQL*Net not properly installed”

    转载:http://www.cnblogs.com/xihuaodc/p/3189257.html  因为之前的Oracle不能用了,所以重新安装了64位的Oracle,安装一路正常 完了之后安装了P ...

  9. visual studio 2013连接Oracle 11g并获取数据:(一:环境搭建)

    C# WinForm案例: 目标: visual studio 中点击按钮,就可获取到Oracle中数据表的内容 1.安装Visual Studio 2013 ,推荐如下网址,下载ISO镜像,一路ne ...

随机推荐

  1. linux笔记2.19

    压缩一般使用 tar -cvzf etcbackup.tar.gz  /etc 寻找文件 locate(快速查找:新添加的得用updatedb更新后才能找到) find:   find . -name ...

  2. js和jquery中有关透明度操作的问题

    在日常开发的网站中,常常会用到设置透明度问题,最简单的就是图片的淡入淡出效果.下面我介绍一下在原生js和jQuery中设置透明度的相关问题和注意点: 1 透明度样式设置       透明度在IE浏览器 ...

  3. jQuery的map()与jQuery.map()总结

    请注意他们不是同一个函数.前者是jQuery对象的实例方法(即$.fn.map),后者是一个仅仅挂在jQuery对象下的静态方法(即$.map). 他们用法的异同:map()的返回值是包裹了一个Arr ...

  4. phpcms v9版本二次开发四步曲

    今晚看了一下PHPCMS V9版本,做一个实例抛砖引玉,其实很简单,以下是二次开发的一个实例以旅游模块为例1.   在phpcms\modules目录下建立一个文件夹tour2.  在phpcms\m ...

  5. phpcms v9二次开发之数据模型类

    系统模型类:model.class.php数据模型类的位置:/phpcms/libs/classes phpcms v9二次开发中,我们要经常需要对模块的数据表进行查询.添加.修改和删除数据等操作,所 ...

  6. Js配合CSS实现的图片居中

    CSS图上居中很好实现,但万恶的浏览器之间各不相让,搞的不兼容,还好我们有让其兼容的办法,那就是结合JS来实现,这样各个浏览器都听话多了.本例就是CSS结合JavaScript实现的图片垂直.水平方向 ...

  7. php cgi 与 cli 区别

    以CGI方式运行时,web server将用户请求以消息的方式转交给PHP独立进程,PHP与web服务之间无从属关系:CLI则是命令行接口,用于在操作系统命令行模式下执行PHP,比如可以直接在win的 ...

  8. 汉诺塔 Hanoi Tower

    电影<猩球崛起>刚开始的时候,年轻的Caesar在玩一种很有意思的游戏,就是汉诺塔...... 汉诺塔源自一个古老的印度传说:在世界的中心贝拿勒斯的圣庙里,一块黄铜板上插着三支宝石针.印度 ...

  9. Android UI 调试常用工具(Dump view UI hierarchy for Automator)

    UI调试时程序员比较头疼的问题:有时候经常会被1dp.2dp的问题,搞得无言以对(Android开发深有体会) 下面介绍一个在实际开发过程中常用的一个调试工具,可以精确到每个View在屏幕中的绝对位置 ...

  10. 转:fopen与open可以转换吗

    绝对不可以.fopen是C运行库级别的函数,而open是system call的wrapper routine.fopen返回FILE *的指针,这个结构本身维护着一些关于这个文件的信息,而open返 ...