我试图在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);
,但没有去。
答案 0 :(得分:0)
当您使用jdbc时,当您使用的jdbc驱动程序实现旧版本的jdbc api时,可能会发生此类错误,而不是包含在JRE中的jdbc驱动程序。你可以查看这些版本。
我不是jdbc的专家,但我想我早些时候读过这个问题。
祝你好运。