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

时间:2014-09-24 18:53:31

标签: c# mysql

我正在制作需要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
}

2 个答案:

答案 0 :(得分:-1)

我的最佳做法是使用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
        }


      }

我希望这可以编译,因为我从手机输入了这个。你可以找到一个很好的解释和例子here

但是,如果您需要来自特定用户的数据,为什么不从数据库中具体询问?您的查询就像;

      SELECT * FROM usercolumn WHERE user_id = input_id AND pass = input_pass

由于我认为每个用户都是唯一的,因此您现在可以从特定用户获取数据,这意味着您不必再检查密码了。

答案 1 :(得分:-1)

对于SQL语句,您应该能够按如下方式搜索数据库,并只获取您需要的条目。

"SELECT * FROM table_name WHERE column_name LIKE input_string"

如果input_string包含SQL字符串比较的任何特殊字符(%和_,我相信),您只需要转义它们,这可以通过正则表达式完成。正如我在评论中所说的,自从我完成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]);

等等。