急!java读取*.mdb文件,报错java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver

sky2434550330 2015-02-04 07:14:28
要用java读取mdb文件,但是运行报错如下:
java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at com.shengke.tool.ReadMdb.readFileACCESS(ReadMdb.java:30)
at com.shengke.tool.ReadMdb.main(ReadMdb.java:58)


代码:

package com.shengke.tool;

import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.Properties;

public class ReadMdb {
/**
* TODO : 读取文件access
*
* @param filePath
* @return
* @throws ClassNotFoundException
*/
public static void readFileACCESS(File mdbFile) {
Properties prop = new Properties();
prop.put("charSet", "gb2312"); // 这里是解决中文乱码
prop.put("user", "");
prop.put("password", "");
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="
+ mdbFile.getAbsolutePath();
Statement stmt = null;
ResultSet rs = null;
String tableName = null;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// 连接到mdb文件
Connection conn = DriverManager.getConnection(url, prop);
ResultSet tables = conn.getMetaData().getTables(
mdbFile.getAbsolutePath(), null, null,
new String[] { "TABLE" });
// 获取第一个表名
if (tables.next()) {
tableName = tables.getString(3);// getXXX can only be used once
} else {
return;
}
stmt = (Statement) conn.createStatement();
// 读取第一个表的内容
rs = stmt.executeQuery("select * from " + tableName);
ResultSetMetaData data = rs.getMetaData();
while (rs.next()) {
for (int i = 1; i <= data.getColumnCount(); i++) {
System.out.print(rs.getString(i) + " ");
}
System.out.println();
}
} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
readFileACCESS(new File("C://Documents and Settings//Administrator//桌面//数据//数据源全国总库2010——2014//a全国2011工商局.mdb"));
}
}

...全文
5434 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
酷嗨小左 2017-07-04
  • 打赏
  • 举报
回复
楼主问题解决了吗,我也是这样,swing导出jar包,双击运行就这个错误,我检查了环境和jdk,都是没问题的,困扰我好久了。
chip2015 2017-07-04
  • 打赏
  • 举报
回复
JAVA 8没有JDBC-ODBC桥了,要用只能使用java 7了。 我的机器上就保留了java7,用来运行原来的程序。在批处理中指定路径运行。
weixin_39250831 2017-07-04
  • 打赏
  • 举报
回复
楼坠问题解决了吗,我也是这个问题
yongjiu2000 2015-05-15
  • 打赏
  • 举报
回复
是JDK的问题,我今天也在改一个很老的程序发现的,JDK1.7以后这个“sun.jdbc.odbc.JdbcOdbcDriver”改动了。换成JDK 1.5版本的就好了。要不去看API重新写。
姜小白- 2015-02-04
  • 打赏
  • 举报
回复


sun.jdbc.odbc.JdbcOdbcDriver 在rt.jar里面
rt.jar 默认安装在jdk 目录下面的jre 目录里面的lib 目录下
楼主检查下,看是否自己的jdk安装出错,导致jdk的jre 安装失败,没有rt.jar
zuxianghuang 2015-02-04
  • 打赏
  • 举报
回复
sun.jdbc.odbc.JdbcOdbcDriver 这个类找不到,这个类在jdk 的rt.jar 包里, 你用的什么jdk?

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧