ASP.NET 使用 SqlConnection 连接 MySQL
Posted
技术标签:
【中文标题】ASP.NET 使用 SqlConnection 连接 MySQL【英文标题】:ASP.NET use SqlConnection connect MySQL 【发布时间】:2013-08-17 16:02:00 【问题描述】:这是web.config
中保存的连接字符串:
<appSettings>
<add key="conn" value="Driver=mysql ODBC 5.1 Driver;server=127.0.0.1;uid=root;pwd=1234;database=gis_server;option=3"/>
</appSettings>
这是连接数据库的代码:
protected bool CheckPasswordBySqlServer(string strEmail, string strPsw)
if (strEmail.ToLower() == "admin")
return false;
string str = "select id,Rank,RankEnc,ParentUser,Company from tbl_User where userName=@UserName and password1=@password";
private string strConn = ConfigurationManager.AppSettings["conn"].ToString();
SqlConnection sqlConnection = new SqlConnection(strConn);
bool flag = false;
try
try
sqlConnection.Open();
SqlCommand sqlCommand = new SqlCommand(str, sqlConnection);
sqlCommand.Parameters.AddWithValue("UserName", strEmail);
sqlCommand.Parameters.AddWithValue("Password", strPsw);
SqlDataReader sqlDataReader = sqlCommand.ExecuteReader();
if (!sqlDataReader.Read())
flag = false;
else
this.Session["UserName"] = strEmail;
this.Session["Password"] = strPsw;
this.Session["LoginType"] = "Group";
this.Session["FullName"] = sqlDataReader["Company"].ToString();
if (FormsAuthentication.HashPasswordForStoringInConfigFile(string.Concat(strEmail, (char)43, sqlDataReader["Rank"].ToString()).ToLower(), "MD5") != sqlDataReader["RankEnc"].ToString().Trim())
flag = false;
this.Session["ClientID"] = sqlDataReader["id"].ToString();
this.Session["MyLanguage"] = base.Request.Cookies["Language"].Value;
this.Session["ParentUser"] = sqlDataReader["ParentUser"].ToString().Trim();
this.Session["Rank"] = sqlDataReader["Rank"].ToString();
this.Session["strConnection"] = this.strConn;
flag = true;
sqlDataReader.Close();
catch (Exception exception)
this.SetlblInfohtml(exception.Message);
finally
sqlConnection.Close();
return flag;
但是连接MySQL失败,返回错误:
System.ArgumentException: Keyword not supported: 'driver'. at System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable synonyms, Boolean firstKey) at System.Data.Common.DbConnectionOptions..ctor(String connectionString, Hashtable synonyms, Boolean useOdbcRules) at System.Data.SqlClient.SqlConnectionString..ctor(String connectionString) at System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous) at System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(String connectionString, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions) at System.Data.SqlClient.SqlConnection.ConnectionString_Set(String value) at System.Data.SqlClient.SqlConnection.set_ConnectionString(String value) at System.Data.SqlClient.SqlConnection..ctor(String connectionString) at Source_LoginFrm.CheckPasswordBySqlServer(String strEmail, String strPsw) at Source_LoginFrm.btnLogin_Click(String strLang)
SqlConnection 可以连接 MySQL 数据库吗?
【问题讨论】:
你看过connectionstrings.com/mysql 遇到了同样的问题,这些是帮助我的 2 个链接:要检查 MySQL 配置是否正确,请按照页面上的说明进行操作 MySQL EF6 Support 在同一个项目中使用 MS SQL 和 MySQL,然后必须添加一个 DBConfiguration 解释如下:DBConfiguration for MS SQL and MySQL 【参考方案1】:SqlConnection
用于 SQL Server。您需要MySqlConnection
- 这不是.NET Framework 的一部分,因此您必须download it 并在您的项目中引用它。然后,您可以创建一个MySqlConnection
对象并在您的应用程序中连接到 MySQL:
MySqlConnection connection = new MySqlConnection(myConnString);
您还必须使用MySqlCommand
对象而不是SqlCommand
对象。
http://dev.mysql.com/doc/refman/5.0/es/connector-net-examples-mysqlconnection.html
【讨论】:
JDBC 更好。【参考方案2】:我不知道,即使会,你为什么要这样做?您正在使用专门为 Microsoft SQL Server 创建的连接对象,因此它不会以与 MySQL 相同的方式进行连接。
要访问 MySQL 数据库,您应该使用 MySQL .NET 连接器,您可以找到 here。
【讨论】:
【参考方案3】:正如 Darren seid “SqlConnection 用于 SQL Server。” 你需要从 NuGet 安装 MySql.Data: mySql.Data
您也可以在包管理器控制台中使用 Install-Package MySql.Data
然后您可以创建 MySqlConnection 对象并连接到您的数据库:
var cnn = new MySqlConnection("my Connection String");
【讨论】:
以上是关于ASP.NET 使用 SqlConnection 连接 MySQL的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC 使用 Dapper 管理 SQLConnection
在 ASP.NET MVC 4 NHibernate 应用程序中使用 SessionFactory 获取连接
使用 Impersonation 打开 SQLconnection 时出现 TypeInitializationException
C# CancellationToken 如何与 SqlConnection.OpenAsync(token) 一起使用?
using (SqlConnection connection = new SqlConnection(connectionString))