`
阅读更多

问题一:[Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配

一看到这个dns,就知道跟ODBC数据源有关系。但是我这里安装了Access驱动,配置了ODBC数据源,为什么还报错呢?就这问题,折腾了好几台机器,最后得出的结果就是:

1、先查看操作系统位数,然后根据位数和本地Access版本安装Access驱动;

2、然后以“管理员身份运行”C:\Windows\SysWOW64\odbcad32.exe(一定要用这种方式去看,要是没有odbcad32.exe文件,就换别的方式吧),在弹出的“ODBC数据源管理器”框中切换到“系统驱动”选项卡,在里面找“Microsoft Access Driver”,看看里面有的驱动到底是只支持mdb,还是既支持mdb有支持accdb,要是只有“Microsoft Access Driver(*.mdb)”,那咱们还是把Access数据库建成mdb结尾的然后用mdb数据库来创建ODBC数据源,即便是accdb的也先转成mdb的再配置成数据源。要是有“Microsoft Access Driver(*.mdb,*.accdb)”,那Access数据库就没有要求了,选驱动的时候选这个,数据库哪个都行。

这样子之后,ODBC数据源的配置基本上是没有问题了。

 

问题二:执行insertSQL时报错:Driver does not support this function

执行代码是这样子的:

stmt = getConnect(db).prepareStatement(sql);
rs = stmt.executeUpdate(sql);//执行SQL

其中的sql是insert SQL语句,单独拿出来可以执行,没有问题。但是一用上面的代码执行就报错。

估计眼尖的人已经看出问题来了,是这个代码有问题。

第一行代码中已经将sql放到prepareStatement里面去了,后面执行的时候又放一遍,自然要报错了,所以只需要改成:

stmt = getConnect(db).prepareStatement(sql);
rs = stmt.executeUpdate();//执行SQL

也就是去掉executeUpdate中的sql就OK啦。

 

问题三:[Microsoft][ODBC Microsoft Access Driver] 无效的括号名称 '[1476.1950000000002]'

这个问题是在insert数据的时候发生的,写的SQL很简单:

insert into table1(field2,field3,field4) values("1","2","3");

看到SQL并熟悉Access的人应该就知道问题所在了,Access里面的insert语句只能用单引号不能用双引号,但我这个外行不了解这个规则,所以就出现上面的问题了。所以变成单引号就OK了。

insert into table1(field2,field3,field4) values(‘1’,‘2’,‘3’);

 

问题四:java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序

异常如下:

java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
	at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
	at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
	at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3073)
	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:582)
	at java.sql.DriverManager.getConnection(DriverManager.java:154)
	at com.tsp.connection.DBConnection.<init>(DBConnection.java:25)
	at com.tsp.connection.DBConnection.main(DBConnection.java:87)

这个问题是在使用java驱动链接Access时触发的,链接代码如下:

static String dbPath =new File("").getAbsolutePath()+File.separator+"database"+File.separator+"reckon.accdb";
 //直接用驱动连接Access数据库
 String conn="jdbc:odbc:driver={Microsoft Access Driver(*.mdb,*.accdb)};DBQ=";
/**
 * 该方法用来连接数据库
 * @param db:
 * 当使用ODBC数据源的方式连接Access时,db为数据源名称
 * 当使用驱动连接Access时,db为数据库所在目录(目前用的是驱动连接)
 * */
private DBConnection(){
	try{
		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//注册驱动
		//Access中的数据库默认编码为GBK,本地项目为UTF-8,若不转码会出现乱码
		Properties p = new Properties();
        p.put("charSet", "GBK");
		connect = DriverManager.getConnection(conn+dbPath,p);
	}catch(Exception e){
		e.printStackTrace();
	}
}

 上面的代码看起来没有任何问题,但是一执行一定报错,因为问题所在很隐晦,解决方法如下:


(以上图片的内容来自:http://bbs.csdn.net/topics/370210823

因此,只需要改掉连接字符串就OK啦,改成:

String conn="jdbc:odbc:driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=";

也就是在Driver与(之间添加空格,*.mdb,与*.accdb之间添加一个空格即可。

  • 大小: 169.4 KB
分享到:
评论

相关推荐

    PC Access SMART 通讯常见问题

    有时 PC Access SMART 软件进行客户端测试时,系统会提示:服务器组态文件已写保护?该如何设置? 答:如下图所示,有些用户进行客户端测试时,系统出现提示信息:服务器组态文件已写保护。

    S7-200 SMART OPC服务端软件PC ACCESS SMART问题汇总

    S7-200 SMART OPC服务端软件PC ACCESS SMART问题汇总

    写程序时遇到问题,请大家多提解决方案access2000

    说 明:本人在写界面时,用了十几张图标文件,结果经常出现内存不足,请大家帮助解决,

    中文Access 2000疑难解析.rar

    本书是学习和使用Access 2000 的必备书,书中列举了使用Access 2000 时所遇到的常见疑难问题及解答。全书共分16章,每一章都包含了Access 2000 一个特定方面的问题和解答。本书按相应的主题由浅入深地提出问题并解答...

    Excel连接SQL数据库 Access数据库 V1 0(100%开源)

    刚刚学习 遇到很多困难才完成 希望给广大新手有帮助 "&gt;Excel连接SQL数据库 Access数据库 V1 0 1 100%开源; 2 附SQL数据库 测试数据库配置图片 3 连接函数 只需要修改参数 既可以连接Access数据库 4 附计算序号最大...

    vs2008+access报销管理系统---毕业上岗的第一个单独开发的项目,已经使用

    新版本已经在公司使用,版权问题,不便共享,见谅。在此拿出来供刚刚入门的新手对将来开发系统有一个比较清晰的概念,抛砖引玉吧。 适合对象:没有做过实际项目的大学生。 开发环境:VS2008+access+devexpress8.2.6...

    vs2010-C#连接access2007

    SQL转access时遇到麻烦,其中第一步连接数据库就出问题...适合菜鸟参考

    access窗体关于创建的问题!关联!数据库!

    很好的讲座如果大家还有需求可以给我留言继续发送

    基于asp和access的在线考试系统

    题型丰富,使用方便。 1后台管理员:admin;...2、内有20位学生帐号;...遇到此问题时可以用ACCESS软件打开数据库,然后在“文件”-》“获取外部数据”-》“导入”,然后选择EXCEL文件导入相应的表。

    Access2002-2003数据库合并工具

    数据库合并是业务部门经常遇到的情形,还在人工合并吗,不仅效率低下而且容易出错,您也是否在网上寻找过数据库合并工具,找到的数据库合并工具要么是收费软件,要么是国外英文界面,操作不易,降低了使用效率,浪费...

    更好用的ACCESS修复器未知

    你是否遇到过平时可以正常打开的access数据库突然打不开啦,或者因为突然停电而导致数据库损坏或数据丢失而造成其它数据全部变成乱码,如果你还在为这些而烦恼的话,那么这个工具应该能帮到你。

    Asp+access网站的安全问题及其防范

    Asp+access网站的安全问题及其防范及遇到的多种问题!

    Access数据库解疑专家(高清中文版)

    本着易用、简单和快速的原则,本书为用户在使用Access 97或Access 2000数据库过程中出现的问题提供了全面的诊断和解决方法。对每个可能出现的问题按TOPIC分类,每个TOPIC的题目都能让你一目了然地知道该TOPIC所要...

    二级Access全真模拟考试软件 v2017 下半年版.zip

    用户在下载软件、购买软件、使用软件时遇到疑难问题,可通过E-mail、QQ、本网站在线客服、电话等方式向我们咨询,我们会即时为客户进行回复。 说明:本级别考试分为无纸化上机考试。时间:120分钟,满分100分,包括...

    SQLSERVER远程访问Access数据库

    用SQlServer远程访问Access数据库。之前在网上说的都是访问本地的Access数据库。自己在做项目的遇到这个问题就深入的研究了一下。总结如下。希望能对大家有帮助。

    解决Access中分组报表的问题

    解决Access中分组报表的问题

    Access 2010中文指南

    即使您不是数据库专家,Access 也能帮助您充分利用您的信息,同时几乎不会遇到障碍,只需短暂的学习。Access 2010 能够与各种数据源无缝连接,它还提供一些工具来帮助您收集信息,让您以应有的方式与他人协作。无需...

    AccessData_FTK_Imager4.2.1最新版取证工具.rar

    支持E01、DD、L01、DMG、VMDK、VHD、AD1等几十种镜像格式,使用过程中几乎没有遇到挂在不了的镜像格式。支持获取当前内存镜像、获取受保护的文件,例如直接获取当前系统的注册表文件。另外,此工具完全免费。

    Office 2016 Access DataBase Engine 64位

    未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。需要下载此资源。 个人是在研究别人代码的时候,遇到这个问题,找的资源。

    VB控件--局域网ACCESS数据库共享

    在VB开发局域网数据库系统的时候,如果遇到需要共享数据库的情况时,可以使用该控件。非常好用。不过只针对ACCESS。

Global site tag (gtag.js) - Google Analytics