c#连接access2007连接字符串
c#连接access 2007连接字符串
以前写⽹页都是⽤的ACCESS2003数据库,连接字符串也通常是以下两种:
⼀:connstr="DBQ="+server.mappath("数据库名")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)}
⼆、provider=Microsoft.Jet.OLEDB.4.0;data source="&Server.MapPath("数据库名")
这次重装系统后我装上了ACCESS2007,在⽣成数据库时,我就发现没有了MDB的数据库格式,⽣成后我把它名改成了MDB(有点搞笑哦,我习惯了⽤MDB后缀的)。
按第⼀种⽅法,在连接时数据库出现错误:Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver]常见错误 不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0x404 Thread 0x92c DBC 0x16764c4 Jet';按⽹上搜的帖⼦处理⽅法,我把⽬录的所有权限全部加上也是⼀样的错误提⽰。
换成第⼆种⽅法,出现这种提⽰:不可识别的数据库格式 'F:\web\bfzz\admin\data\data.mdb';我是⽤ACCESS2007⽣成的数据库,我把后缀名改成默认的ACCDB,,错误依然。今天在⽹上搜ACCESS2007连接字符串,才发现是2007数据库格式发⽣了变化,已经不能⽤再使⽤以上两种⽅法连接数据库了,应换成Provider=Microsoft.ACE.OLEDB.12.0;Data Source=“数据库名”。注意和以前的access ADO连接字符串⼏个三个明显不同的地⽅:
Provider部分由Microsoft.Jet.OLEDB变成了Microsoft.ACE.OLEDB
以前的jet4是连接不上的;
驱动版本号由4.0变成了12.0
数据库的扩展名变为accdb⽽⾮mdb。
2003:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=XXX.mdb
2007:Provider=Microsoft.ACE.OLEDB.12.0;Data Source=XXX.accdb;
以前,⽤ASP连接Access数据库,连接字串可以这样写:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\myFolder\*.mdb ;Persist Security Info=False;
但是⾃从有了Access07和Access10,Access数据库的扩展名也由*.mdb改为了*.accdb,如果再使⽤上述连接Access2007的话就会报出"不可识别的数据库格式"异常,是什么原因呢?下⾯简要说下具体原因。
⼤家知道,Microsoft.Jet.OLEDB.4.0的Oledb的数据库连接⽅式很早就推出了,也算是⽐较⽼的连接⽅式了,⽽2007年以后的Oledb连接⽅式已经被微软改成了Microsoft.ACE.OLEDB.12.0,所以接着上述的连接语句来说,也要做出改动才可以,换成这样就可以了: Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\*.accdb;Persist Security Info=False;
⼀个⼩窍门:
在asp中经常把连接字符串写在fig中。但是access的连接字符串是需要数据库的绝对位置。即盘符:/⽂件夹/⽂件 这样就导致经常把⽂件拷贝后需要改路径的问题。其实完全可以通过程序来获得数据库⽂件的绝对路径。具体如下:
<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来获得此数据库的绝对路径。
[⽰例代码]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace winform01
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnCheckAccess_Click(object sender, EventArgs e)
{
string strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\CSE_DEPT.accdb;Persist Security Info=False;";
OleDbConnection accConnection = new OleDbConnection(strConnectionString);
try
{
accConnection.Open();
}
catch (OleDbException e1)
{
MessageBox.Show("Access Error");
MessageBox.Show("Error Code=" + e1.ErrorCode);
MessageBox.Show("Error Message=" + e1.Message);
}
catch(InvalidOperationException e1)
{
MessageBox.Show("Invalid Message=" + e1.Message);
}
if(accConnection.State!=ConnectionState.Open)
{
MessageBox.Show("Database connection is Failed");
Application.Exit();
}
else
{
MessageBox.Show("Database connection is Success!");
Application.Exit();
}
}
}
}
未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序解决办法
错误信息:未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序。
解决办法:
access数据库生成网页版去download.microsoft/download/7/0/3/ 下载。然后安装就⾏了。
本错误是由于你使⽤了ACCESS2007版本建⽴的数据库,但服务器中没有相配合使⽤的程序,所以出错.
未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序。
说明: 执⾏当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidOperationException: 未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序。
下载2007 Office system 驱动程序:数据连接组件安装
download.microsoft/download/7/0/3/
此下载将安装⼀组组件,⾮ Microsoft Office 应⽤程序可以使⽤它们从 2007 Office system ⽂件中读取数据,
例如从 Microsoft Office Access 2007(mdb 和 accdb)⽂件以及 Microsoft Office Excel 2007(xls、xlsx 和 xlsb)⽂件中读取数据。
这些组件还⽀持与 Microsoft Windows SharePoint Services 和⽂本⽂件建⽴连接。
此外,还会安装 ODBC 和 OLEDB 驱动程序,供应⽤程序开发⼈员在开发与 Office ⽂件格式连接的应⽤程序时使⽤。
---------------------------------------------------------------------------------------------------------------------------------------------------
使⽤此下载:
如果您是应⽤程序⽤户,请查阅应⽤程序⽂档以获得有关如何使⽤相应的驱动程序的详细信息。
如果您是使⽤ OLEDB 的应⽤程序开发⼈员,请将 ConnectionString 属性的 Provider 参数设置为“Microsoft.ACE.OLEDB.12.0” 如果要连接到 Microsoft Office Excel 数据,请将“Excel 12.0”添加到 OLEDB 连接字符串的扩展属性中。
如果您是使⽤ ODBC 连接到 Microsoft Office Access 数据的应⽤程序开发⼈员,
请将连接字符串设置为“Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=path to mdb/accdb file”
如果您是使⽤ ODBC 连接到 Microsoft Office Excel 数据的应⽤程序开发⼈员,
请将连接字符串设置为“Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=path to xls/xlsx/xlsm/xlsb file”
详情:www.microsoft/downloads/zh-cn/details.aspx?displaylang=zh-cn&FamilyID=7554f536-8c28-4598-9b72-ef94e038c891
或者:
解决办法1 (验证可以了)
选择 该应⽤程序的 应⽤程序池 ------>选择⾼级设置 --------->启⽤32位应⽤程序 ------->true
解决办法2
Microsoft.ACE.OLEDB.12.0是不能再x64上使⽤的,你要强制把你的web application编译成x86再发布到
Win08 x64上,记得在Application pool上设置Enable 32bit Application = true。
(没有验证)
winform
环境:
Win7 64位
Office 2007
NET WinForm应⽤程序,连接Access2007是,总是报
”未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序“ 错误。
解决办法:项⽬属性-⽣成-⽬标平台 选择 X86。
默认:Any CPU 报错,X64 也报错。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。