java.sql.Clob
和 java.sql.NClob
之间有什么区别吗? java.sql.NClob
接口(interface)没有新方法。我尝试了以下方法:
设置SQL:
create table tab(id number(2), clobcol clob, nclobcol nclob)
insert into tab values (1, to_clob('你好'), to_nclob('你好'))
JDBC 代码:
conn = getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from tab");
rs.next();
Clob c = rs.getClob(2);
NClob nc = rs.getNClob(3);
InputStream inputStream1 = c.getAsciiStream();
InputStream inputStream2 = nc.getAsciiStream();
System.out.println(inputStream1.available());
System.out.println(inputStream2.available());
c.free();
nc.free();
我也尝试过其他一些方法,看起来输出没有什么区别。我能看到一些具体的差异吗?
在数据库中添加了支持的字符集:
SELECT parameter, value
FROM v$nls_parameters
3 WHERE parameter LIKE '%CHARACTERSET';
PARAMETER VALUE
--------------------------------- --------------------
NLS_CHARACTERSET AL32UTF8
NLS_NCHAR_CHARACTERSET AL16UTF16
最佳答案
在过去(80 年代),许多数据库是使用 US7ASCII(在美国)或 ISOLATIN1(在欧洲)作为字符集创建的。对于今天仍然存在的这些数据库(经过多次升级),存储非 ASCII 字符串数据的唯一方法是使用特殊类型 NVARCHAR 或 NCLOB。这些 Nxxx 类型不被直接使用 UTF8(现在是 Oracle 中的默认值)作为编码创建的较新数据库使用。
关于java - JDBC Clob 和 NClob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42358650/