DB 2データベースBLOBフィールドにファイル全体を保存

1540 ワード

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class ExcelImportServiceImpl implements ExcelImportService {

	public void excelImport(String filePath) {
		Connection conn = null;
		PreparedStatement  ps = null;
		try{
			Class.forName("com.ibm.db2.jcc.DB2Driver");
			conn = DriverManager.getConnection("jdbc:db2://localhost:50000/xxx","username","password");
			ps = conn.prepareStatement("insert into aa.user(detail) values (?)");
			File file = new File(filePath);
			InputStream is = new FileInputStream(file);
			ps.setBinaryStream(1, is, (int)file.length());
			ps.executeUpdate();
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			if(ps!=null){
				try{
					ps.close();
				}catch(Exception e){
					e.printStackTrace();
				}
			}
			if(conn!=null){
				try{
					conn.close();
				}catch(Exception e){
					e.printStackTrace();
				}
			}
		}
	}
	
}

 
次のエラーが発生しました.
 
com.ibm.db2.jcc.am.co: DB2 SQL Error: SQLCODE=-302, SQLSTATE=22001, SQLERRMC=null, DRIVER=3.57.82
 
なぜなら、ファイルのアップロードに必要なメモリは、データベースフィールドの最大メモリ制限よりも大きいからです.