java.lang.AbstractMethodError:oracle.jdbc.driver.OraclePreparedStatementWrapper.setBinaryStream

时间:2015-07-19 09:07:29

标签: java oracle jdbc

我试图在Oracle数据库中持久保存代表图像的InputStream,如下所示:

    Connection conn = null; 
    String message = null;  

    try {
        // connects to the database
        Class.forName("oracle.jdbc.driver.OracleDriver");  

           conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","great123");

        String sql = "INSERT INTO contacts (first_name, last_name, photo) values (?, ?, ?)";
        PreparedStatement statement = conn.prepareStatement(sql);
        statement.setString(1, firstName);
        statement.setString(2, lastName);

        if (inputStream != null) {
             column
            statement.setBlob(3, inputStream);
        }


        int row = statement.executeUpdate();
        if (row > 0) {
            message = "File uploaded and saved into database";
        }
    } finally {
        if (conn != null) {
            // closes the database connection
            try {
                conn.close();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
    }

然而,它引发了以下异常:

  

控制台输出:   servlet [com.sandy.FileUploadDBServlet]的Servlet.service()在路径[/ TestAgent]的上下文中引发了异常[Servlet执行抛出异常]的根本原因   java.lang.AbstractMethodError:oracle.jdbc.driver.OraclePreparedStatementWrapper.setBinaryStream(ILjava / io / InputStream;)

我尝试了statement.setBlob(3, inputStream);以及statement.setBinary(3, inputStream);,但没有去。

1 个答案:

答案 0 :(得分:0)

当您使用jdbc时,当您使用的jdbc驱动程序实现旧版本的jdbc api时,可能会发生此类错误,而不是包含在JRE中的jdbc驱动程序。你可以查看这些版本。

我不是jdbc的专家,但我想我早些时候读过这个问题。

祝你好运。