`
Donald_Draper
  • 浏览: 952099 次
社区版块
存档分类
最新评论

Oracle的CLOB类型数据处理

阅读更多
Oracle菜鸟之grant授权:http://www.2cto.com/database/201408/322396.html
oracle 查看用户所在的表空间 :http://blog.csdn.net/yitian20000/article/details/6256716
oracle grant 详解:http://blog.csdn.net/xiayang05/article/details/5861846
Oracle中表列由VARCHAR2类型改成CLOB :http://blog.csdn.net/jssg_tzw/article/details/40829867
创建表test



测试主类
public class testClob {
	public static void main(String[] args){
		testOracleConnection();
	}
	public static String ClobToString(CLOB clob) throws SQLException, IOException {

        String reString = "";
        Reader is = clob.getCharacterStream();// 得到流
        BufferedReader br = new BufferedReader(is);
        String s = br.readLine();
        StringBuffer sb = new StringBuffer();
        // 执行循环将字符串全部取出付值给StringBuffer由StringBuffer转成STRING
        while (s != null) {
            sb.append(s);
            s = br.readLine();
        }
        reString = sb.toString();
        return reString;
    } 
	public static void testOracleConnection()
	{
	    Connection con = null;// 创建一个数据库连接
	    PreparedStatement preStm = null;// 创建预编译语句对象,一般都是用这个而不用Statement
	    ResultSet result = null;// 创建一个结果集对象
	    try
	    {
	        Class.forName("oracle.jdbc.driver.OracleDriver");// 加载Oracle驱动程序
	        System.out.println("开始尝试连接数据库!");
	        //连接Oracle数据库提供了两中方式OCI方式和thin方式,
	        //OCI方式是通过本地动态连接库和Oracle进行套接字通讯,
	        //速度和安全性比较好,thin方式是通过远程访问Oracle
	        // 127.0.0.1是本机地址,efss是精简版Oracle的默认数据库名
	        String url = "jdbc:oracle:thin:@192.168.126.128:1521:XE";
	        String user = "donald";// 用户名,系统默认的账户名
	        String password = "123456";// 你安装时选设置的密码
	        long startTime = System.currentTimeMillis();
	        con = DriverManager.getConnection(url, user, password);// 获取连接
	        con.setAutoCommit(false);
	        preStm = con.prepareStatement("insert into test values(?,?)");
	        preStm.setInt(1, 1);
	        String name = "jamel";
	        Reader clobReader = new StringReader(name); // 将 text转成流形式
	        preStm.setCharacterStream(2, clobReader, name.length());// 替换sql语句中的?
	        preStm.execute();
	        con.commit();
	        
	        preStm = con.prepareStatement("select name from test where id = ?");
	        preStm.setInt(1, 1);
	        preStm.execute();
	        con.commit();
	        result = preStm.getResultSet();
	        while(result.next()){
	        	CLOB clob = (oracle.sql.CLOB) result.getClob(1);// 获得CLOB字段str
	            // 注释: 用 rs.getString("str")无法得到 数据 ,返回的 是 NULL;
	            String content = ClobToString(clob); 
	            System.out.println("name:"+ content);
	        }
	        long endTime = System.currentTimeMillis();
	        System.out.println("============time:"+ (endTime-startTime));
	        System.out.println("============hashCode:"+ con.hashCode());
	        if(!con.isClosed()){
	        	 System.out.println("============连接成功!");
	        }
	    }
	    catch (Exception e)
	    {
	    	System.out.println("=============连接失败:"+e.getMessage());
	    	e.printStackTrace();
	    }
	    finally
	    {
	        try
	        {
	            // 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
	            // 注意关闭的顺序,最后使用的最先关闭
	            if (result != null)
	                result.close();
	            if (preStm != null)
	            	preStm.close();
	            if (con != null)
	                con.close();
	            System.out.println("数据库连接已关闭!");
	        }
	        catch (Exception e)
	        {
	            e.printStackTrace();
	        }
	    }
	
}
}
控制台输出:

开始尝试连接数据库!
name:jamel
============time:191
============hashCode:28890871
============连接成功!
数据库连接已关闭!



问题:ORA-00942: 表或视图不存在,

如果用navicat客户端创建表,会默认给表名加引号,
比如创建表test,则实际为表加引号"test"



或者用navicat创建表的时候,给表明添加引号:
create table “test”

如果加引号不行,查看是不是用户表空间的问题:
查看用户表空间
select username,default_tablespace from user_users;
改变用户默认表空间:
alter user donald default tablespace users;


总结:
oracle 创建表的时候,最好不要用客户端,用sqlplus,跑创建表脚本。
  • 大小: 4.4 KB
  • 大小: 3.4 KB
0
1
分享到:
评论

相关推荐

    Mybatis 处理 CLOB、BLOB 类型数据

    Mybatis 处理 CLOB、BLOB 类型数据

    Oracle中Clob类型处理解析收藏

    最近利用NHibernate映射类型为Clob字段在插入数据时发现当字符的字节数(一个半角字符一个字节,一个全角字符两个字节)在2000-4000之间时报错(ORA-01461:仅可以插入LONG列的LONG值赋值)。经过不断查找资料和自己...

    PHP处理Oracle的CLOB实例

    本文实例简述了PHP处理Oracle的CLOB的方法。分享给大家供大家参考。具体方法如下: 1. 写入数据   在使用PDO的预处理方法时,如果使用bindParam()等而不指定字段的数据类型或使用execute(),PDO都会默认为string...

    Oracle 插入超4000字节的CLOB字段的处理方法

    在通过拼组sql语句来实现... 下面就此问题的解决办法,做一下小结: 我们可以通过创建单独的OracleCommand来进行指定的插入,即可获得成功,这里仅介绍插入clob类型的数据,blob与此类似,这里就不介绍了,下面介绍两

    向Oracle数据库的CLOB属性插入数据报字符串过长错误

    今天在项目中向数据库的CLOB属性插入一段篇文章(1000~2000)字就会报一个字符串过长的错误。 网上说用流来处理,没有这么做。这像是一个Bug,只要把插入的数据,默认扩充到2000以上就ok了。 下面是这段代码: if(...

    关于在Hibernate中对于Clob,Blob字段的处理方法

    oracle的jdbc驱动程序,用这个版本的操作Clob,blob类型的数据很方便。 博文链接:https://zhenjw.iteye.com/blog/173419

    oracle数据库中如何处理clob字段方法介绍

    在知识库的建立的时候,用普通VARCHAR2存放文章是显然不够的,只有区区4000的字节,放不了多少字, 而CLOB数据类型,则能最多存放8G的数据。但是这个字段处理起来有比较多的特殊性,记录一下。 插入: 直接写在SQL...

    spring+hbernate对clob、blob字段的处理

    一个完整的工程,主要功能为:spring+hbernate对clob、blob字段的处理 包括:数据脚本、典型的SSH框架处理,以及spring、hibernate数据批量保存等功能源码、所用到的lib包 数据环境为:oracle 10G 开发:Mycelipse5.1...

    Oracle对于死锁的处理方法

    Oracle数据库出现死锁的时候可以按照以下处理步骤加以解决: 第一步:尝试在sqlplus中通过sql命令进行删除,如果能够删除成功,则万事大吉!但通常情况下,出现死锁时,想通过命令行或者通过Oracle的管理工具删除有...

    Oracle数据库学习指南

    8. ORACLE的数据类型 9. Oracle数据库碎片整理 10.ORACLE性能调整1 11.ORACLE性能调整2 12.Oracle专家调优秘密 13.PL_SQL单行函数和组函数详解 14.PL-SQL 15.PLSQL异常处理初步 16.SQL语句性能调整...

    北大青鸟Oracle教程集1

    北大青鸟Oracle教程集第一章 Oracle 入门 Version 3.0 目标 理解与 Oracle 相关的 RDBMS结构 结构 掌握Oracle 数据类型 掌握 掌握数据定义语言 掌握数据操纵语言 掌握事务处理和数据控制命令 Oracle 简介 对象关系...

    北大青鸟Oracle教程集2

    北大青鸟Oracle教程集第一章 Oracle 入门 Version 3.0 目标 理解与 Oracle 相关的 RDBMS结构 结构 掌握Oracle 数据类型 掌握 掌握数据定义语言 掌握数据操纵语言 掌握事务处理和数据控制命令 Oracle 简介 对象关系...

    Oracle Database 11g初学者指南--详细书签版

    1.3 Oracle Database 11g的基本数据类型 8 1.3.1 varchar2 8 1.3.2 数字 9 1.3.3 日期 9 1.3.4 时间戳 9 1.3.5 clob 10 1.3.6 blob 10 1.4 表 10 1.5 存储对象 11 1.5.1 视图 12 1.5.2 触发器 12 1.5.3 ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    LOB数据类型 clob 1~4GB 只能存储字符数据 nclob 1~4GB 保存本地语言字符集数据 blob 1~4GB 以二进制信息保存数据 三、 DDL语言 1. Create table命令 用于创建表。在创建表时,经常会创建该表的主键、外键、唯一...

Global site tag (gtag.js) - Google Analytics