簡體   English   中英

從 Oracle 10g 檢索 CLOB 時出錯

[英]Error while retieving CLOB from Oracle 10g

以下代碼嘗試從 JDBC 中的 oracle 數據庫中檢索 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();
}
}

我正在嘗試從結果集 index=1 中檢索 CLOB 文件。代碼給了我以下錯誤:-

Exception in thread "main" java.lang.NullPointerException
at jdbc.Retrieving_Clob.main(Retrieving_Clob.java:41)

錯誤的線路是:-

        while((ch= r.read())!= -1)

錯誤的原因是什么以及如何解決問題?

注意:-正在給定位置創建一個由提供的名稱命名的空白文件。

該錯誤表明r為 NULL。 您從以下位置獲得r

Reader r = rs.getCharacterStream(1);

http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html#getCharacterStream%28int%29 : (getCharacterStream) 返回:一個包含列值的 java.io.Reader 對象; 如果值為 SQL NULL,則返回值在 Java 編程語言中為 null

所以看起來列值是NULL。

問題的原因顯然是r只是null 解決將額外檢查此變量中的null值:

if (r != null) ... while... .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM