2009-11-24 222 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。日期和时间函数,存储过程和参数绑定(?而不是@)是一些你需要仔细检查的东西。