CLOB (Character Large Object) ใช้เก็บข้อความขนาดใหญ่ ได้สูงสุด 2,147,483,647 ตัวอักษร ใน JDBC ใช้ interface java.sql.Clob MySQL รองรับผ่าน TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT
ขั้นตอนแปลง CLOB เป็น String
- ดึงค่า Clob จากตารางด้วย getClob() หรือ getCharacterStream() ของ PreparedStatement
- อ่านทีละตัวอักษรจาก Stream แล้ว append ไปยัง StringBuilder หรือ StringBuffer
- นำ String ที่ได้ไปแสดงหรือเก็บ
โค้ดสำคัญ
// 1. ดึง Clob และได้ Reader
Reader r = clob.getCharacterStream();
// 2. อ่านทีละตัวอักษร
int ch;
StringBuffer buffer = new StringBuffer();
while ((ch = r.read()) != -1) {
buffer.append((char) ch);
}
// 3. ใช้งาน String
System.out.println(buffer.toString());
ตัวอย่างโค้ดเต็ม (Insert และ Read CLOB)
import java.io.FileReader;
import java.io.Reader;
import java.sql.*;
public class ClobToString {
public static void main(String args[]) throws Exception {
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
String mysqlUrl = "jdbc:mysql://localhost/sampledatabase";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
System.out.println("Connection established......");
Statement stmt = con.createStatement();
// Insert CLOB จากไฟล์
String query = "INSERT INTO Technologies_data VALUES (?, ?, ?)";
PreparedStatement pstmt = con.prepareStatement(query);
pstmt.setString(1, "JavaFX");
pstmt.setString(2, "Java Library");
FileReader reader = new FileReader("E:\\images\\javafx_contents.txt");
pstmt.setClob(3, reader);
pstmt.execute();
// ... insert อื่นๆ ...
// Read CLOB แปลงเป็น String
ResultSet rs = stmt.executeQuery("select * from Technologies_data");
while (rs.next()) {
System.out.println("Article: " + rs.getString("Name"));
Clob clob = rs.getClob("Article");
Reader r = clob.getCharacterStream();
StringBuffer buffer = new StringBuffer();
int ch;
while ((ch = r.read()) != -1) {
buffer.append((char) ch);
}
System.out.println("Contents: " + buffer.toString());
}
}
}
ผลลัพธ์
Article: JavaFX
Contents: JavaFX is a Java library using which you can develop Rich Internet Applications...
Article: CoffeeScript
Contents: CoffeeScript is a lightweight language based on Ruby and Python...
Article: Cassandra
Contents: Apache Cassandra is a highly scalable, high-performance distributed database...