【问题标题】:Error in data-binding database to web form将数据库数据绑定到 Web 表单时出错
【发布时间】:2011-06-03 17:11:46
【问题描述】:

我是做网站的初学者,我只在msdn学过东西,但是现在当我尝试做一个非常简单的网站时,我遇到了这个错误

“找不到请求的 .Net Framework 数据提供程序。它可能没有安装。”

http://i.stack.imgur.com/RV5qY.jpg

创建网站的步骤>新建网站>空网站>添加新的WebForm>拖动页面上的GridView>添加新的数据源(sdf格式)。

测试查询运行良好,但是当我尝试运行网页时,我遇到了这个错误,我花了前一天的时间寻找解决方案(但它们似乎不再有效,或者适用于旧版本)。 我使用的是 Vs2010 Ultimate,安装了 sqlServer compact edition 2008 SP2。 这是 Web.config 文件:

<configuration>
  <connectionStrings>
 <add name="ConnectionString" connectionString="Data Source=C:\Users\TarunG\Documents\Visual Studio 2010\WebSites\WebSite1\App_Data\Database1.sdf"
  providerName="System.Data.SqlServerCe.Client.3.5" />
 </connectionStrings>
  <system.web>
  <compilation debug="true" targetFramework="4.0"></compilation>
  </system.web>
  </configuration>

数据库只包含一个表 - Result1。 默认.aspx 文件:

<body>
  <form id="form1" runat="server">
  <div>
    </div>
  <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
    DataKeyNames="Roll No." DataSourceID="SqlDataSource1">
    <Columns>
<asp:BoundField DataField="Roll No." HeaderText="Roll No." ReadOnly="True"
        SortExpression="Roll No." />
      <asp:BoundField DataField="Category" HeaderText="Category"
        SortExpression="Category" />
      <asp:BoundField DataField="Rank" HeaderText="Rank" SortExpression="Rank" />
      <asp:BoundField DataField="Registration No." HeaderText="Registration No."
        SortExpression="Registration No." />
      <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
    </Columns>
  </asp:GridView>
  <asp:SqlDataSource ID="SqlDataSource1" runat="server"
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
    ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>"
    SelectCommand="SELECT * FROM [Result1]"></asp:SqlDataSource>
  </form>
</body>

机器配置:

<add name="SQL Server Compact Edition Data Provider" invariant="System.Data.SqlServerCe" description=".NET Framework Data Provider for Microsoft SQL Server Compact Edition" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
    <add name="Odbc Data Provider" invariant="System.Data.Odbc" description=".Net Framework Data Provider for Odbc" type="System.Data.Odbc.OdbcFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
   <add name="OleDb Data Provider" invariant="System.Data.OleDb" description=".Net Framework Data Provider for OleDb" type="System.Data.OleDb.OleDbFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
   <add name="OracleClient Data Provider" invariant="System.Data.OracleClient" description=".Net Framework Data Provider for Oracle" type="System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
   <add name="SqlClient Data Provider" invariant="System.Data.SqlClient" description=".Net Framework Data Provider for SqlServer" type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
   <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.3.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
      <add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>

【问题讨论】:

    标签: .net asp.net sql-server visual-studio-2010 data-binding


    【解决方案1】:

    对于网站,您应该使用 SQL Server Express,而不是 SQL Server Compact Edition。 SQL Server Compact Edition 专为独立的单用户方案而设计。 ASP.NET 正在寻找 SQL Server Express 驱动程序,但没有找到它们。

    我建议卸载 SQL Server Compact Edition,然后从这里安装 SQL Server Express:http://www.microsoft.com/express/Database/ 这也将安装必要的驱动程序。

    安装 SS Express 后,让您的 web.config 连接字符串如下所示:

    <add name="ConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFileName=|DataDirectory|Database1.sdf;Integrated Security=True;User Instance=True" providerName="Microsoft.Sql.Client.3.5" />
    

    祝你好运!

    【讨论】:

    • 但是问题是数据库是sdf格式的,不会出问题
    • 我已经安装了 microsoft SQL server 2008(未指定它是哪个版本)。我还要下载 Express 版本吗??
    • 如果您已经安装了 SS2008,那么您就可以了。您可能只是遇到了连接字符串问题。您需要知道服务器的名称和SS2008 实例的名称(如果有)。然后你可以正确地构造你的连接字符串:
    • 自称是初学者,我建议您安装 SQL Server Express 用于学习目的。许多 Visual Studio 模板和示例假定您已安装 Express,在本地主机上运行,​​实例名称为 SQLEXPRESS。我将通过一个示例来更新我的答案,说明您的连接字符串在该场景中的外观。
    • 如果我想使用非 express 版本,./SQLEXPRESS 应该更改什么? (没有类似的东西能说明 SS 的味道)
    【解决方案2】:

    这里提到:http://msdn.microsoft.com/en-us/library/ms247257.aspx,你的连接字符串应该是这样的:

    Data Source=.\SQLEXPRESS;AttachDbFileName=|DataDirectory|Database1.sdf;Integrated Security=True;User Instance=True
    

    顺便说一句,您需要 SQL Server Express 才能使上述行正常工作。

    【讨论】:

    • -- 还是不行
    猜你喜欢
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    相关资源
    最近更新 更多