关于我的问题的一点背景:我试图从Oracle数据库复制Microsoft SQL系统上的表。除了提供密码和用户访问表之外,我无法编辑或对MSSQL数据库执行任何操作。
我成功使用Oracle SQL Developer来连接和查看我想要的表(使用第三方JDBC驱动程序),但是我想在我的Oracle数据库中设置自动副本,所以我试图使用相同的一些存储的java代码中的驱动程序。
我有一个java函数,它应该做的就是去计算表中的条目数。到目前为止,我的代码看起来像:
public static String getCount() {
Statement stmt = null;
Connection conn = null;
int rowCount = 0;
String message = "";
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver");
}
catch(ClassNotFoundException e) {
System.err.println("Error loading driver: " + e);
message = message + e + " -ER1 \n";
}
try {
conn = DriverManager.getConnection("jdbc:jtds:sqlserver://site.school.edu:2000/ACCESS", "user", "password");
stmt = conn.createStatement();
String strSelect = "select 1 as field;";
ResultSet rset = stmt.executeQuery(strSelect);
while (rset.next()) {
++rowCount;
}
}
catch(SQLException ex) {
ex.printStackTrace();
message = message + ex.getSQLState() + " -ER2";
}
finally {
try {
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch(SQLException ex) {
ex.printStackTrace();
message = message + ex.getSQLState() + "-ER3";
}
}
return message;
}
正在从存储的函数调用:
CREATE OR REPLACE function Schema.java_testMessage return varchar2
as language java
name 'ConnectAndQuery.getCount() return java.lang.String';
我在TOAD的脚本中调用它:
set serveroutput on;
declare
words varchar2(400);
begin
words := KSL_ADMIN.java_testMessage;
dbms_output.put_line(words);
end;
但结果是我得到了:
java.lang.ClassNotFoundException: net/sourceforge/jtds/jdbc/Driver -ER1
08001 -ER2
PL/SQL procedure successfully completed.
我在类路径中有jar文件,我想不出任何理由它不应该拥有查看jar的nessecary权限,据我所知,我的所有内容都拼写正确。
请帮我弄清楚我做错了什么。或者,如果没有真正安装任何东西,可能有更简单的方法将Oracle DB连接到MSSQL DB。任何有关这方面的知识都是受欢迎的,因为我对很多这方面都很陌生。
答案 0 :(得分:0)
Oracle有自己的内部java虚拟机,它不使用系统类路径。如果需要外部库,则必须将它们“加载”到内部JVM中。您可以使用Oracle的loadjava工具执行此操作。
请参阅Oracle的loadjava文档(http://docs.oracle.com/cd/B28359_01/java.111/b31225/cheleven.htm#JJDEV10060)