2013-08-15 46 views
6

Đây là chuỗi kết nối lưu trong web.config:ASP.NET sử dụng SqlConnection kết nối MySQL

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

Đây là mã để kết nối với cơ sở dữ liệu:

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 [email protected] and [email protected]"; 
    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; 
} 

Nhưng nó không thành công để kết nối MySQL, với lỗi trả về này:

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 đó có thể kết nối cơ sở dữ liệu MySQL không?

+0

bạn đã xem http://www.connectionstrings.com/mysql/ – Jonesopolis

+0

Có cùng một vấn đề và đây là 2 liên kết trợ giúp tôi không: Để kiểm tra xem cấu hình MySQL có đúng hướng dẫn không trên trang [Hỗ trợ MySQL EF6] (https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework60.html) được sử dụng MS SQL và MySQL trong cùng một dự án, sau đó đã có thêm một DBConfiguration như được giải thích trong: [ DBConfiguration cho MS SQL và MySQL] (http://stackoverflow.com/questions/26361592/same-application-different-databases-entity-framework-6-x-mysql-sql-server/26496907#26496907) – Riga

Trả lời

17

SqlConnection là cho SQL Server. Bạn cần MySqlConnection - đây không phải là một phần của .NET Framework, do đó bạn sẽ phải download it và tham khảo nó trong dự án của bạn. Sau đó bạn có thể tạo một đối tượng MySqlConnection và kết nối với MySQL trong ứng dụng của bạn:

MySqlConnection connection = new MySqlConnection(myConnString); 

Bạn cũng sẽ phải sử dụng các đối tượng MySqlCommand chứ không phải là đối tượng SqlCommand.

http://dev.mysql.com/doc/refman/5.0/es/connector-net-examples-mysqlconnection.html

+0

JDBC là tốt hơn . – Alex78191

0

Không mà tôi biết, và thậm chí nếu nó sẽ, tại sao bạn sẽ muốn? Bạn đang sử dụng một đối tượng kết nối được tạo riêng cho Microsoft SQL   Máy chủ, vì vậy nó sẽ không kết nối trong cùng một MySQL thời trang.

Đối với truy cập vào một cơ sở dữ liệu MySQL, bạn nên sử dụng kết nối MySQL NET mà bạn có thể tìm here.

Các vấn đề liên quan