从c#应用程序连接到MYSQL

时间:2009-11-24 00:54:29

标签: c# .net mysql

项目的基础数据库已从sql 2005更改为MySql 5.1 该代码具有类似于下面的方法。我假设这只是将'con'变量SqlConnection切换到MYSql特定连接的情况。有没有人有这方面的经验?我从来没有碰过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;
    }

3 个答案:

答案 0 :(得分:4)

你得到了部分正确,但你需要一个MySQL Provider实例,而不是SqlConnection。此外,您还必须更改任何与MySQL不兼容的SQL。

答案 1 :(得分:2)

可下载的SQL连接器可用于各种框架和平台 - 在这种情况下,以ADO.NET为幌子引用.NET项目的程序集为available from MySql。可以使用任何.NET语言对它们进行编程。

通过引用MySql名称空间来启动C#:

using MySql.Data.MySqlClient; 

并将您的ADO.NET类名从SqlConnection更改为MySqlConnection等。Google Code examples显示粗略用法(类似于其他ADO.NET提供程序),当然还有{{ 3}}

答案 2 :(得分:1)

不,你还必须改变这一行

var command = new SqlCommand();

var command = new con.CreateCommand();

当然,您必须将任何特定的T-SQL和MSSQL功能更改为MySQL。日期和时间函数,存储过程和参数绑定(?而不是@)是您需要仔细检查的一些事项。