[英]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.