我正在开发一个Spring应用程序,它从旧的ODBC数据源中轮询数据,并将其插入MS数据库。

我需要连接到DSN,即使用进度OpenEdge驱动程序。
我连接到DSN的研发代码如下所示:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JdbcDemo
{
public static void main(String args[]) throws Exception
{
try
{
String query = "SELECT Name,Description,Qty,Cost FROM Stock";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:DSN_Name");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next())
{
String name = rs.getString("Name");
String desc = rs.getString("Description");
int qty = rs.getInt("Qty");
float cost = rs.getFloat("Cost");
System.out.println(name + ", " + desc + "\t: " + qty + "\t@ $" + cost);
}
con.close();
}
catch (Exception e)
{
System.err.println(e);
}
}
}但是它在运行时会抛出java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver错误。我做了一些谷歌搜索,发现这已经不再支持了。那么我如何连接到这个ODBC数据源呢?我正在使用Java 17。
发布于 2022-05-16 16:49:34
java.lang.classnotfoundexception sun.jdbc.odbc.jdbcodbcdriver异常出现在Java8中,因为它从JDK和JRE中删除了JDBC桥驱动程序类"sun.jdbc.odbc.jdbcodbcdriver“。需要使用对象数据库连接驱动程序(例如Microsoft )连接任何数据库,但不幸的是,您不能从JDK 8继续使用它。为了解决此错误,只需使用Jackcess库或像HXTT这样的商业驱动程序即可。通常,在Java8之前的世界中,当您尝试使用JDBC和JDBC ODBC桥驱动程序从java.lang.classnotfoundexception连接到Microsoft数据库时,类路径中无法使用java.lang.classnotfoundexception sun.jdbc.odbc.jdbcodbcdriver错误。
我们仍然可以在Java 8中使用JDBC-ODBC桥(Java 17没有测试),我们总是可以从JDK 7:Removal of JDBC ODBC bridge in java 8中提取驱动程序。
https://stackoverflow.com/questions/72262613
复制相似问题