MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

JDBC Clobデータ型とは何ですか?それからデータを保存して読み取る方法は?


CLOBは一般にCharacterLargeObjectの略で、SQL Clobは組み込みのデータ型であり、大量のテキストデータを格納するために使用されます。このデータ型を使用すると、最大2,147,483,647文字のデータを格納できます。

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

MYSQLデータベースは、4つの変数を使用してこのデータ型をサポートします。

  • TINYTEXT: 最大28-1(255)文字のCLOBタイプ。

  • テキスト: 最大216〜1(65535)文字のCLOBタイプ。

  • ミディアムテキスト: 最大224-1(16777215)文字のCLOBタイプ。

  • ロングテキスト: 最大232-1(4294967295)文字のCLOBタイプ。

Clobデータ型をtotableにデータベースに保存する

Clobデータ型をデータベースに格納するには、JDBCプログラムを使用して、以下の手順に従います

ステップ1:データベースに接続する

getConnection()を使用してデータベースに接続できます DriverManagerのメソッド クラス。

jdbc:mysql:// localhost / sampleDB であるMySQLURLを渡して、MySQLデータベースに接続します。 (sampleDBはデータベース名です)、getConnection()メソッドのパラメーターとしてのユーザー名とパスワード。

String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");

ステップ2:プリペアドステートメントを作成する

prepareStatement()を使用してPreparedStatementオブジェクトを作成します 接続の方法 インターフェース。このメソッドに、挿入クエリ(プレースホルダーを使用)をパラメーターとして渡します。

PreparedStatement pstmt = con.prepareStatement("INSERT INTO Technologies(Name,
Type, Article ) VALUES (?, ?, ?)");

ステップ3:プレースホルダーに値を設定します

PreparedStatement のsetterメソッドを使用して、プレースホルダーに値を設定します インターフェース。列のデータ型に従ってメソッドを選択しました。たとえば、列がVARCHARタイプの場合はsetString()メソッドを使用し、INTタイプの場合はsetInt()メソッドを使用できます。

また、Clobタイプの場合は、setCharacterStream()またはsetClob()メソッドを使用して値を設定できます。これらのメソッドに、パラメータインデックスとReaderクラスのオブジェクトを表す整数変数をパラメータとして渡します。

pstmt.setString(1, "JavaFX");
pstmt.setString(2, "Java Library");
FileReader reader = new FileReader("E:\\images\\javafx.txt");
pstmt.setClob(3, reader);
pstmt.execute();

ステップ4:ステートメントを実行する

execute()を使用して、上記で作成したPreparedStatementオブジェクトを実行します。 PreparedStatementのメソッド インターフェイス。

データベースからblobを取得しています

ResultSetインターフェイスのgetClob()メソッドは、列のインデックスを表す整数(または、列の名前を表すString値)を受け取り、指定された列の値を取得して、Clobオブジェクトの形式で返します。

while(rs.next()) {
   System.out.println(rs.getString("Name"));
   System.out.println(rs.getString("Type"));
   Clob clob = rs.getClob("Article");
}

getCharacterStream() Clobのメソッド インターフェイスは、現在の Clobのコンテンツを取得します オブジェクトであり、リーダーとして返されます オブジェクト。

getClob()の使用 このメソッドでは、 write()を使用して、ClobのコンテンツをReaderオブジェクトとして取得し、取得したコンテンツを含むテキストファイルを作成できます。 FileOutputStreamのメソッド オブジェクト。

Reader r = clob.getCharacterStream();
char cbuf[] = new char[r.read()];
r.read(cbuf);
FileOutputStream outPutStream = new
FileOutputStream("E:\\images\\clob_output"+i+".txt");
outPutStream.write(cbuf.toString().getBytes());

次の例では、MySQLデータベースにClobデータ型を含むテーブルを作成します。ファイルから大きなテキストデータをファイルに挿入します。テキストを取得して別のテキストファイルに保存します。

import java.io.FileReader;
import java.io.FileWriter;
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 ClobExample {
   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/sampleDB";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Creating a table
      Statement stmt = con.createStatement();
      stmt.execute("CREATE TABLE Technologies( Name VARCHAR(255), Type VARCHAR(255), Article LONGTEXT)");
      System.out.println("Table Created......");

      //Inserting values
      String query = "INSERT INTO Technologies(Name, Type, Article ) VALUES (?, ?, ?)";
      PreparedStatement pstmt = con.prepareStatement(query);
      pstmt.setString(1, "JavaFX");
      pstmt.setString(2, "Java Library");
      FileReader reader = new FileReader("E:\\images\\javafx.txt");
      pstmt.setClob(3, reader);
      pstmt.execute();
      pstmt.setString(1, "CoffeeScript");
      pstmt.setString(2, "Scripting Language");
      reader = new FileReader("E:\\images\\coffeescript.txt");
      pstmt.setClob(3, reader);
      pstmt.execute();
      pstmt.setString(1, "Cassandra");
      pstmt.setString(2, "NoSQL Database");
      reader = new FileReader("E:\\images\\cassandra.txt");
      pstmt.setClob(3, reader);
      pstmt.execute();
      //Retrieving the data
      ResultSet rs = stmt.executeQuery("select * from Technologies");
      int j = 0;
      System.out.println("Contents of the table are: ");
      while(rs.next()) {
         System.out.println(rs.getString("Name"));
         Clob clob = rs.getClob("Article");
         Reader r = clob.getCharacterStream();
         String filePath = "E:\\Data\\clob_output"+j+".txt";
         FileWriter writer = new FileWriter(filePath);
         int i;
         while ((i=r.read())!=-1) {
            writer.write(i);
         }
         writer.close();
         System.out.println(filePath);
         j++;
      }
   }
}

出力

Connection established......
Table Created......
Contents of the table are:
JavaFX
Java Library
E:\images\clob_output1.txt
CoffeeScript
Scripting Language
E:\images\clob_output2.txt
Cassandra
NoSQL Database
E:\images\clob_output3.txt

  1. Windows Serverとは何ですか?Windowsとの違いは何ですか?

    Windows OSは、オペレーティングシステムの市場シェアのかなりの部分を占めています。そのため、最も人気のあるオペレーティングシステムの1つと見なすことができます。 OSは2つの主要なバリエーションで提供されます。 Windows for Desktop Windows Server Microsoft Windows Server 2022は、Windows11の最新のServerエディションです。どちらも異なる目的を果たしていることを知っておくことが重要です。それでは、 Windows Serverとは何かを理解してみましょう。 そしてそれはWindowsとどう違うのです

  2. AirDrop とは何か、AirDrop を使用してファイルを共有する方法は

    他の Mac、iPhone、iPad にファイルをすぐに送信 技術が進歩するにつれて、古いものは新しいものに取って代わられています。この点で、信頼できる電子メールを AirDrop で置き換えることもできます。これは意外に聞こえるかもしれませんが、AirDrop は退屈な電子メールと比較して、実際にははるかに優れたコミュニケーション ソリューションです。 AirDrop を使用すると、暗号化された接続により、近くの Mac と iOS デバイス間でファイルをワイヤレスで共有できます。 最良の部分は、長いセットアップなしでファイルの共有を開始できることです。デバイスは、同じネットワーク