因此,我正在为我的公司开发一个小应用程序,允许用户在服务器端登录和访问特定的数据,服务器端查询数据库,MySqlDataReader不读取,正如我在下面的代码中指出的那样:
public string HandleLogin(string uname, string pwd)
{
MySqlDataReader READER;
int count = 0;
int clearance = 0;
if (uname == "" || pwd == "")
return "";
CONN = new MySqlConnection();
CONN.ConnectionString = Config.CONNSTRING;
string query = "select * from members where username='" + uname + "' and password='" + pwd + "'";
try
{
CONN.Open();
COMMAND = new MySqlCommand(query, CONN);
READER = COMMAND.ExecuteReader();
while(READER.Read())
{
count = count + 1; //<-- this should happen, but it doesnt
if (count == 1)
clearance = READER.GetInt32("clearance");
else
return "";
}
if (count == 1)
return Convert.ToString(clearance);
else
return "";
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
return "";
}
finally
{
CONN.Dispose();
}
}我确信它应该读取1行,询问它找到的行数,它说0,但是我三次检查了所有的值,它们与数据库值完全匹配,但是它没有读取查询的行。这可能是一个非常愚蠢的错误,但我找不到问题。
发布于 2016-09-29 20:02:44
因此,我再次放置了一个断点并重新检查了变量,这些变量与Console.WriteLine很好,但是,在查询中它如下所示:
"select * from members where username='matthias' and password='M20UjefsltnFCTDsCL1temvFOtBcnN8gNtGbQevVTkkG8jCXZlbxQ3ykOTx0fV4Ls2VnAzOzx2F5CTY+jEDSzg==\0\0\0\0'"但它应该是:"select * from members where username='matthias' and password='M20UjefsltnFCTDsCL1temvFOtBcnN8gNtGbQevVTkkG8jCXZlbxQ3ykOTx0fV4Ls2VnAzOzx2F5CTY+jEDSzg=='"
由于客户端和服务器之间的数据加密以及它的填充将\0\0\0\0添加到末尾,我应该在前面看到这一点,感谢那些想帮助我的人,我在查询之前添加了这个函数来解决这个问题:
pwd = pwd.Replace("\0", "");https://stackoverflow.com/questions/39777996
复制相似问题