java.sql.SQLException: 找不到适合 jdbc:odbc:Driver={Microsoft Text Driver (*.txt; *.csv)} 的驱动程序;DBQ=D:\Users\
java.sql.SQLException: No suitable driver found for jdbc:odbc:Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=D:\Users\
我需要有关 ODBC 的帮助 - JDBC CSV 接口,32 位 Java 1.7.0_72
我收到了这个代码
private void connectToCSV(String file) {
try {
debug.println(path + file +" "+this.file);
if (this.file == null){
this.file = file;
gfdiConnection = DriverManager.getConnection("jdbc:odbc:Driver={"+ driverCSV + "};DBQ=" + path );
}
if (this.file != file){
this.file = file;
gfdiConnection = DriverManager.getConnection("jdbc:odbc:DRIVER={" + driverCSV + "};DBQ=" + path);
}
} catch (SQLException e) {
debug.println("Error while trying to connect to CSV");
e.printStackTrace();
}
}
但我没收到 运行。
java.sql.SQLException: No suitable driver found for jdbc:odbc:Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=D:\Input\
我找到了
的建议
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
gfdiConnection = DriverManager.getConnection("jdbc:odbc:Driver={"+ driverCSV + "};DBQ=" + path );
但这在这里不起作用。
java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver
我还用
检查了驱动程序名称
C:\Windows\SysWOW64\odbcad32.exe
所以驱动程序有什么问题?
ODBC 需要安装一个用于提供连接的 activeX 控件,这意味着直接与 ODBC 接口的程序只需要确保系统上安装了这些驱动程序。 JDBC 相反,要求库(通常称为连接器的 jar 文件)位于提供该连接的类路径中。
您正在做的是尝试建立一个 ODBC 连接 通过 一个 JDBC 连接,这意味着您可能需要 both 要安装的 activeX 控件以及类路径中的 JDBC 连接器。连接器的名称是正确的,但它也必须在类路径中。
您需要做的是找到提供 jdbc-odbc 桥的 jar 文件,并确保它在您的程序启动时位于您的类路径中。您可能还有其他问题,但至少如果您没有看到 ClassNotFoundException,那么您已经解决了缺少 jdbc 驱动程序的问题。
您最终应该考虑在 Java 中使用 ODBC 的替代解决方案。
检查 java 构建路径中是否有相应的 JAR 以防止项目出错
我手动添加了 rt.jar 来构建路径,现在 "sun.jdbc.odbc.JdbcOdbcDriver" 不再有错误,但是我得到了一个 NullpointerException
Exception in thread "Thread-1" java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcDriver.initialize(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at database.GfDIConnect.connectToCSV(CSVConnect.java:85)
at database.GfDIConnect.queryCSV(CSVConnect.java:147)
at database.GfDIConnect.gfdiBTRSTToPostgreSQL(CSVConnect.java:297)
at view.MainRefactor.run(MainRefactor.java:2434)
at java.lang.Thread.run(Unknown Source)
CSVConnect.java:85 是
gfdiConnection = DriverManager.getConnection("jdbc:odbc:Driver={"+ driverCSV + "};DBQ=" + path );
这个解决方案是不是又快又脏?
编辑
我找到原因了,在 1.8 JRE 上仍然存在构建路径库 - JRE System Library,更改为 1.7 后可以正常工作
System.getProperty("java.version")
报告“1.8.0_66”,因此应用程序实际上是 运行 在 Java 8 下,它已删除 JDBC-ODBC 桥.
我需要有关 ODBC 的帮助 - JDBC CSV 接口,32 位 Java 1.7.0_72
我收到了这个代码
private void connectToCSV(String file) {
try {
debug.println(path + file +" "+this.file);
if (this.file == null){
this.file = file;
gfdiConnection = DriverManager.getConnection("jdbc:odbc:Driver={"+ driverCSV + "};DBQ=" + path );
}
if (this.file != file){
this.file = file;
gfdiConnection = DriverManager.getConnection("jdbc:odbc:DRIVER={" + driverCSV + "};DBQ=" + path);
}
} catch (SQLException e) {
debug.println("Error while trying to connect to CSV");
e.printStackTrace();
}
}
但我没收到 运行。
java.sql.SQLException: No suitable driver found for jdbc:odbc:Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=D:\Input\
我找到了
的建议Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
gfdiConnection = DriverManager.getConnection("jdbc:odbc:Driver={"+ driverCSV + "};DBQ=" + path );
但这在这里不起作用。
java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver
我还用
检查了驱动程序名称 C:\Windows\SysWOW64\odbcad32.exe
所以驱动程序有什么问题?
ODBC 需要安装一个用于提供连接的 activeX 控件,这意味着直接与 ODBC 接口的程序只需要确保系统上安装了这些驱动程序。 JDBC 相反,要求库(通常称为连接器的 jar 文件)位于提供该连接的类路径中。
您正在做的是尝试建立一个 ODBC 连接 通过 一个 JDBC 连接,这意味着您可能需要 both 要安装的 activeX 控件以及类路径中的 JDBC 连接器。连接器的名称是正确的,但它也必须在类路径中。
您需要做的是找到提供 jdbc-odbc 桥的 jar 文件,并确保它在您的程序启动时位于您的类路径中。您可能还有其他问题,但至少如果您没有看到 ClassNotFoundException,那么您已经解决了缺少 jdbc 驱动程序的问题。
您最终应该考虑在 Java 中使用 ODBC 的替代解决方案。
检查 java 构建路径中是否有相应的 JAR 以防止项目出错
我手动添加了 rt.jar 来构建路径,现在 "sun.jdbc.odbc.JdbcOdbcDriver" 不再有错误,但是我得到了一个 NullpointerException
Exception in thread "Thread-1" java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcDriver.initialize(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at database.GfDIConnect.connectToCSV(CSVConnect.java:85)
at database.GfDIConnect.queryCSV(CSVConnect.java:147)
at database.GfDIConnect.gfdiBTRSTToPostgreSQL(CSVConnect.java:297)
at view.MainRefactor.run(MainRefactor.java:2434)
at java.lang.Thread.run(Unknown Source)
CSVConnect.java:85 是
gfdiConnection = DriverManager.getConnection("jdbc:odbc:Driver={"+ driverCSV + "};DBQ=" + path );
这个解决方案是不是又快又脏?
编辑
我找到原因了,在 1.8 JRE 上仍然存在构建路径库 - JRE System Library,更改为 1.7 后可以正常工作
System.getProperty("java.version")
报告“1.8.0_66”,因此应用程序实际上是 运行 在 Java 8 下,它已删除 JDBC-ODBC 桥.