JavaでCLOB型を文字列に変換するにはどうすればよいですか?

王林
リリース: 2023-09-11 18:09:02
転載
1733 人が閲覧しました

在Java中如何将CLOB类型转换为字符串?

CLOB 通常は Character Large Object の略で、SQL Clob は大量のテキスト データを格納するために使用される組み込みデータ型です。このデータ型を使用すると、最大 2,147,483,647 文字のデータを保存できます。

JDBC API の java.sql.Clob インターフェイスは CLOB データ型を表します。 JDBC の Clob オブジェクトは SQL ロケーターを使用して実装されるため、(データではなく) SQL CLOB への論理ポインターを保持します。

MySQL データベースは、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT という 4 つの変数を使用して、このデータ型をサポートします。

CLOB データ型を文字列に変換します。

  • PreparedStatement インターフェイスの getClob() またはgetCharacterStream() メソッド。
Reader r = clob.getCharacterStream();
ログイン後にコピー
  • 取得した文字ストリームから各文字を 1 つずつ読み取り、それを 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++;
ログイン後にコピー
  • 最後に取得した文字列を表示または保存します。
System.out.println(buffer.toString());
ログイン後にコピー

次のクエリを使用して、MySQL データベースに technologies_data という名前のテーブルを作成しましょう -

CREATE TABLE Technologies (Name VARCHAR(255), Type VARCHAR(255), Article LONGTEXT);
ログイン後にコピー

テーブル記事 3 番目の列CLOB型データを格納します。

次の JDBC プログラムは、最初に、テキスト ファイル (その内容) を格納する Technologies_data テーブルの Article 列 (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.
ログイン後にコピー

以上がJavaでCLOB型を文字列に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート