Java 코드로 이미지를 업로드하는 중 멈추었습니다. 데이터 액세스 개체를 사용하고 있으며 ojdbc5 및 ordim 라이브러리가 있습니다. 내가 가지고있는 주요 문제는 다음 코드 줄을 사용하여 이미지를 삽입하는 것입니다. stmtInsert.setImage (8, ORDSYS.ORDImage.init());SQL 및 Java를 사용하여 이미지 업로드
나는 오랫동안이 시점에서 갇혀있었습니다. 당신에게
public void createImageInfo(
final String user_ID,
final int photo_ID,
final int num_views,
final double price,
final String photo_Name,
final String imageCategory,
final Calendar dateUploaded,
final ORDSYS.ORDImage.init(image))
{
PhotoSysDAO result = null;
PreparedStatement stmtInsert = null;
Connection conn = null;
try
{
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@oracle server",
"username", "password");
//open a connection to db...needs your account and password
//int ratingID = RatingsDAO.getUniqueRatingId(conn);
StringBuilder sbInsert = new StringBuilder();
sbInsert.append("INSERT INTO ");
sbInsert.append("Photos");
sbInsert.append(" VALUES (");
sbInsert.append("SequenceSet.seq_photo_id.nextval, ?, ?, ?, ?, ?, ?, ?, ?)");
Calendar date = Calendar.getInstance();
stmtInsert.setInt(1, photo_ID);
stmtInsert.setString(2, user_ID);
stmtInsert.setInt(3, num_views);
stmtInsert.setDouble(4, price);
stmtInsert.setString(5, photo_Name);
stmtInsert.setString(6, imageCategory);
stmtInsert.setString(7, new SimpleDateFormat("dd/MMM/yyyy").format(date));
//stmtInsert.setImage(8, photo.ORDSYS.ORDIMGB);
stmtInsert.setImage(8, ORDSYS.ORDImage.init());
int rows = stmtInsert.executeUpdate();
if (rows != 1)
{
throw new SQLException("executeUpdate return value: " + rows);
}
}
catch (SQLException ex)
{
System.out.println("There was an error in connecting to the database");
}
finally
{
PhotoSysDAO.closeStatement(stmtInsert);
PhotoSysDAO.closeJDBCConnection(conn);
}
//return result;
}
은 아마 문제는 그 코드가 stmtInsert.setInt (1, photo_ID)'에서 NullPointerException이 발생합니다 –
("... SequenceSet") sbInsert.append 후 sbInsert 변수를 사용하지 말자 점이다', stmtInsert 이후 절대로 초기화되지 않습니다. 당신의 정확한 문제는 무엇입니까? – jarnbjo
'PreparedStatement' 클래스의 전체 이름은 무엇입니까? 보통 PreparedStatement는'setImage' 할 수 없지만, 당신은 당신의 명령문에서'setBlob'instead를 사용하고'...,?, ORDSYS.ORDImage.init (?))'를 사용함으로써 도움을 줄 수 있습니다. 이미지를 byte [] 또는 File로 가져온 다음, ByteArrayInputStream 또는 FileInputStream을 만들어 setBlob로 전달할 수 있습니다. – mihi