asp.net使用mysql数据库

1、下载 Mysql Connector,我下载的是5.2.5,地址:http://dev.mysql.com/downloads/connector/net/5.2.html,要用安装版本,这样在安装过程中会对machine.config 、vs2008 等进行一些默认配置,省去了手动配置的麻烦。

2、在网站web.config文件上添加ConnectionString

<connectionStrings>
<remove name="LocalMySqlServer"/>
<add name="LocalMySqlServer" connectionString="Datasource=localhost;Database=dbname;uid=dbuser;pwd=dbpwd;" providerName="MySql.Data.MySqlClient"/>
</connectionStrings>

3、把Mysql.Data.dll文件复制到网站bin文件夹并添加引用

4、在machine.config (c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Config\machine.config)中添加 autogenerateschema="true" ,自动生产相关表格结构,如下:

<membership>
<providers>
<add name="MySQLMembershipProvider" autogenerateschema="true" type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=5.2.2.0, ... />
</providers>
</membership>

5、在Vistual stuido 2008中打开Asp.net 网站管理工具(项目 > ASP.NET 配置),在“提供程序”页面选择“为每项功能选择不同的提供程序(高级)”,接下来在“成员资格提供程序”中选择MySQLMembershipProvider ,在“角色提供程序”中选择MySQLRoleProvider 。

附:在共享主机上由于限制trust level为medium,毕竟MySql.Data中部分功能会涉及到High Trust Level,而主机提供商限制了Trust Level为中级(Medium),所以通过MySql.Data来连接数据库就会报权限错误:
Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
解决办法:换回较早版本的MySql.Connector.NET,比如6.0.4和6.0.7版本。它们在使用的过程中不会有权限问题,加上是官方原版,所以功能也不会有任何缺失。下载6.0.7版本的MySql.Data.dll,将这个文件拷贝至网站的BIN目录。
用的时候需要在web.config中加上如下一段,清除已有的数据库Provider,使用我们自己提供的MySql.Data.dll(因为共享主机的服务器上已经安装了更老的并且有权限问题的MySql.Connector.NET,还好web.config很强大,几乎任何配置都能改)
<system.data>
<DbProviderFactories>
<clear/>
<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.0.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
其他的配置就没有任何不同了,这样就可以使用共享主机上结合asp.net使用mysql数据库了

具体的配置:

<system.data>
<DbProviderFactories>
<clear/>
<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.0.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>

<system.web>
<membership>
<providers>
<clear/>
<add name="MySQLMembershipProvider" autogenerateschema="true" type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.0.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Clear" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
</providers>
</membership>
<profile>
<providers>
<clear/>
<add name="MySQLProfileProvider" type="MySql.Web.Profile.MySQLProfileProvider, MySql.Web, Version=6.0.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" applicationName="/" />
</providers>
</profile>
<roleManager enabled="true" defaultProvider="MySQLRoleProvider">
<providers>
<clear/>
<add name="MySQLRoleProvider" type="MySql.Web.Security.MySQLRoleProvider, MySql.Web, Version=6.0.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" applicationName="/" />
</providers>
</roleManager>

</system.web>

posted on 2011-07-12 20:04  Drupal  阅读(551)  评论(0编辑  收藏  举报