Rumah  >  Artikel  >  Java  >  Bagaimana untuk menukar jenis CLOB kepada rentetan di Jawa?

Bagaimana untuk menukar jenis CLOB kepada rentetan di Jawa?

王林
王林ke hadapan
2023-09-11 18:09:021715semak imbas

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

CLOB Lazimnya bermaksud Character Large Object, SQL Clob ialah jenis data terbina dalam yang digunakan untuk menyimpan sejumlah besar data teks. Menggunakan jenis data ini, anda boleh menyimpan sehingga 2,147,483,647 aksara data.

Antara muka java.sql.Clob API JDBC mewakili jenis data CLOB. Oleh kerana objek Clob dalam JDBC dilaksanakan menggunakan pencari SQL, ia memegang penunjuk logik ke SQL CLOB (bukan data).

MySQL Pangkalan data menyediakan sokongan untuk jenis data ini menggunakan empat pembolehubah iaitu TINYTEXT, TEXT, MEDIUMTEXT dan LONGTEXT.

Tukar jenis data CLOB kepada rentetan

  • Dapatkan nilai Clob daripada jadual menggunakan getClob() atau getCharacterStream() kaedah PreparedStatement antara muka.
Reader r = clob.getCharacterStream();
  • membaca setiap aksara satu demi satu daripada strim aksara yang diambil dan menambahkannya pada StringBuilder atau 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++;
  • Akhir sekali, paparkan atau simpan String yang diperolehi.
System.out.println(buffer.toString());

Contoh

Mari kita buat jadual bernama technologies_data dalam pangkalan data MySQL menggunakan pertanyaan berikut - Lajur ketiga

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

jadual Artikel menyimpan data jenis CLOB.

Program JDBC berikut pada mulanya memasukkan 5 rekod ke dalam lajur Artikel (CLOB) dalam jadual Technologies_data yang menyimpan fail teks (kandungannya).

Kemudian ia mendapatkan semula rekod jadual dan memaparkan nama dan kandungan artikel. Di sini kami cuba menukar data CLOB yang diambil kepada String dan memaparkannya.

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(" ");
      }
   }
}

output

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.

Atas ialah kandungan terperinci Bagaimana untuk menukar jenis CLOB kepada rentetan di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam