Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 CLOB 유형을 문자열로 변환하는 방법은 무엇입니까?

<시간/>

CLOB는 일반적으로 Character Large Object의 약자이며 SQL Clob은 내장 데이터 유형이며 많은 양의 텍스트 데이터를 저장하는 데 사용됩니다. 이 데이터 유형을 사용하여 최대 2,147,483,647자까지 데이터를 저장할 수 있습니다.

JDBC API의 java.sql.Clob 인터페이스는 CLOB 데이터 유형을 나타냅니다. JDBC의 Clob 개체는 SQL locator를 사용하여 구현되므로 데이터가 아닌 SQL CLOB에 대한 논리적 포인터를 보유합니다.

MySQL 데이터베이스는 TINYTEXT, TEXT, MEDIUMTEXT 및 LONGTEXT의 4가지 변수를 사용하여 이 데이터 유형에 대한 지원을 제공합니다.

CLOB 데이터 유형을 문자열로 변환하려면

  • getClob()을 사용하여 테이블에서 Clob 값 검색 또는 getCharacterStream() PresparedStatement 메소드 인터페이스.
Reader r = clob.getCharacterStream();
  • 검색된 문자 스트림에서 각 문자를 하나씩 읽고 StringBuilder에 추가합니다. 또는 StringBuffer .
int j = 0;
StringBuffer buffer = new StringBuffer();
int ch;
while ((ch = r.read())!=-1) {
   buffer.append(""+(char)ch);
}
System.out.println(buffer.toString());
j++;
  • 마지막으로 획득한 String을 표시하거나 저장합니다.
System.out.println(buffer.toString());

예시

technologies_data라는 이름의 테이블을 생성해 보겠습니다. 다음 쿼리를 사용하여 MySQL 데이터베이스에서 -

CREATE TABLE Technologies (Name VARCHAR(255), Type VARCHAR(255), Article LONGTEXT);

Article 테이블의 세 번째 열은 CLOB 유형의 데이터를 저장합니다.

다음 JDBC 프로그램은 처음에 문서 열(CLOB 유형)에 텍스트 파일(내용)을 저장하는 기술_데이터 테이블에 5개의 레코드를 삽입합니다.

그런 다음 테이블의 레코드를 검색하고 기사의 이름과 내용을 표시합니다. 여기서는 검색된 CLOB의 데이터를 String으로 변환하여 표시하려고 합니다.

import java.io.FileReader;
import java.io.Reader;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
public class ClobToString {
   public static void main(String args[]) throws Exception {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //Getting the connection
      String mysqlUrl = "jdbc:mysql://localhost/sampledatabase";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Creating a Statement object
      Statement stmt = con.createStatement();
      //Inserting values
      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();
      pstmt.setString(1, "CoffeeScript");
      pstmt.setString(2, "Scripting Language");
      reader = new FileReader("E:\\images\\coffeescript_contents.txt");
      pstmt.setClob(3, reader);
      pstmt.execute();
      pstmt.setString(1, "Cassandra");
      pstmt.setString(2, "NoSQL Database");
      reader = new FileReader("E:\\images\\cassandra_contents.txt");
      pstmt.setClob(3, reader);
      pstmt.execute();
      //Retrieving the data
      ResultSet rs = stmt.executeQuery("select * from Technologies_data");
      System.out.println("Contents of the table are: ");
      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());
         System.out.println(" ");
      }
   }
}

출력

Connection established......
Contents of the table are:
Article: JavaFX
Contents: JavaFX is a Java library using which you can develop Rich Internet Applications. By using Java technology, these applications have a browser penetration rate of 76%.
Article: CoffeeScript
Contents: CoffeeScript is a lightweight language based on Ruby and Python which transcompiles (compiles from one source language to another) into JavaScript. It provides better syntax avoiding the quirky parts of JavaScript, still retaining the flexibility and beauty of the language.
Article: Cassandra
Contents: Apache Cassandra is a highly scalable, high-performance distributed database designed to handle large amounts of data across many commodity servers,
providing high availability with no single point of failure. It is a type of NoSQL database. Let us first understand what a NoSQL database does.