问题一:[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之间添加一个空格即可。

使用Access时遇到的问题相关推荐

  1. sql操作access时出现 MSDTC错误,服务器 'SERVER' 上的 MSDTC 不可用。

    公司几个部门asp做的客户关系管理系统,放在不同服务器,在转换数据时采用assess.mbb文件做中间交换, 但是有一个服务器链接mdb文件时,每过一段时间总是莫名出现 未知错误,重启电脑后就好了. ...

  2. 代码操作 ACCESS时为什么老出现XXX函数未定义错误?

    为什么老出现XXX函数未定义错误? 问题: 1.为什么以前运行正常的Access数据库,搬到另一台电脑上老出现XXXX函数未定义错误? 2.为什么我在Access中调试通过的sql语句,在VB/ASP ...

  3. java insert access_java连接access时无法使用INSERT语句添加数据

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求大神指教~~~~java连接access数据库的问题,那一句话的其他功能和access中运行都没有问题,但是就是不能插入数据库中去,好纠结,到底是怎麼回 ...

  4. 连接access时的REGDB_E_CLASSNOTREG(0x80040154)错误

    当出现这个错误的时候 No error information available: REGDB_E_CLASSNOTREG(0x80040154).一般是数据库连接字串里的 Provider=Mic ...

  5. 刚开始学ASP+ACCESS时,该注意的事项

    数据库或对象为只读 错误类型: Microsoft JET Database Engine (0x80040E09) 不能更新.数据库或对象为只读. 如果你运行ASP数据库页出现上述错误的话,请按下面 ...

  6. 随说秋色园从Access升迁到MSSQL过程

    2019独角兽企业重金招聘Python工程师标准>>> 秋色园的运行环境概况: 目前运行在国外godaddy的虚拟主机的一个子目录中,数据库为Access. 随说Access分页: ...

  7. 了解Access安全性

    简介 在早期版本的 Microsoft® Access(Microsoft Access 2000 以前)中,有关安全性的知识有时被认为是无法为任何人所掌握和应用的.您需要按顺序执行很多步骤,一旦遗漏 ...

  8. outlook 未安装信息服务器,Outlook Web Access 未初始化并且在客户端访问服务器上的应用程序日志中记录了事件 ID 64...

    Outlook Web Access 未初始化并且在客户端访问服务器上的应用程序日志中记录了事件 ID 64 07/04/2014 本文内容 上一次修改主题: 2007-10-17 尝试访问 Micr ...

  9. access是不是计算机编程,access编程简介之二:用宏还是VBA?

    时 间:2012-07-03 09:47:12 作 者: 摘 要:Access编程简介之二:我应该使用宏还是应该使用 VBA 代码? 正 文: 要决定是使用宏或 VBA 还是同时使用这两者,主要取决于 ...

最新文章

  1. saltstack state模块-状态管理
  2. 404错误,500错误页面的代表意思
  3. shiro-权限概述
  4. Smart Pointer
  5. (1)定义接口A,里面包含值为3.14的常量PI和抽象方法double area()。 (2)定义接口B,里面包含抽象方法void setColor(String c)。
  6. 使用计算机 发展了人的运算能力,人们对计算的需求有多大?
  7. 用python进行wifi密码生成
  8. 数据集(三)|人工智能领域100+数据集分享,赶紧收藏!
  9. php公众号开发 点菜,微信公众号点餐系统怎么弄 微信点餐系统怎么开发
  10. bootstrap 下拉列表获取_Bootstrap框架下下拉菜单的实现(代码示例)
  11. PPT流程图这样画,感动老板第一步!
  12. java解析ip地址_通过JAVA解析IP地址
  13. eigrp 扩散算法_EIGRP之DUAL(扩散更新算法)
  14. php是什么症状脾虚什么症状怎么治,脾虚的症状及治疗方法是什么
  15. Shell攻关之正则表达式
  16. 微软云强劲增长的背后,是全新的人工智能黑科技
  17. SCI论文投稿前必须检查的29个细节
  18. Chrome 插件(Shockwave Flash)未响应 错误解决办法
  19. python手机壁纸超清_python爬虫学习之爬取5K分辨率超清唯美壁纸
  20. Mybatis多表操作

热门文章

  1. python画易烊千玺_教你如何轻松画出逼真的易烊千玺
  2. 14 配置路由器OSPF动态路由
  3. H5mui微信浏览器登录页
  4. 海鸥算法的改进及其在工程设计优化问题中的应用
  5. 互联网公司实际部署平台-协作平台
  6. Picsee for mac(最好的图片管理查看器)
  7. tplogin服务器未响应,TP-Link路由器的管理页面打不开怎么办?
  8. 温度芯片(TM75,LM75)
  9. 解决 iOS 上 transform rotate 兼容问题
  10. LaTex使用方法和技巧——以IEEE会议论文模板为例