import org.junit.jupiter.api.Test;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
/**
* @author: lisai
* @create: 2023-06-16 13:15
* @Description:
*/
public class OracleBlobInertTest {
private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
private static final String URL = "jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:CBS";
private static final String USER = "user";
private static final String PSWD = "123456";
@Test
public void test01() {
//-- 以下为连接Oracle数据库的四大参数
Connection conn = null;
PreparedStatement pstmt = null;
try {
Class.forName(DRIVER);
conn = DriverManager.getConnection(URL, USER, PSWD);
// String insertSql = "insert into cdcuser.test_type_meta_basic(number_type13,blob_type) values(?,?)";
String updateSql = "update cdcuser.test_type_meta_basic set blob_type=? where number_type13=?";
pstmt = conn.prepareStatement(updateSql);
// 方式一:文件转byte数组
InputStream is1 = new FileInputStream("D:\\test.xml");
byte[] arr = new byte[is1.available()];
is1.read(arr);
Blob blob = conn.createBlob();
blob.setBytes(1, arr);
pstmt.setLong(2, 888);
pstmt.setBlob(1, blob);
pstmt.execute();
// // 方式二:文件直接给blob字段
// InputStream is2 = new FileInputStream("c:\\temp1\\picturesShow1022final_src_210808.rar");
// pstmt.setLong(1, 2);
// pstmt.setBlob(2, is2);
// pstmt.executeUpdate();
// // 方式三:设置blob字段的二进制流
// InputStream is3 = new FileInputStream("c:\\temp1\\media-cool-master.zip");
// pstmt.setLong(1, 3);
// pstmt.setBinaryStream(2, is3);
// pstmt.executeUpdate();
System.out.println("完成写入");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
pstmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
【oracle】 java 写入blob字段
于 2023-07-25 17:31:42 首次发布