使用C#Web.config文件连接到Access数据库

use*_*541 1 c# asp.net ms-access ms-access-2013

我正在使用MS Access 2013数据库名称为“ comm”,密码为“ xyz @ 12345”

Web.config连接字符串:

<add name="commconn" connectionString="Provider=Microsoft.ACE.OLEDB.12.0; Data Source=E:/ee/comm.accdb; Jet OLEDB:Database Password=xyz@12345;" />
Run Code Online (Sandbox Code Playgroud)

当我运行我的WebSite时,它仅在我的DropDownList绑定数据的地方给出错误,错误是“无效密码”。

我使用以下代码绑定我的DropDownList:

<asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="AccessDataSource1" DataTextField="share_amt" DataValueField="ID">
</asp:DropDownList>
<asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/comm.accdb" SelectCommand="SELECT * FROM [share_amt] ORDER BY [ID]">
</asp:AccessDataSource>
Run Code Online (Sandbox Code Playgroud)

我正在使用MS Access 2013数据库和带有C#的ASP.Net。

Gor*_*son 5

您问题的症结似乎是:

  1. 在Web.config中,您创建了一个数据连接commconn,该数据连接的名称为受密码保护的Access数据库“ comm.accdb”,但
  2. 您尝试使用AccessDataSource填充DropDownList,并且AccessDataSource通过DataFile=参数直接引用Access数据库。在commconn数据连接无关吧。

此外,MSDN文章

使用AccessDataSource Web服务器控件检索数据

说:

注意

AccessDataSource将不会连接到受密码保护的Access数据库。若要从受密码保护的Access数据库中检索数据,请使用SqlDataSource控件。

因此,对于App_Data文件夹中名为“ comm.accdb”的受密码保护的Access数据库,<connectionStrings>在Web.config中需要这样的条目:

<add name="commConnectionString" 
    connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\comm.accdb;Jet OLEDB:Database Password=xyz@12345"
    providerName="System.Data.OleDb" />
Run Code Online (Sandbox Code Playgroud)

以及.aspx页上的类似内容:

<asp:SqlDataSource 
    ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:commConnectionString %>" 
    ProviderName="<%$ ConnectionStrings:commConnectionString.ProviderName %>" 
    SelectCommand="SELECT * FROM [share_amt] ORDER BY [ID]">
</asp:SqlDataSource>
<asp:DropDownList ID="DropDownList1" runat="server" 
    DataSourceID="SqlDataSource1" DataTextField="share_amt" DataValueField="ID">
</asp:DropDownList>
Run Code Online (Sandbox Code Playgroud)