如何使用C#连接到Mysql

本文关键字:Mysql 连接 何使用 | 更新日期: 2023-09-27 17:58:39

我只是C#的初学者。我使用的是用于MySQL数据库和Visual C#2010的XAMPP服务器。然后,我在phpMyAdmin中创建了一个名为"testdb"的数据库和一个名称为"login"的表。我已经在表中插入了我的用户名和密码。我正在做一个简单的WinForm登录,在那里我制作了两个用于用户名和密码的文本框以及一个按钮。我已经完成了代码,没有编译器错误。但我在一行遇到了麻烦。上面写着"无法连接到任何指定的MySQL主机"。我在引用中添加了MySql.Data。我想在登录时获取数据库表中的数据。然后授权用户,如果不匹配,会提示错误消息。

这是我的代码:

using MySql.Data.MySqlClient; 
public bool Login(string username, string password)
{
    MySqlConnection con = new MySqlConnection("host=localhost;username…");
    MySqlCommand cmd = new MySqlCommand("SELECT * FROM login WHERE username='" +
                                      username + "' AND password='" + password + "';");
    cmd.Connection = con;
    con.Open(); // This is the line producing the error.
    MySqlDataReader reader = cmd.ExecuteReader();
    if (reader.Read() != false)
    {    
        if (reader.IsDBNull(0) == true)
        {
            cmd.Connection.Close();
            reader.Dispose();
            cmd.Dispose();
            return false;
        }    
        else
        {
            cmd.Connection.Close();
            reader.Dispose();
            cmd.Dispose();
            return true;
        }    
    }    
    else
    {
        return false;
    }    
}

*我希望收到您的反馈。:)

如何使用C#连接到Mysql

您的直接问题可能是连接字符串不正确或数据库服务器不可用。连接字符串应该类似于这个

Server=localhost;Database=testdb;Uid=<username>;Pwd=<password>;

其中CCD_ 1和CCD_。

此外,你的代码有几个问题,如果这是为了成为生产代码,即使这只是一个学习东西的玩具项目,你也应该研究一下。这份清单的顺序很特殊,可能并不全面。

  1. 不要对连接字符串进行硬编码。而是将其移动到配置文件中
  2. 不要在配置文件或源代码中包含纯文本密码。有各种解决方案,如windows数据保护API保护的windows身份验证、证书或密码
  3. 不要只通过调用IDisposable.Dispose()来处理IDisposable实例。相反,即使在出现异常的情况下,也可以使用using语句来释放资源
  4. 不要使用字符串操作技术构建SQL语句。相反,使用SqlParameter来防止SQL注入攻击
  5. 不要将纯文本密码存储在数据库中。相反,至少要存储有盐的密码散列,并使用慢散列函数,而不是MD5或SHA家族的成员
  6. 您可以使用IDbCommand.ExecuteScalar来检索标量结果,并避免使用数据读取器
  7. 将布尔值与truefalse进行比较是多余的,只会给代码增加噪声。您可以直接使用<username>1来代替if (reader.IsDBNull(0) == true)。这同样适用于if (reader.Read() != false),其等效于if (reader.Read() == true),因此也适用于if (reader.Read())
  8. 与SQL命令级别的数据库交互相比,通常更喜欢使用像实体框架这样的O/R映射器

尝试根据标准MySQL ConnectionString:修改ConnectionString

Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

来源:MySQL连接字符串

您还可以查看以下链接,该链接显示了如何使用C#连接到MySQL数据库:

创建连接器/网络连接字符串(MYSQL)

让它变得简单且无需sql注入,而且不要忘记添加MySql.Web在您使用XAMPP后的参考资料中

        public bool Login(string username, string password)
        {
            DataTable dt = new DataTable();
            string config = "server=....";
            using (var con = new MySqlConnection { ConnectionString = config })
            {
                using (var command = new MySqlCommand { Connection = con })
                {
                    con.Open();
                    command.CommandText = @"SELECT * FROM login WHERE username=@username AND password=@password";
                    command.Parameters.AddWithValue("@username", username);
                    command.Parameters.AddWithValue("@password", password);
                    dt.Load(command.ExecuteReader());
                    if (dt.Rows.Count > 0)
                        return true;
                    else
                        return false;
                } // Close and Dispose command
            } // Close and Dispose connection
        }