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

JDBC를 사용하여 데이터베이스에서 파일을 검색하는 방법은 무엇입니까?

<시간/>

결과 집합 인터페이스는 getClob()이라는 메서드를 제공합니다. 및 getCharacterStream() Clob 검색 파일의 내용이 일반적으로 저장되는 데이터 유형입니다.

이 메서드는 열의 인덱스를 나타내는 정수(또는 열의 이름을 나타내는 문자열 값)를 허용하고 지정된 열에서 값을 검색합니다.

차이점은 getClob() 메서드는 Clob 객체를 반환하고 getCgaracterStream() 메서드는 Clob 데이터 유형의 내용을 담고 있는 Reader 객체를 반환한다는 것입니다.

예시

다음 설명을 사용하여 데이터베이스에 Articles라는 테이블을 생성했다고 가정합니다.

+---------+--------------+------+-----+---------+-------+
| Field   | Type         | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| Name    | varchar(255) | YES  |     | NULL    |       |
| Article | longtext     | YES  |     | NULL    |       |
+---------+--------------+------+-----+---------+-------+

그리고 아래와 같이 Article 1, Article 2, Article 3이라는 세 개의 문서를 삽입했습니다.

JDBC를 사용하여 데이터베이스에서 파일을 검색하는 방법은 무엇입니까?

다음 프로그램은 getString() 및 getClob() 메서드를 사용하여 Articles 테이블의 내용을 검색하고 지정된 파일에 저장합니다.

import java.io.FileWriter;
import java.io.Reader;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class RetrievingFileFromDatabase {
   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 aStatement
      Statement stmt = con.createStatement();
      //Retrieving the data
      ResultSet rs = stmt.executeQuery("select * from Articles");
      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 reader = clob.getCharacterStream();
         String filePath = "E:\\Data\\clob_output"+j+".txt";
         FileWriter writer = new FileWriter(filePath);
         int i;
         while ((i = reader.read())!=-1) {
            writer.write(i);
         }
         writer.close();
         System.out.println(filePath);
         j++;
      }
   }
}

출력

Connection established......
Contents of the table are:
article1
E:\Data\clob_output0.txt
article2
E:\Data\clob_output1.txt
article3
E:\Data\clob_output2.txt