Maison  >  Article  >  Java  >  Comment convertir le type CLOB en chaîne en Java ?

Comment convertir le type CLOB en chaîne en Java ?

王林
王林avant
2023-09-11 18:09:021623parcourir

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

CLOB signifie généralement Character Large Object, SQL Clob est un type de données intégré utilisé pour stocker de grandes quantités de données texte. En utilisant ce type de données, vous pouvez stocker jusqu'à 2 147 483 647 caractères de données.

L'interface java.sql.Clob de l'API JDBC représente le type de données CLOB. Étant donné que l'objet Clob dans JDBC est implémenté à l'aide de localisateurs SQL, il contient un pointeur logique vers le SQL CLOB (et non vers les données).

MySQL La base de données prend en charge ce type de données en utilisant quatre variables, à savoir TINYTEXT, TEXT, MEDIUMTEXT et LONGTEXT.

Convertissez le type de données CLOB en chaîne

  • Récupérez la valeur Clob de la table à l'aide de la méthode getClob() ou getCharacterStream() de l'interface PreparedStatement.
Reader r = clob.getCharacterStream();
  • lit chaque caractère un par un dans le flux de caractères récupéré et l'ajoute à un StringBuilder ou 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++;
  • Enfin, affichez ou stockez la chaîne obtenue.
System.out.println(buffer.toString());

Exemple

Créons une table nommée technologies_data dans la base de données MySQL en utilisant la requête suivante - La troisième colonne de l'article

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

table stocke les données de type CLOB.

Le programme JDBC suivant insère initialement 5 enregistrements dans une colonne Article (CLOB) de la table Technologies_data qui stocke un fichier texte (son contenu).

Ensuite, il récupère les enregistrements de la table et affiche le nom et le contenu de l'article. Ici, nous essayons de convertir les données CLOB récupérées en chaîne et de les afficher.

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

sortie

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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer