2016-05-22 27 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

我已經在谷歌中找到它,並嘗試在我的代碼中使用它......但它不起作用,我不知道它爲什麼失敗......請幫助我 – zqirifQ

+0

你的代碼很難理解。在哪個網站上找到它?我可以建議你其他運行的例子。 –

回答

1

錯誤消息意味着您正在使用來自setBlob(int, InputStream)之前的舊JDBC驅動程序(Java 6)。

使用更新的JDBC驅動程序,例如從11g R2開始。一個新的驅動程序仍然可以與9i服務器通話。

只要確保您使用ojdbc6.jar文件(或更高版本)。

+0

我使用ojdbc14_g.jar – zqirifQ

+1

@zqirifQ正如我所說,太舊了。 'ojdbc14'與Java 1.4兼容,但是你使用的方法是在Java 6中添加的,所以你需要'ojdbc6'(或'ojdbc7')。或者停止使用更新的方法,但爲什麼在升級驅動程序時如此容易,爲什麼會停留在古代Java中1.4倍? – Andreas

相關問題