关于我的问题的一些背景知识:我正在尝试从 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 的必要权限,并且据我所知,我的所有内容都拼写正确。
请帮我找出我做错了什么。或者是否有一种更简单的方法可以将 Oracle DB 连接到 MSSQL DB,而无需真正安装任何东西。欢迎任何有关这方面的知识,因为我对很多方面都很陌生。
最佳答案
Oracle有自己的内部java虚拟机,并且不使用系统类路径。如果您需要外部库,则必须将它们“加载”到内部 JVM 中。您可以使用 Oracle 的 loadjava 工具来完成此操作。
请参阅 Oracle 的 loadjava 文档 ( http://docs.oracle.com/cd/B28359_01/java.111/b31225/cheleven.htm#JJDEV10060 )
关于java - 无法找出 JDBC ClassNotFoundException(JTDS 驱动程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21147506/