Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เราจะดึงไฟล์จากฐานข้อมูลโดยใช้ JDBC ได้อย่างไร


ชุดผลลัพธ์ อินเทอร์เฟซมีวิธีการที่ชื่อ getClob() และ getCharacterStream() เพื่อดึง Clob ประเภทข้อมูล ซึ่งโดยทั่วไปจะจัดเก็บเนื้อหาของไฟล์

เมธอดเหล่านี้ยอมรับจำนวนเต็มที่แทนดัชนีของคอลัมน์ (หรือค่าสตริงที่แสดงชื่อคอลัมน์) และดึงค่าที่คอลัมน์ที่ระบุ

ความแตกต่างคือเมธอด getClob() ส่งคืนอ็อบเจ็กต์ Clob และเมธอด getCgaracterStream() ส่งคืนอ็อบเจ็กต์ Reader ที่เก็บเนื้อหาของประเภทข้อมูล Clob

ตัวอย่าง

สมมติว่าเราได้สร้างตารางชื่อ Articles ในฐานข้อมูลโดยมีคำอธิบายดังต่อไปนี้

<ก่อนหน้า>+---------+--------------+------+----+-------- --------+| สนาม | พิมพ์ | Null | คีย์ | ค่าเริ่มต้น | พิเศษ |+---------+--------------+------+----+--------- +-------+| ชื่อ | varchar(255) | ใช่ | | NULL | || บทความ | longtext | ใช่ | | NULL | |+---------+--------------+------+----+---------+ --------

และเราได้แทรกบทความสามบทความที่มีชื่อบทความ 1 บทความ 2 และบทความ 3 ดังแสดงด้านล่าง:

เราจะดึงไฟล์จากฐานข้อมูลโดยใช้ JDBC ได้อย่างไร

ตัวอย่าง

โปรแกรมต่อไปนี้ดึงเนื้อหาของบทความในตารางโดยใช้เมธอด getString() และ getClob() และบันทึกไว้ในไฟล์ที่ระบุ

นำเข้า 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 คำสั่ง; คลาสสาธารณะ RetrievingFileFromDatabase { โมฆะสาธารณะหลัก (สตริง args []) พ่นข้อยกเว้น { // การลงทะเบียนไดรเวอร์ DriverManager.registerDriver (ใหม่ com.mysql.jdbc.Driver ()); //รับการเชื่อมต่อสตริง mysqlUrl ="jdbc:mysql://localhost/sampleDB"; การเชื่อมต่อ con =DriverManager.getConnection (mysqlUrl, "root", "password"); System.out.println("การเชื่อมต่อสำเร็จ......"); //สร้างคำสั่ง aStatement stmt =con.createStatement(); //การดึงข้อมูล ResultSet rs =stmt.executeQuery("select * from Articles"); int j =0; System.out.println("เนื้อหาของตารางคือ:"); ในขณะที่ (rs.next ()) { System.out.println (rs.getString ("ชื่อ")); Clob clob =rs.getClob("บทความ"); Reader reader =clob.getCharacterStream(); สตริง filePath ="E:\\Data\\clob_output"+j+".txt"; FileWriter writer =FileWriter ใหม่ (filePath); int ฉัน; ในขณะที่ ((i =reader.read())!=-1) { writer.write (i); } writer.close(); System.out.println(filePath); เจ++; } }}

ผลลัพธ์

เชื่อมต่อแล้ว......เนื้อหาของตารางคือ:article1E:\Data\clob_output0.txtarticle2E:\Data\clob_output1.txtarticle3E:\Data\clob_output2.txt