以下代碼嘗試從JDBC中的oracle數據庫中檢索CLOB文件。從Oracle 10g中檢索CLOB時出錯
代碼: -
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.util.Properties;
public class Retrieving_Clob {
public static void main(String[] args) throws Exception{
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Properties p = new Properties();
p.put("user", "system");
p.put("password", "password");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe",p);
PreparedStatement pstmt = con.prepareStatement("select * from myclob");
ResultSet rs = pstmt.executeQuery();
rs.next();
Reader r = rs.getCharacterStream(1);
int ch;
File file = new File("H:/newFile.txt");
FileWriter fw = new FileWriter(file,true);
while((ch= r.read())!= -1)
fw.write((char)ch);
fw.close();
con.close();
}
}
我試圖找回從ResultSet指數CLOB文件= 1,代碼是給我下面的錯誤: -
Exception in thread "main" java.lang.NullPointerException
at jdbc.Retrieving_Clob.main(Retrieving_Clob.java:41)
錯誤路線是: -
while((ch= r.read())!= -1)
錯誤的原因是什麼以及如何解決問題?
注意: -提供的名稱的空白文件正在給定位置創建。
使用'select *',然後調用'ResultSet.getX(1)'很冒險。最好選擇特定列或按列名(或兩者)。 –