从MySQL C#进行检查和保存/加载
本文关键字:保存 加载 检查和 MySQL | 更新日期: 2023-09-27 18:24:11
我正在做一些需要MySQL的东西。我有从游戏中完成的保存,这只是通过INSERT完成的。
我有一列中有一个密码,我需要检查输入的密码是否与任何一行匹配,如果匹配,则获取该行的所有内容,然后将其保存到变量中。
有人知道如何在C#中做到这一点吗?
//////////////////////////
我已经找到了如何保存和获取字符串,但一次只能获得1个字符串:(
MySql.Data.MySqlClient.MySqlCommand command = conn.CreateCommand();
command.CommandText = "SELECT * FROM (player) WHERE (pass)";
command.ExecuteNonQuery();
command.CommandType = System.Data.CommandType.Text;
MySql.Data.MySqlClient.MySqlDataReader reader = command.ExecuteReader();
reader.Read();
ayy = reader.GetString(1);
print (ayy);
if(ayy == password){
//something
}
我的最佳实践是使用MySQLDataAdapter
填充DataTable
。然后,您可以遍历这些行并尝试匹配密码。
像这样的东西;
DataTable dt = new DataTable();
using(MySQLDataAdapter adapter = new MySQLDataAdaper(query, connection))
{
adapter.Fill(dt);
}
foreach(DataRow row in dt.Rows)
{
//Supposing you stored your password in a stringfield in your database
if((row.Field<String>("columnName").Equals("password"))
{
//Do something with it
}
}
我希望这是我在手机上打出来的。你可以在这里找到一个很好的解释和例子。
但是,如果您需要特定用户的数据,为什么不从数据库中具体询问呢?您的查询如下:;
SELECT * FROM usercolumn WHERE user_id = input_id AND pass = input_pass
由于我认为每个用户都是唯一的,您现在将从特定用户那里获得数据,这意味着您不必再检查密码了。
对于SQL语句,您应该能够按如下方式搜索数据库,并从中只获取所需的条目。
"SELECT * FROM table_name WHERE column_name LIKE input_string"
如果input_string
包含用于SQL字符串比较的任何特殊字符(我相信是%和_),您只需要对它们进行转义,这可以用regex简单地完成。正如我在评论中所说,我已经有一段时间没有做SQL了,但网上有很多资源可以完善这个查询。
然后,它应该返回整行,如果我的想法正确的话,您应该能够一次将整行放入对象数组中,或者简单地逐个字符串读取它们,并根据需要使用Convert
方法之一转换为值,如下所示:http://msdn.microsoft.com/en-us/library/system.convert(v=vs.110).aspx
根据Prix的评论进行编辑:输入MySQL表的数据不需要转换。
获取整数的示例:
string x = [...];
[...]
var y = Convert.ToInt32(x);
如果您能够将它们放入对象数组中,也同样有效。
object[] obj = [...];
[...]
var x0 = Convert.To[...](obj[0]);
var x1 = Convert.To[...](obj[1]);
等等。