2009-11-24 138 views
0

項目上的基礎數據庫已從sql 2005更改爲MySql 5.1 該代碼具有類似於以下方法的加載。我假設它只是將'con'變量SqlConnection切換到MYSQL特定連接的一種情況。有沒有人有這方面的經驗?我從來沒有碰過mySql分貝。任何幫助非常感謝。從c#應用程序連接到MYSQL

private SqlConnection con; 

    public User LogonUser(string pUserName, string pPassword) 
    { 

     con = new SqlConnection(); 
     con.ConnectionString = DatabaseConstants.DB_CONN_STRING; 


     using (con) 
     { 
      con.Open(); 
      var command = new SqlCommand(); 


      command.Connection = con; 
      command.CommandText = "SELECT id FROM Users WHERE userName = @userName AND password = @password"; 
      command.CommandType = CommandType.Text; 

      var userName = new SqlParameter("@userName", pUserName); 
      var password = new SqlParameter("@password", pPassword); 

      command.Parameters.Add(userName); 
      command.Parameters.Add(password); 


      User user; 
      var dr = command.ExecuteReader(); 
      if (dr != null) 

       if (dr.HasRows) 
       { 
        while (dr.Read()) 
        { 
         user = new User(); 
         user.id = dr.GetString(0); 
         return user; 
        } 
       } 
       else 
       { 
        throw new Exception("Can not find user, please check your username and password"); 
       } 
     } 
     return null; 
    } 

回答

2

可下載的SQL連接器可用於各種框架和平臺 - 在這種情況下,在ADO.NET的幌子下引用到您的.NET項目的程序集是available from MySql。可以使用任何.NET語言對其進行編程。

開始在C#中通過引用MySQL的命名空間:

using MySql.Data.MySqlClient; 

,並從SqlConnection您的ADO.NET類的名字,改到MySqlConnectionGoogle Code examples顯示走馬使用(類似於其他ADO.NET提供商)當然還有the MySql docs are the best reference

4

你知道它是部分正確的,但你需要一個MySQL提供程序的實例,而不是SqlConnection。你也將不得不改變任何與MySQL不兼容的SQL。

1

不,你這條線

var command = new SqlCommand(); 

也改變

var command = new con.CreateCommand(); 

,當然你必須改變任何特定的T-SQL和MSSQL功能到MySQL。日期和時間函數,存儲過程和參數綁定(?而不是@)是一些你需要仔細檢查的東西。