连接access数据库报错

jsvfgjb 2016-04-14 10:02:48
学习jsp做实验,需要连接access数据库
在java代码中写了下面的代码 ,但是谢了一个主函数测试,结果报错了。。
而且报的错还看不懂,,
网上搜了一下,也有出现过,但是都没给出解决办法,有部分说要用绝对路径,可我确定我用的绝对路径呀,,而且应该是没错的。。

以下是报的错误 运行平台:eclipse for java ee版本, jdk本来用的1.8,结果发现没有相关驱动,又换成了jdk1.7的:
java.sql.SQLException: [Microsoft][ODBC ??????????] δ???????Դ??Ʋ???δָ??Ĭ???????
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6964)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7121)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3080)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:233)
at common.DBConnection.getConnection(DBConnection.java:24)
at common.DBConnection.main(DBConnection.java:47)
获取数据库连接失败!


也不能换数据库,,好烦,

特来求助各位大神~


package common;

import java.sql.*;

public class DBConnection {
static Connection con = null;
static String mdbPath = null;

/** 设置 Access mdb数据库文件存放路径 */
public static void setMdbFolder(String path) {
mdbPath = "D:/JAVA/workspace/Jsp_exp3/WebContent/db";
}

/** 获取数据库连接 */
public static Connection getConnection() {
if (con == null) {
try { // 加载驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (Exception e) {
e.printStackTrace();
System.out.println("加载数据库驱动失败!");
}
try { // 通过驱动程序管理器获取数据库连接
con = DriverManager.getConnection(
"jdbc:odbc:driver={Microsoft AccessDriver (*.mdb)};DBQ=" + mdbPath + "/student.mdb");
} catch (Exception e) {
e.printStackTrace();
System.out.println("获取数据库连接失败!");
}
}
return con;
}

/** 关闭数据库的操作 */
public static void closeConnection() {
if (con != null)
try {
con.close();
con = null;
} catch (SQLException e) {
e.printStackTrace();
System.out.println("关闭con对象失败!");
}
}

public static void main(String[] args) {
Connection conn = DBConnection.getConnection();
if(conn != null){
System.out.println("数据库链接成功!");
DBConnection.closeConnection();
}
}
}

...全文
294 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
迷林 2016-04-18
  • 打赏
  • 举报
回复
顶楼上  不错不错
家里敷泥呀 2016-04-18
  • 打赏
  • 举报
回复
引用 16 楼 jsvfgjb 的回复:
好了 终于解决了~ 方法是引入access对应的jdbc的jar包,jar包名:Access_JDBC30.jar,网上搜索下载之后放入WebContent目录下面的WEB-INF下的lib目录下面(直接复制粘贴)。然后在操作数据库的带吗里面这样写:

Class.forName("com.hxtt.sql.access.AccessDriver");//这个不能改
String url="jdbc:Access:///f://111.mdb";//后面的目录的就是对应的access数据库存放的绝对位置
Connection conn=DriverManager.getConnection(url,"","");//后面的两个是对应的用户名和密码 可以尝试先不加这个
参考自百度贴吧
学习了
jsvfgjb 2016-04-17
  • 打赏
  • 举报
回复
好了 终于解决了~ 方法是引入access对应的jdbc的jar包,jar包名:Access_JDBC30.jar,网上搜索下载之后放入WebContent目录下面的WEB-INF下的lib目录下面(直接复制粘贴)。然后在操作数据库的带吗里面这样写:

Class.forName("com.hxtt.sql.access.AccessDriver");//这个不能改
String url="jdbc:Access:///f://111.mdb";//后面的目录的就是对应的access数据库存放的绝对位置
Connection conn=DriverManager.getConnection(url,"","");//后面的两个是对应的用户名和密码 可以尝试先不加这个
参考自百度贴吧
jsvfgjb 2016-04-16
  • 打赏
  • 举报
回复
引用 14 楼 shijing266 的回复:
是不是少了驱动?
参考


我看了下 是有驱动的呀

我装的access是2013版本的,那版本对这个连接有影响吗?
  • 打赏
  • 举报
回复
是不是少了驱动? 参考
jsvfgjb 2016-04-16
  • 打赏
  • 举报
回复
引用 12 楼 Q80470101 的回复:
[quote=引用 11 楼 jsvfgjb 的回复:] [quote=引用 10 楼 Q80470101 的回复:] url=jdbc:odbc:你的数据源名 参考:Java利用ODBC 连接数据库_老魏_新浪博客 http://blog.sina.com.cn/s/blog_4ba4a1cf0100akoi.html
这种方式就是我说的在控制面板添加数据源来连接access; 但是我们要求用写access数据库的绝对路径来连接:

static String mdbPath = "E:\\student.mdb";
con = DriverManager.getConnection(
						"jdbc:odbc:driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=" + mdbPath, "",
						"");
[/quote] ODBC 我没用过,我不确定能否用文件的绝对路径来访问。(不能的可能性大) 你自己多研究研究吧。 [/quote] 好吧 谢谢~
家里敷泥呀 2016-04-16
  • 打赏
  • 举报
回复
引用 11 楼 jsvfgjb 的回复:
[quote=引用 10 楼 Q80470101 的回复:] url=jdbc:odbc:你的数据源名 参考:Java利用ODBC 连接数据库_老魏_新浪博客 http://blog.sina.com.cn/s/blog_4ba4a1cf0100akoi.html
这种方式就是我说的在控制面板添加数据源来连接access; 但是我们要求用写access数据库的绝对路径来连接:

static String mdbPath = "E:\\student.mdb";
con = DriverManager.getConnection(
						"jdbc:odbc:driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=" + mdbPath, "",
						"");
[/quote] ODBC 我没用过,我不确定能否用文件的绝对路径来访问。(不能的可能性大) 你自己多研究研究吧。
jsvfgjb 2016-04-16
  • 打赏
  • 举报
回复
引用 10 楼 Q80470101 的回复:
url=jdbc:odbc:你的数据源名 参考:Java利用ODBC 连接数据库_老魏_新浪博客 http://blog.sina.com.cn/s/blog_4ba4a1cf0100akoi.html
这种方式就是我说的在控制面板添加数据源来连接access; 但是我们要求用写access数据库的绝对路径来连接:

static String mdbPath = "E:\\student.mdb";
con = DriverManager.getConnection(
						"jdbc:odbc:driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=" + mdbPath, "",
						"");
家里敷泥呀 2016-04-16
  • 打赏
  • 举报
回复
url=jdbc:odbc:你的数据源名 参考:Java利用ODBC 连接数据库_老魏_新浪博客 http://blog.sina.com.cn/s/blog_4ba4a1cf0100akoi.html
jsvfgjb 2016-04-16
  • 打赏
  • 举报
回复
引用 3 楼 Q80470101 的回复:
两个问题 1. 乱码 2. DriverManager.getConnection("jdbc:odbc:driver={Microsoft AccessDriver (*.mdb)};DBQ=" + mdbPath + "/student.mdb") 这句话获取不到连接,你确定odgc数据库连接,可以写绝对路径访问?
你好 先谢谢你前面的解答,,现在我已经解决了乱码的问题了,,但是就是碰到了你说的那个能不能写绝对路径来连接的问题,现在报的错误如下:

java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
	at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6964)
	at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7121)
	at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3080)
	at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)
	at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
	at java.sql.DriverManager.getConnection(DriverManager.java:571)
	at java.sql.DriverManager.getConnection(DriverManager.java:215)
	at common.DBConnection.getConnection(DBConnection.java:23)
	at common.DBConnection.main(DBConnection.java:47)
获取数据库连接失败!
难道真不能用写绝对路径的方式来连接吗?有没有啥解决办法?
jsvfgjb 2016-04-16
  • 打赏
  • 举报
回复
引用 7 楼 shijing266 的回复:
[quote=引用 4 楼 qnmdcsdn 的回复:] 你可以先把乱码解决了,看懂报错信息后说不定会很容易解决
对的[/quote] 现在乱码问题解决了 以下是错误信息

java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
	at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6964)
	at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7121)
	at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3080)
	at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)
	at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
	at java.sql.DriverManager.getConnection(DriverManager.java:571)
	at java.sql.DriverManager.getConnection(DriverManager.java:215)
	at common.DBConnection.getConnection(DBConnection.java:23)
	at common.DBConnection.main(DBConnection.java:47)
获取数据库连接失败!
补充一下,在网上我找到两种连接access的方法,一种是通过写.mdb数据库文件的绝对路径来连接,也就是我上面用的那种; 还有一种是在控制面板添加odbc数据源的方式,这种我实验了一下,确实成功了。但我们老师要求用写绝对路径方式连接,结果报了以上的错误,,,,求大神解决办法,,,
  • 打赏
  • 举报
回复
引用 4 楼 qnmdcsdn 的回复:
你可以先把乱码解决了,看懂报错信息后说不定会很容易解决
对的
  • 打赏
  • 举报
回复
你可以先把乱码解决了,看懂报错信息后说不定会很容易解决
家里敷泥呀 2016-04-15
  • 打赏
  • 举报
回复
两个问题 1. 乱码 2. DriverManager.getConnection("jdbc:odbc:driver={Microsoft AccessDriver (*.mdb)};DBQ=" + mdbPath + "/student.mdb") 这句话获取不到连接,你确定odgc数据库连接,可以写绝对路径访问?
jsvfgjb 2016-04-15
  • 打赏
  • 举报
回复
引用 4 楼 qnmdcsdn 的回复:
你可以先把乱码解决了,看懂报错信息后说不定会很容易解决
就是因为看不懂乱码问题才来求助啊,,, 而且也应该不是编码问题,
jsvfgjb 2016-04-15
  • 打赏
  • 举报
回复
引用 3 楼 Q80470101 的回复:
两个问题 1. 乱码 2. DriverManager.getConnection("jdbc:odbc:driver={Microsoft AccessDriver (*.mdb)};DBQ=" + mdbPath + "/student.mdb") 这句话获取不到连接,你确定odgc数据库连接,可以写绝对路径访问?
不是 我看到书上就是这样写的啊,网上也是这样写的 因为事先给出了.mdb文件 所以是通过写文件的绝对路径来取得连接的 但不知道为什么就报了这个错误。。而且让这个乱码问题也肯定不是编码问题,所以才来求助
jsvfgjb 2016-04-14
  • 打赏
  • 举报
回复
access用的office 2010版本的
jsvfgjb 2016-04-14
  • 打赏
  • 举报
回复
对了 网上也有说要加数据库的默认username和password的,都为 "" ,但是试过了,也没用。。。 如下:

try { // 通过驱动程序管理器获取数据库连接
                con = DriverManager.getConnection(
                        "jdbc:odbc:driver={Microsoft AccessDriver (*.mdb)};DBQ=" + mdbPath + "/student.mdb", "",
						"");
            }

67,549

社区成员

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

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