java.sql.SQLException:没有为jdbc找到合适的驱动程序:odbc:Driver = {Microsoft Text Driver(* .txt; * .csv)}; DBQ = D:\ Users \

时间:2016-02-10 14:55:15

标签: java csv jdbc odbc

我需要帮助ODBC - JDBC的JDBC接口,32Bit 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 

那么驱动程序的问题是什么?

4 个答案:

答案 0 :(得分:0)

ODBC需要安装一个处理提供连接的activeX控件,这意味着直接与ODBC连接的程序只需要确保系统上安装了这些驱动程序。相反,JDBC要求库(通常称为连接器的jar文件)位于提供该连接的类路径中。

您正在尝试建立ODBC连接 JDBC连接,这意味着您可能需要两者要安装的activeX控件以及JDBC类路径中的连接器。连接器的名称是正确的,但它也必须在类路径中。

您需要做的是找到提供jdbc-odbc桥接器的​​jar文件,并确保它在程序启动时位于类路径中。您可能有其他问题,但至少如果您没有看到ClassNotFoundException,则修复了丢失的jdbc驱动程序问题。

您最终应该考虑在Java中使用ODBC的替代解决方案。

答案 1 :(得分:0)

检查java构建路径中是否有相应的JAR以防止项目中的错误

答案 2 :(得分:0)

我手动添加rt.jar来构建路径,现在没有更多错误" sun.jdbc.odbc.JdbcOdbcDriver",但我得到了一个N​​ullpointerException

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$58.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系统库,在更改为1.7之后它正在工作

答案 3 :(得分:0)

$headers=[]; $values=[]; $lines = file('./homework.txt', FILE_IGNORE_NEW_LINES); foreach($lines as $line){ $chunks = explode(',',$line); foreach($chunks as $index => $chunk){ list($key, $value) = explode('=', trim($chunk)); if(!$index){ $headers[] = $value; } if('value' === $key){ $values[] = $value; } } } echo "<table><thead><tr>"; foreach($headers as $h){ echo "<th>{$h}</th>"; } echo "</tr></thead><tbody><tr>"; foreach($values as $v){ echo "<td>{$v}</td>"; } echo "</tr></tbody></table>"; 报告&#34; 1.8.0_66&#34;所以应用程序实际上是在Java 8下运行的,它已经删除了JDBC-ODBC Bridge。