2016-05-22 1 views
-1

マイエラー:私はJavaを使用して、私のデータベース9iの中で画像を挿入しようとするけど、エラー

java.lang.AbstractMethodError: Method oracle/jdbc/driver/OraclePreparedStatement.setBlob(ILjava/io/InputStream;)V is abstract 
    at oracle.jdbc.driver.OraclePreparedStatement.setBlob(OraclePreparedStatement.java) 
    at controller.control_gambar.addGambar(control_gambar.java:35) 

マイコード:私のコントローラで

protected void doPost(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException { 

    HttpSession session = request.getSession(); 
    Login login = (Login) session.getAttribute("login"); 


    { 
     String message = null; 

     String question = request.getParameter("question"); 
     String status = request.getParameter("status"); 
     String teacher_id = login.getCuba(); 
     String level_id = request.getParameter("level_id"); 
     String topic_id = request.getParameter("topic_id"); 
     String[] answer = request.getParameterValues("mytext"); 

     System.out.println("mana dia hg mai sat" + topic_id); 
     System.out.println("mana dia hg mai sat" + level_id); 
     System.out.println("mana dia hg mai sat" + status); 

     String[] pegang = request.getParameterValues("marks"); 

     int[] markah = new int[pegang.length]; 
     for (int i = 0; i < pegang.length; i++) { 
      markah[i] = Integer.parseInt(pegang[i]); 
      System.out.println("marka:" + markah[i]); 
     } 

     for (int index = 0; index < markah.length; index++) { 
      System.out.println(markah[index]); 

     } 
     //for insert question 
     question_sub question_sub1 = new question_sub(); 


     question_sub1.setQuestion(question); 
     question_sub1.setStatus(status); 
     question_sub1.setTeacher_id(teacher_id); 
     question_sub1.setLevel_id(level_id); 
     question_sub1.setTopic_id(topic_id); 


     //for insert answer 
     answer question_sub3 = new answer(); 
     question_sub3.setAnswer(answer); 
     question_sub3.setMark(markah); 

     //for insert gambar 
     Part filePart =request.getPart("image"); 
     testimage testimage1=new testimage(); 
     InputStream inputStream=null; 

     if(filePart != null){ 
      System.out.println(filePart.getName()); 
      System.out.println(filePart.getSize()); 
      System.out.println(filePart.getContentType()); 

      inputStream =filePart.getInputStream(); 

     } 
     testimage1.setGambar(inputStream); 

     testimage1.setId("abc"); 
     try { 
      Facade facade = new Facade(); 

      ArrayList<sub_topic> sub_topicssss = facade.getsub_topic(); 
      sub_topic[] temp = new sub_topic[sub_topicssss.size()]; 
      request.setAttribute("sub_topicssss",sub_topicssss.toArray(temp)); 

      ArrayList<subject> subjectttt = facade.getsubject(); 
      subject[] tempp = new subject[subjectttt.size()]; 
      request.setAttribute("subjectttt",subjectttt.toArray(tempp)); 




      int status1 = facade.addquestion_sub(question_sub1); 
      int status2 = facade.addanswer(question_sub3); 
      int status3 =facade.addGambar(testimage1); 


      if (status1 != -1) { 
       message = "<h2 style='color:red'>Success</h2>"; 
      } else { 
       message = "<h2>Fail</h2>"; 
      } 

      if (status2 != -1) { 
       message = "<h2 style='color:red'>Success</h2>"; 
      } else { 
       message = "<h2>Fail</h2>"; 
      } 

      if (status3 != -1) { 
       message = "<h2 style='color:red'>Success</h2>"; 
      } else { 
       message = "<h2>Fail</h2>"; 
      } 








      facade.closeConnection(); 
     } catch (SQLException e) { 

      e.printStackTrace(); 
      request.setAttribute("message", 
        "<h2 style='color:red'>" + e.getMessage() + "</h2>"); 
      request.getRequestDispatcher("WEB-INF/addquestion.jsp") 
      .forward(request, response); 

     } finally { 

      request.setAttribute("message", message); 
      request.getRequestDispatcher("WEB-INF/addquestion.jsp").forward(request, response); 
     } 
    } 
} 

   public int addGambar(testimage testimage1) throws SQLException { 

    //Blob img; 
    //byte [] imgdata=null; 

    Connection connection = facade.getConnection(); 

    PreparedStatement ps = connection.prepareStatement("insert into testimage (id,gambar) values (?,empty_blob()) returning gambar into ?"); 
    ps.setString(1,testimage1.getId()); 
    ps.setBlob(2, testimage1.getGambar()); 


    System.out.println("nie dalam controller gambar"); 
    System.out.println(testimage1.getId()); 
    System.out.println("nie dalam controller gambar"); 
    int status4 = ps.executeUpdate(); 
    return status4; 
} 
+0

googleで入力 "javaを使用してデータベースに画像を挿入する方法"あなたは多くの有益な答えを見つけるでしょう。 –

+0

私はすでにGoogleでそれを見つけ、自分のコードで使用しようとしています....しかし、それはうまくいかないことを知っていません... pls help me – zqirifQ

+0

あなたのコードは理解するのが難しいです。どのウェブサイトでそれを見つけるのですか?私はあなたに他の実行例を提案することができます。 –

答えて

1

エラーメッセージは、setBlob(int, InputStream)が追加される前の古いJDBCドライバを使用していることを意味します(Java 6)。

より新しいJDBCドライバを使用してください。 R2は11gです。新しいドライバーはまだ9iサーバーと通信できます。

ファイルがojdbc6.jar(またはそれ以上)であることを確認してください。

+0

私はojdbc14_g.jarを使用します – zqirifQ

+1

@zqirifQ私が言ったように、あまりにも古い。 'ojdbc14'はJava 1.4互換ですが、Java 6で追加されたメソッドを使用しているので、' ojdbc6'(または 'ojdbc7')が必要です。または、新しい方法を使用するのをやめてください。しかし、古代のJavaで1.4時間くらい滞っているのはなぜですか?ドライバをアップグレードするのが簡単なのはなぜですか? – Andreas

関連する問題