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

时间:2014-08-27 18:49:08

标签: 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;" />

当我运行我的WebSite时,它仅在我的DropDownList绑定数据和错误是这样的情况下给出错误 &#34;不是有效密码。&#34;

我使用以下代码绑定我的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>

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

1 个答案:

答案 0 :(得分:4)

问题的症结似乎是:

  1. 在Web.config中,您为名为“comm.accdb”的受密码保护的Access数据库创建了名为commconn的数据连接,但是
  2. 您已尝试使用AccessDataSource填充DropDownList,并且AccessDataSource通过DataFile=参数直接引用Access数据库; commconn数据连接与它无关。
  3. 此外,MSDN文章

    Retrieving Data Using the AccessDataSource Web Server Control

    表示:

      

    请注意

         

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

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

    <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" />
    

    以及.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>