我正在制作需要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
}
答案 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]);
等等。