標籤:CLOB ORACEL java
分析:在ORACEL中大文本的不能直接插入,是因為oracle會將clob自動轉為String,當文本位元組超出4000位元組,提示字元太長。
備忘:
GBK編碼:一個漢字占兩個位元組。
UTF-16編碼:通常漢字佔兩個位元組,CJKV擴充B區、擴充C區、擴充D區中的漢字佔四個位元組(一般字元的Unicode範圍是U+0000至U+FFFF,而這些擴充部分的範圍大於U+20000,因而要用兩個UTF-16)。
UTF-8編碼(變長編碼):通常漢字占三個位元組,擴充B區以後的漢字佔四個位元組。
ASCII碼 一個字元佔用一個位元組
GB2312碼1字元2位元組 故:oracel按照UTF-8方式儲存只能儲存4000/(3*2)=666個漢字,以GBK方式儲存4000/2=2000
解決方案:通過Stream流方式處理
package oracel_test;
import java.io.IOException;
import java.io.StringReader;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class ClobTest3 {
@SuppressWarnings("deprecation")
public static void main(String[] args) throws SQLException, ClassNotFoundException, IOException, ParseException {
String context1 = "1022288Java是一門物件導向程式設計語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態物件導向程式設計語言的代表,極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程[1] 。"
+ "Java具有簡單性、物件導向、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點[2] 。Java可以編寫傳統型應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等Java是一門物件導向程式設計語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態物件導向程式設計語言的代表,極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程[10] 。"
+ "Java具有簡單性、物件導向、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點[2] 。Java可以編寫傳統型應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等Java是一門物件導向程式設計語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態物件導向程式設計語言的代表,極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程[9] 。"
+ "Java具有簡單性、物件導向、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點[2] 。Java可以編寫傳統型應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等Java是一門物件導向程式設計語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態物件導向程式設計語言的代表,極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程[8] 。"
+ "Java具有簡單性、物件導向、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點[2] 。Java可以編寫傳統型應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等Java是一門物件導向程式設計語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態物件導向程式設計語言的代表,極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程[7] 。"
+ "Java具有簡單性、物件導向、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點[2] 。Java可以編寫傳統型應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等Java是一門物件導向程式設計語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態物件導向程式設計語言的代表,極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程[6] 。"
+ "Java具有簡單性、物件導向、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點[2] 。Java可以編寫傳統型應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等Java是一門物件導向程式設計語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態物件導向程式設計語言的代表,極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程[5] 。"
+ "Java具有簡單性、物件導向、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點[2] 。Java可以編寫傳統型應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等Java是一門物件導向程式設計語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態物件導向程式設計語言的代表,極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程[4] 。"
+ "Java具有簡單性、物件導向、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點[2] 。Java可以編寫傳統型應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等Java是一門物件導向程式設計語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態物件導向程式設計語言的代表,極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程[3] 。"
+ "Java具有簡單性、物件導向、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點[2] 。Java可以編寫傳統型應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等Java是一門物件導向程式設計語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態物件導向程式設計語言的代表,極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程[2] 。"
+ "Java具有簡單性、物件導向、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點[2] 。Java可以編寫傳統型應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等Java是一門物件導向程式設計語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態物件導向程式設計語言的代表,極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程[1] 。";
String context2 = "10222233Java是一門物件導向程式設計語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態物件導向程式設計語言的代表,極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程[1] 。"
+ "Java具有簡單性、物件導向、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點[2] 。Java可以編寫傳統型應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等Java是一門物件導向程式設計語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態物件導向程式設計語言的代表,極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程[10] 。"
+ "Java具有簡單性、物件導向、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點[2] 。Java可以編寫傳統型應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等Java是一門物件導向程式設計語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態物件導向程式設計語言的代表,極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程[9] 。"
+ "Java具有簡單性、物件導向、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點[2] 。Java可以編寫傳統型應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等Java是一門物件導向程式設計語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態物件導向程式設計語言的代表,極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程[8] 。"
+ "Java具有簡單性、物件導向、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點[2] 。Java可以編寫傳統型應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等Java是一門物件導向程式設計語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態物件導向程式設計語言的代表,極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程[7] 。"
+ "Java具有簡單性、物件導向、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點[2] 。Java可以編寫傳統型應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等Java是一門物件導向程式設計語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態物件導向程式設計語言的代表,極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程[6] 。"
+ "Java具有簡單性、物件導向、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點[2] 。Java可以編寫傳統型應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等Java是一門物件導向程式設計語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態物件導向程式設計語言的代表,極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程[5] 。"
+ "Java具有簡單性、物件導向、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點[2] 。Java可以編寫傳統型應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等Java是一門物件導向程式設計語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態物件導向程式設計語言的代表,極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程[4] 。"
+ "Java具有簡單性、物件導向、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點[2] 。Java可以編寫傳統型應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等Java是一門物件導向程式設計語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態物件導向程式設計語言的代表,極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程[3] 。"
+ "Java具有簡單性、物件導向、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點[2] 。Java可以編寫傳統型應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等Java是一門物件導向程式設計語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態物件導向程式設計語言的代表,極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程[2] 。"
+ "Java具有簡單性、物件導向、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點[2] 。Java可以編寫傳統型應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等Java是一門物件導向程式設計語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態物件導向程式設計語言的代表,極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程[1] 。";
String url = "jdbc:oracle:thin:@localhost:1521:CQS";
String user = "jition";
String password = "jition";
Class.forName("oracle.jdbc.OracleDriver");
Connection conn = DriverManager.getConnection(url, user, password);
conn.setAutoCommit(false);
String stringDate = "";
String insertsql = "insert into context(id,context,name,CREATE_DATE) values(?,?,?,?)";
PreparedStatement ps = conn.prepareStatement(insertsql);
ps.setInt(1, 11112222);
//處理CLOB對象
StringReader reader1 = new StringReader(context1);
StringReader reader2 = new StringReader(context2);
ps.setCharacterStream(2, reader1, context1.length());
ps.setCharacterStream(3, reader2, context2.length());
if (stringDate != null && !stringDate.equals("")) {
java.util.Date date = new SimpleDateFormat("yyyy/MM/dd").parse(stringDate);
ps.setDate(4, new Date(date.getTime()));
} else {
ps.setDate(4, null);
}
ps.executeUpdate();
conn.commit();
conn.close();
}
}
JAVA中操作CLOB大對象 ,提示ORA-01704字串文字太長