package erp_java_code.Connect;import java.sql.SQLException;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.CallableStatement;
import java.sql.Types;
import java.sql.PreparedStatement;
import java.sql.DatabaseMetaData;
import java.sql.ParameterMetaData;public class Test { public static Connection Test() throws ClassNotFoundException,
SQLException {
String drivername = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@xxx:xxx:xxx";
Class.forName(drivername);
return DriverManager.getConnection(url, "xxx", "xxx");
} public static void main(String args[]) {
try {
Test conn = new Test();
ResultSet rs = null; //dbmd获取存储过程的类型
DatabaseMetaData dbmd = conn.Test().getMetaData();
ResultSet rs1 = dbmd.getProcedureColumns(null, null,
"xxxxxxxxxxxxx", "%"); while (rs1.next()) {
System.out.println(rs1.getString("COLUMN_NAME") + "-" +
rs1.getShort("COLUMN_TYPE") + "-" +
rs1.getString("TYPE_NAME"));
} //callableStatement执行存储过程,付参数
CallableStatement cstmt = null;
cstmt = conn.Test().prepareCall(
"{call xxxxxxxx(?,?,?)}"); cstmt.setString("xxxxx", "");
cstmt.setString("xxxxx", "3070");
cstmt.registerOutParameter("xxxxxx",
oracle.jdbc.OracleTypes.CURSOR);
ParameterMetaData pmd=null;
pmd=cstmt.getParameterMetaData();
System.out.println(pmd.getParameterCount());
cstmt.execute();
rs = (ResultSet) cstmt.getObject("p_result_tbl");
while (rs.next()) {
System.out.println(rs.getString("per_no") + "-" +
rs.getString("lgn_id"));
} } catch (ClassNotFoundException ex) {
ex.printStackTrace();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
以上是我的代码,在执行到红色代码时报错,把那两行去掉正确运行.错误提示是:Exception in thread "main" java.lang.AbstractMethodError: oracle.jdbc.driver.T4CPreparedStatement.getParameterMetaData()Ljava/sql/ParameterMetaData;请教高手帮忙解决一下!
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.CallableStatement;
import java.sql.Types;
import java.sql.PreparedStatement;
import java.sql.DatabaseMetaData;
import java.sql.ParameterMetaData;public class Test { public static Connection Test() throws ClassNotFoundException,
SQLException {
String drivername = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@xxx:xxx:xxx";
Class.forName(drivername);
return DriverManager.getConnection(url, "xxx", "xxx");
} public static void main(String args[]) {
try {
Test conn = new Test();
ResultSet rs = null; //dbmd获取存储过程的类型
DatabaseMetaData dbmd = conn.Test().getMetaData();
ResultSet rs1 = dbmd.getProcedureColumns(null, null,
"xxxxxxxxxxxxx", "%"); while (rs1.next()) {
System.out.println(rs1.getString("COLUMN_NAME") + "-" +
rs1.getShort("COLUMN_TYPE") + "-" +
rs1.getString("TYPE_NAME"));
} //callableStatement执行存储过程,付参数
CallableStatement cstmt = null;
cstmt = conn.Test().prepareCall(
"{call xxxxxxxx(?,?,?)}"); cstmt.setString("xxxxx", "");
cstmt.setString("xxxxx", "3070");
cstmt.registerOutParameter("xxxxxx",
oracle.jdbc.OracleTypes.CURSOR);
ParameterMetaData pmd=null;
pmd=cstmt.getParameterMetaData();
System.out.println(pmd.getParameterCount());
cstmt.execute();
rs = (ResultSet) cstmt.getObject("p_result_tbl");
while (rs.next()) {
System.out.println(rs.getString("per_no") + "-" +
rs.getString("lgn_id"));
} } catch (ClassNotFoundException ex) {
ex.printStackTrace();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
以上是我的代码,在执行到红色代码时报错,把那两行去掉正确运行.错误提示是:Exception in thread "main" java.lang.AbstractMethodError: oracle.jdbc.driver.T4CPreparedStatement.getParameterMetaData()Ljava/sql/ParameterMetaData;请教高手帮忙解决一下!
是ORACLE驱动里报的错.
你单独在plsql里面执行存储过程报错没有啊?
我遇到了同样的问题解决了。
我把oralce10G中把ojdbc14.jar包引到了工程中,就好用了。
路径如下:oracle\product\10.2.0\db_1\jdbc\lib你引去弄个新驱动包试试看,希望能帮到你。