我需要帮助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
那么驱动程序的问题是什么?
答案 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",但我得到了一个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$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。