专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

C#开发winform解决Access连接 accdb 不可识别的数据库格式

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 1:13:48       共计:3628 浏览

在Access07之前的数据库后缀名均为*.mdb 而连接字符串写成Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\myFolder\*.mdb ;Persist Security Info=False;


但是Access07和Access10将后缀名改为了*.accdb。而通过上述连接的话就会报出"不可识别的数据库格式"异常。


需要注意的是Microsoft.Jet.OLEDB.4.0的Oledb的连接方式是比较老的连接方式,而07以后的Oledb连接方式将改成Microsoft.ACE.OLEDB.12.0。


改后的连接变成了Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\*.accdb;Persist Security Info=False;


小窍门:


在asp.net中经常把连接字符串写在web.config中。但是access的连接字符串是需要数据库的绝对位置。即 盘符:/文件夹/文件 这样就导致经常把文件拷贝后需要改路径的问题。其实完全可以通过程序来获得数据库文件的绝对路径。具体如下:


web.config中只写数据库文件名 (一般会把数据库文件放在App_Data文件夹下,因为有一定的安全性)


<appSettings>

    <add key="ConnString" value="App_Data\ManageDB.accdb"/>

</appSettings>


然后在DBHelper类获得字符串的写上如下方法:


public static string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + AppDomain.CurrentDomain.BaseDirectory + ConfigurationSettings.AppSettings["ConnString"];


通过AppDomain.CurrentDomain.BaseDirectory来获得此数据库的绝对路径.

实例:

System.Exception
  HResult=0x80131500
  Message=不可识别的数据库格式 'E:\ejk5\git\zybw\zybw\WinSitemap\bin\Debug\db\db.accdb'。
  Source=Maticsoft.DBUtility
  StackTrace:
   在 Maticsoft.DBUtility.DbHelperOleDb.Query(String conn, String SQLString) 在 E:\ejk5\git\zybw\zybw\DBUtility\DbHelperOleDb.cs 中: 第 328 行
   在 WinSitemap.Form1.Form1_Load(Object sender, EventArgs e) 在 E:\ejk5\git\zybw\zybw\WinSitemap\Form1.cs 中: 第 24 行
   在 System.Windows.Forms.Form.OnLoad(EventArgs e)
   在 System.Windows.Forms.Form.OnCreateControl()
   在 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   在 System.Windows.Forms.Control.CreateControl()
   在 System.Windows.Forms.Control.WmShowWindow(Message& m)
   在 System.Windows.Forms.Control.WndProc(Message& m)
   在 System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   在 System.Windows.Forms.Form.WmShowWindow(Message& m)
   在 System.Windows.Forms.Form.WndProc(Message& m)
   在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   在 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:c#中datatable如何使用System.Linq进行条件查询SELECT | ·下一条:如何向神马站长平台上提交Sitemap?

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有