从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
}

从MySQL C#进行检查和保存/加载

我的最佳实践是使用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]);

等等。