gpt4 book ai didi

c# - 在 C# 中选择 mysql 数据库单元

转载 作者:行者123 更新时间:2023-11-29 16:14:14 26 4
gpt4 key购买 nike

我想要做的是选择我的用户名所在的单元格,并将密码与在 Unity C# 中完成的文本进行比较,但我使用 Mysql Reference,它应该像任何类型的 C# 一样。现在我试图在 vb 中做类似的事情,当你读取阅读器中的值时,它在 vb 中看起来像这样rdr(0) 但我似乎无法在 C# 中执行此操作,这是我的代码。对于任何担心密码去向的人,我计划稍后添加加密。

void Login_Data(string un, string pw) {
con = new MySqlConnection(connectionString);
con.Open();
Debug.Log("Mysql state: " + con.State);

string sql = "SELECT * FROM `users` WHERE '" + un + "'";
cmd = new MySqlCommand(sql, con);
rdr = cmd.ExecuteReader();

while (rdr.Read()) {
if (rdr[3] == pw) // this is the problem it keeps warning
//me i like my stuff clean but i dont risk errors if (rdr[3] == pw) also
//it did give me an error but not here.

{
username = un;
MessageBox.Show(username + ", Has Logged in!", "API");
usertext.text = "User: " + username;
m_uid.text = "UserID: " + rdr.GetString("uid");
}
}
}

警告 CS0252 可能出现意外的引用比较;要进行值比较,请将左侧转换为类型“string”

我不明白这个警告或为什么会发生

最佳答案

这是一行修复:

.... if (rdr[3].ToString() == pw).....

您收到错误的原因是因为您正在将数据单元格与数据类型进行比较...

但是让我们多了解一点,好吗?

首先,你的SQL语句没有任何意义。我们来看看:

"SELECT * FROM `users` WHERE '" + un + "'"

因此,您正在使用 Where 子句。我们来谈谈一般语法。当我们使用任何与 WH 相关的单词时,我们难道不应该提供有关某事物的信息吗?就像,你不能只说:

Brian went to New Jersey Where...

相反,你可以说:

Brian went to New Jersey Where he left his browser cookies.

同样的规则适用于 SQL 语句。当您使用 Where 子句时,您实际上是在检查某个值是否与给定值匹配......

以下是 Where 语句的正确用法:

Select * From Table Where Column1 = 'Some Value'

继续...

您在这里使用了一个IDataReader,这几乎是不必要的。为什么不直接比较 SQL 语句本身中的所有值呢?只需使用 AND 进行多重比较...

正如您所提到的,您将用户名和密码存储在数据库中。最佳做法是存储用户名和密码的哈希。为此,您有大量选项可供选择,例如 Argon2、bcrypt、scrypt 或 PBKDF2

最后但并非最不重要的一点是,您的代码最大的问题是以下行:

MessageBox.Show(username + ", Has Logged in!", "API");

经过多年的努力,开发人员为了可扩展性、性能等而提出了诸如 MVVM 之类的模式。那你为什么生活在17世纪呢?永远记住:

You will spend 20% time writing the codes & 80% time in maintaining it.

所以,不要在UI线程本身中编写此类UI相关的代码。如果您熟悉 MVVM 模式,那么您已经知道我在说什么...

无论如何,希望你学到了一些东西......如果我在某个地方错了,请随时纠正。卡皮什?

关于c# - 在 C# 中选择 mysql 数据库单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54973301/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com