使用 DataDirectory 连接到 Access/Jet

来源:互联网 发布:罚抄必备神器淘宝 编辑:程序博客网 时间:2024/06/04 23:18

必须为 OleDbConnection 连接字符串指定提供程序名称。下列连接字符串使用 Jet 提供程序连接到 Microsoft Access 数据库。请注意,如果数据库未受到保护(默认值),可选择 UserIDPassword 关键字。

Provider=Microsoft.Jet.OLEDB.4.0; Data Source=d:/Northwind.mdb;User ID=Admin;Password=;

如果使用用户级安全保护 Jet 数据库,则必须提供工作组信息文件 (.mdw) 的位置。工作组信息文件用于验证连接字符串中显示的凭据。

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:/Northwind.mdb;Jet OLEDB:System Database=d:/NorthwindSystem.mdw;User ID=*****;Password=*****;

在 ADO.NET 2.0 中,随着 |DataDirectory|(包含在管道符号中)替代字符串的引入,可指示数据文件的相对路径,从而允许开发人员创建基于数据库源的相对路径(而无需指定完整路径)的连接字符串。它还可以用于 System.Data.OleDbSystem.Data.Odbc .NET 数据提供程序。如果将 Access .mdb 文件存储在网站的 App_Data 目录中(推荐使用以增强安全性),则可以使用语法 |DataDirectory|path 来指定位置。|DataDirectory| 字符串在运行时解析为网站的 App_Data 文件夹。下面的 OleDbConnection 字符串示例演示连接到应用程序 app_data 文件夹中的 Northwind.mdb 所需的语法。系统数据库 (System.mdw) 也存储在该位置。

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|/Northwind.mdb;Jet OLEDB:System Database=|DataDirectory|/System.mdw;"
 <connectionStrings>
<add name="Access2003" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|/Image.mdb;Jet OLEDB:Database Password=jinzhexian"
   providerName="System.Data.OleDb" />
<add name="Access2007" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|/User.accdb;Jet OLEDB:Database Password=jinzhexian"
   providerName="System.Data.OleDb" />
</connectionStrings>
安全说明:

如果 Access/Jet 数据库未受到保护,则不需要在连接字符串中指定系统数据库的位置。默认情况下安全性为关,所有用户可作为内置管理员用户使用空白密码进行连接。即使在正确实现用户级安全时,Jet 数据库仍很容易受到攻击。由于 Access/Jet 数据库的基于文件的安全性架构存在固有弱点,因此不建议在 Access/Jet 数据库中存储敏感信息。

 

 

将 Northwind.mdb 放在 ASP.NET 程序的子文件夹 App_Data 里。

Access 2003 : Provider = "Microsoft.Jet.OLEDB.4.0";


Access 2007 : Provider = "Microsoft.ACE.OLEDB.12.0";

"Jet OLEDB:Database Password" = "jinzhexian";