㈠ oracle 对于大文本数据用什么类型
clob类型,但对于这个类型处理起来还是比较麻烦的,varchar2长度为4000bytes,如果varchar2能满足楼主的需求,建议使用varchar2,下面提供了在java 中读取clob类型的方式,我主要讲的是JDBC的操作,Hibernate目前不讲,操作这个Clob列主要分为插入和获取俩个操作:
1、Java程序插入Clob值到Oracle数据库表中:
String clob= "这里主要是要插入到表中的值";
//前面具体数据库连接代码这里省略,直接进正题
String sql = "insert into clob_test(id,str) values (1,?)";
PreparedStatement stmt = conn.prepareStatement(sql);
// 将clob转成流形式
Reader clobReader = new StringReader(clob);
stmt.setCharacterStream(1,clobReader,clob.length());// 替换sql语句中的?
stmt.executeUpdate();
2、读取Clob列的值
String sql = "select str from clob_test where id=1";
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
//最后获得的结果
String resultClob;
if(rs.next()){
//导入oracle.sql.CLOB包,或者直接引用这个包
oracle.sql.CLOB clob = rs.getClob("str");
Reader rd= clob.getCharacterStream();// 得到流
BufferedReader br = new BufferedReader(rd);
String s = br.readLine();
StringBuffer sb= new StringBuffer();
while (s != null) {
// 循环赋值
sb.append(s);
s = br.readLine();
}
clobResult = sb.toString();
}
希望楼主采纳
㈡ oracle 中存储大量文字信息用什么字段,java后台怎么实现,请举例。谢谢。
在oracle中存储大量的文字应该是用CLOB字段来存储。这种类型在用java将数据存进数据库中时比较简单,直接将String类型的文本写入就可以了。但是在从数据库中读取CLOB类型的数据到java中时比较麻烦,因为你是拿不到数据的,只能拿到这个字段的一个隐式指针,然后还要通过输入流来拿到。
㈢ oracle的Clob类型在java的增。改、差。要对6000字符进行操作,普通的string不行。知道的。。。。。
好像在java中有提供Clob这个类型的数据。你可以直接声明一个Clob类型变量存储查询结果,然后直接对Clob变量进行操作。
具体方法可以查看API
㈣ JAVA读取Oracle数据库Clob字段转换成String问题
getClob,可以获得CLOB字段的值,用
rs.getString无法得到
数据
,返回的
是
NULL;
㈤ java 大字符串转为二进制流存入CLOB字段 JDBC方法
dbField.getFieldValue().toString().getBytes();
上面这个值有吗?取到了吗?
下面是我以前一个项目的
InputStream pic = new FileInputStream(dto.get(i).getLibPic());
sql = "INSERT INTO piclib (name,pic,sign,remark) VALUES (?,?,?,?)";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, dto.get(i).getName());
pstmt.setBinaryStream(2,pic,(int)dto.get(i).getLibPic().length());
㈥ java在oracle数据库中怎么插入读取CLOB值
参考:
/**
* 写入、更新CLOB字段的代码示例
*/
public void writeClob() {
//自定义的数据库连接管理类
Connection conn = DbManager.getInstance().getConnection();
try {
conn.setAutoCommit(false);
// 1.这种方法写入CLOB字段可以。
PreparedStatement stat = conn
.prepareStatement("insert into t_clob (id,clobfield) values(sys_guid(),?)");
String clobContent = "This is a very very long string";
StringReader reader = new StringReader(clobContent);
stat.setCharacterStream(1, reader, clobContent.length());
stat.executeUpdate();
// 2.使用类似的方法进行更新CLOB字段,则不能成功
// stat.close();
// stat =null;
// stat =
// conn.prepareStatement("update t_clob set clobfield=? where id=1");
// stat.setCharacterStream(1, reader, clobContent.length());
// stat.executeUpdate();
// 3.需要使用for update方法来进行更新,
// 但是,特别需要注意,如果原来CLOB字段有值,需要使用empty_clob()将其清空。
// 如果原来是null,也不能更新,必须是empty_clob()返回的结果。
stat = conn
.prepareStatement("select clobfield from t_clob where id='1' for update");
ResultSet rs = stat.executeQuery();
if (rs.next()) {
oracle.sql.CLOB clob = (oracle.sql.CLOB) rs
.getClob("clobfield");
Writer outStream = clob.getCharacterOutputStream();
char[] c = clobContent.toCharArray();
outStream.write(c, 0, c.length);
outStream.flush();
outStream.close();
}
conn.commit();
} catch (SQLException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DbManager.getInstance().closeConnection(conn);
}