|
3Java金币
package com.tjitcast.jdbc;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import com.tjitcast.db.ConnectionFactory;
import com.tjitcast.db.DbClose;
/**
* @author SunLw
*
* */
public class MyBlobTest {
public static void insert(){
Connection conn = ConnectionFactory.getConnection();
PreparedStatement pstmt = null;
String sql = "INSERT INTO stuinfo(name,content,imgae) VALUES(?,?,?)";
BufferedReader br = null;
InputStream isimg = null;
try{
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "test");
//从文件中获取输入流--读取文本
InputStream istxt = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("test.txt");
br = new BufferedReader(new InputStreamReader(istxt));
//设置Clob
pstmt.setCharacterStream(2, br);
//从文件中获取输入流--读取图片
isimg = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("tjitcast.png");
//设置Blob
pstmt.setBinaryStream(3, isimg);
if(pstmt.executeUpdate() == 1){
System.out.println("成功添加记录!");
}else{
System.out.println("添加记录失败!");
}
} catch(SQLException e){
e.printStackTrace();
}finally{
try{
br.close();
} catch(IOException e){
e.printStackTrace();
}
try{
isimg.close();
} catch(IOException e){
e.printStackTrace();
}
DbClose.close(pstmt,conn);
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MyBlobTest.insert();
}
}
这个是源代码。接连数据库的代码和执行完对象关闭对象的代码都封装了!
我在运行这个编程的时候出现这样的报错
Exception in thread "main" java.lang.NullPointerException
at com.tjitcast.jdbc.MyBlobTest.insert(MyBlobTest.java:46)
at com.tjitcast.jdbc.MyBlobTest.main(MyBlobTest.java:63)
其中46行是br.close();
63行是MyBlobTest.insert();想了很久。都没有得到解决。求解。thanks!
|
最佳答案
查看完整内容
上班路过,好复杂,首先得注册,其实要等15分钟才能回复,最后要激活邮箱,我都快要放弃了
报错是因为try里面无论是否发生了异常,finally都会执行,你对br对象赋值是在try里操作的,如果try发生了异常,br的值可能会空,导致空指针异常
|