자바 데이터베이스 프로그램에 이미지를 삽입 할 수있는 Java 프로그램을 작성했습니다. 다른 시스템에서는 완벽하게 작동하지만 2KB를 초과하는 크기의 이미지를 삽입하려는 경우 시스템에서 작동하지 않습니다. 그러나 내 시스템에서는 어떤 크기의 이미지도 검색 할 수 있습니다. 동일한 응용 프로그램이 다른 시스템에서는 잘 작동하지만 비정상적으로 작동하며 2KB보다 큰 이미지를 삽입하려고하면 소켓 예외에서 읽을 수없는 경우가 있습니다. 도와주세요.Java에서 데이터베이스에 BLOB 업로드
나는 typ4 드라이버를 사용하고 있습니다. 다음
내 테이블 구조 ::
Name Null? Type
----------------------------------------------------- -------- ----------------------
NAME NOT NULL VARCHAR2(20)
DESCRIPTION NOT NULL VARCHAR2(20)
IMAGE NOT NULL BLOB
다음은 이미지를 삽입하는 내 자바 프로그램입니다 다음과 같다. 동일한 Oracle 서버에 연결된 동일한 네트워크의 다른 시스템에서도 작동합니다. 하지만 크기가 2kb 이상인 이미지를 업로드하려고 할 때 문제가 나타나는 시스템에서.
package com.smruti.image;
import java.io.File;
import java.io.FileInputStream;
import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.*;
public class InsertImage {
private static String url = "jdbc:oracle:thin:@server3:1521:server3";
private static String username = "system";
private static String password = "manager";
public static void main(String[] args) throws Exception {
Connection conn = null;
InputStream fis = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(url, username, password);
conn.setAutoCommit(false);
String sql = "INSERT INTO pictures VALUES (?, ?, ?)";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, "scare.jpg");
stmt.setString(2, "scare image");
File image = new File("C:\\images.jpeg");
fis = new FileInputStream(image);
int ilen=(int) image.length();
System.out.println(ilen);
System.out.println(fis);
stmt.setBinaryStream(3, fis, ilen);
stmt.execute();
System.out.println("this is upto b4 commit");
conn.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fis != null) {
fis.close();
}
if (conn != null && !conn.isClosed()) {
conn.close();
}
}
}
}
일부 Java 코드를 표시 할 수 있습니까? –
이미지를 삽입하는 테이블 정의 및 Java 코드와 같은 더 많은 정보를 제공해야합니다. –