一、Oracle的基本数据类型
1.字符数据类型
CHAR:定长字符串,默认长度1B,最大长度255B
VARCHAR2:变长字符串,必须指定最大字节数,最大长度2000B
LONG:变长字符串,最大长度2G。一个表中最多只有一个LONG列,LONG列不能有索引,不能出现完整性约束。
2.数字数据类型
NUMBER:存储零、正负定点数或浮点数,最大进度38位。语法:NUMBER(P,S) P表示总的数字数,S表示小数点右边的数字位。
FLOAT:指定浮点数
DATE:用于存储日期和时间信息。若要指定日期值,须用TO_DATE()将字符型的值或数值转化为日期型的值。日期型数据的默认格式为DD-MON-YY
RAW及LONG RAW:存储字符串、浮点数、二进制数据等。RAW数据仅可存储和检索,不能执行串操作。
ROWID:数据库表中的一个伪列。数据库中每一行都有一个地址,可通过查询ROWID获得行地址。值为16进制字符串。
BLOB:二进制数据可以存储到不同的表空间中。
CLOB:字符型数据可以存储到不同的表空间中。
BFILE:二进制文件可以存储在服务器上的外部文件中。
二、BLOB与CLOB操作案例
1、 get
CLOB
//获得数据库连接
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//不需要“for update”
ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1");
if (rs.next())
{
java.sql.Clob clob = rs.getClob("CLOBATTR");
Reader inStream = clob.getCharacterStream();
char[] c = new char[(int) clob.length()];
inStream.read(c);
//data是读出并需要返回的数据,类型是String
data = new String(c);
inStream.close();
}
inStream.close();
con.commit();
con.close();
BLOB:
//获得数据库连接
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//不需要“for update”
ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1");
if (rs.next())
{
java.sql.Blob blob = rs.getBlob("BLOBATTR");
InputStream inStream = blob.getBinaryStream();
//data是读出并需要返回的数据,类型是byte[]
data = new byte[input.available()];
inStream.read(data);
inStream.close();
}
inStream.close();
con.commit();
con.close();
2、 put
CLOB
//获得数据库连接
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//插入一个空对象empty_clob()
st.executeUpdate("insert into TESTCLOB (ID, NAME, CLOBATTR) values (1, "thename", empty_clob())");
//锁定数据行进行更新,注意“for update”语句
ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1 for update");
if (rs.next())
{
//得到java.sql.Clob对象后强制转换为oracle.sql.CLOB
oracle.sql.CLOB clob = (oracle.sql.CLOB) rs.getClob("CLOBATTR");
Writer outStream = clob.getCharacterOutputStream();
//data是传入的字符串,定义:String data
char[] c = data.toCharArray();
outStream.write(c, 0, c.length);
}
outStream.flush();
outStream.close();
con.commit();
con.close();
BLOB
//获得数据库连接
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//插入一个空对象empty_blob()
st.executeUpdate("insert into TESTBLOB (ID, NAME, BLOBATTR) values (1, "thename", empty_blob())");
//锁定数据行进行更新,注意“for update”语句
ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1 for update");
if (rs.next())
{
//得到java.sql.Blob对象后强制转换为oracle.sql.BLOB
oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("BLOBATTR");
OutputStream outStream = blob.getBinaryOutputStream();
//data是传入的byte数组,定义:byte[] data
outStream.write(data, 0, data.length);
}
outStream.flush();
outStream.close();
con.commit();
con.close();
相关推荐
BLOB和CLOB的区别以及在ORALCE中的插入和查询操作
oracle中的Blob和Clob区别,希望对大家学习有帮助呵
JDBC中操作Blob、Clob等对象 实例详细JDBC中操作Blob、Clob等对象 实例详细JDBC中操作Blob、Clob等对象 实例详细JDBC中操作Blob、Clob等对象 实例详细JDBC中操作Blob、Clob等对象 实例详细JDBC中操作Blob、Clob等...
JDBC中操作Blob、Clob等对象
在hibernate+microsoft sqlserver中使用Blob,和Clob,
oracle Blob转换Clob
CLOB、BLOB___CLOB与BLOB的区别
spring 中对大数据的处理,包括clob,blob的数据。比之jdbc下简便很多。
前两个例子的Demo 博文链接:https://zhangguanzhong.iteye.com/blog/623489
使用Hibernate映射Blob,Clob字段,并对这些字段完成存,取功能
NULL 博文链接:https://konglx.iteye.com/blog/609390
oracle Blob Clob 大数处理 代码 文件上传 下载
UTL_RAW.CAST_TO_VARCHAR2
oracle对大对象类型操作:blob,clob,nclob,bfile
hibernate Blob、Clob字段的映射的例子.数据库mysql,数据库放在文件夹里面,例子的说明文章在我的csdn blog: http://blog.csdn.net/zhengcandan
Mybatis 处理 CLOB、BLOB 类型数据
对非DB2数据库的数据复制, 不直接支持LOB(BLOB,ClOB)等大对象数据类型,但在实际应用中,用户需要复制的表中有可能有BLOB等大对象数据,如果数据目标为Oracle,这类大对象复制的需求可通过对WII的复制进行特殊配置实现...
完整通过JAVA读写ORACLE中CLOB、BLOB字段的方法,提供数据库连接池的方法