发布:2022/12/15 14:05:37作者:管理员 来源:本站 浏览次数:993
在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文件夹下,因为有一定的安全性)
<add key="ConnString" value="App_Data\ManageDB.accdb"/>
</appSettings>
通过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)
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4