2012-12-11 3 views
0

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; 
} 
+0

은 아마 문제는 그 코드가 stmtInsert.setInt (1, photo_ID)'에서 NullPointerException이 발생합니다 –

+0

("... SequenceSet") sbInsert.append 후 sbInsert 변수를 사용하지 말자 점이다', stmtInsert 이후 절대로 초기화되지 않습니다. 당신의 정확한 문제는 무엇입니까? – jarnbjo

+0

'PreparedStatement' 클래스의 전체 이름은 무엇입니까? 보통 PreparedStatement는'setImage' 할 수 없지만, 당신은 당신의 명령문에서'setBlob'instead를 사용하고'...,?, ORDSYS.ORDImage.init (?))'를 사용함으로써 도움을 줄 수 있습니다. 이미지를 byte [] 또는 File로 가져온 다음, ByteArrayInputStream 또는 FileInputStream을 만들어 setBlob로 전달할 수 있습니다. – mihi

답변

-2

나의 제안, 데이터베이스에없는 저장 이미지, 당신은 당신의 데이터베이스 스토리지 & 성능을 해칠 것입니다. 폴더 위치에 사진을 저장하십시오 (&). 데이터베이스에 경로를 저장하십시오.

+0

도움 주셔서 감사. –

관련 문제