Я хочу войти в свою программу через MySQL (Database).C# & MySQL - всегда возвращает 0
string username = textBox1.Text.ToString();
int UserID = DB.runRead("SELECT id FROM users WHERE username='" + DB.Stripslash(username) + "'", null);
if (UserID > 0)
{
String[] UserData = DB.runReadRow("SELECT id, username, password, salt, rank, verein FROM benutzer WHERE id=" + UserID.ToString());
if(UserData[1].ToString().ToLower() == textBox2.Text.ToString().ToLower())
{
// logged in
SetStatusText("logged in!! :)");
SetProgressbarValue(100);
ButtonActivity(0, false);
}
else
{
// Password wrong
SetStatusText("wrong pw!!");
SetProgressbarValue(50);
}
}
else
{
SetStatusText("unregistered!!");
SetProgressbarValue(0);
}
Я использую этот метод для некоторых других проектов. Всегда работает нормально, но на этот раз, заявление
if(UserID > 0)
и это следующий код не будет работать из-за UserID
, имеющий значение 0, и я не знаю, почему. Конечно, есть пользователь в базе данных:
я уже пытался использовать другую базу данных (новый созданный), но ошибка остается, так что я думаю, что я сделал что-то глупое в коде. При необходимости я мог бы написать код рабочего, но я не вижу разницы.
int UserID = DB.runRead("SELECT id FROM benutzer WHERE username='" + DB.Stripslash(Connection.Username) + "'", null);
if (UserID > 0)
{
string[] UserData = DB.runReadRow("SELECT id, username, password, salt, online, nickname, rank, firstlogin, bantime, anticheat FROM users WHERE id=" + UserID.ToString());
//Password = hashMD5(hashMD5(getBlock(3).ToLower()) + hashMD5(UserData[1]));
if (UserData[2].ToLower() == Password && UserData[9].ToString() == "1")
{
if (BanManager.isBlocked(UserID) == false /*&& RankManager.HasPermision(int.Parse(UserData[6]), "account.authorize")*/)
{
if (UserData[4].Equals("1"))
{
ReturnValue = LoginState.AlreadyLoggedIn;
Connection.send(new PACKET_SERVER_LIST(PACKET_SERVER_LIST.errorCodes.AlreadyLoggedIn));
//Log.WriteLine("Connection from " + Connection.IPAddress + " logged succesfull in as " + UserData[5] + " but the user is already online.");
Log.WriteLine("- Login - A Connection was successfully approved");
Log.WriteLine("- Login - IP Address: " + Connection.IPAddress + ",");
Log.WriteLine("- Login - Nickname: " + UserData[5] + ",");
Log.WriteLine("- Login - Status: The User is already logged in.");
Console.ForegroundColor = ConsoleColor.DarkCyan; Console.WriteLine(new String('*', Console.WindowWidth)); Console.ForegroundColor = ConsoleColor.Gray;
}
И так далее. Что не так?
Пожалуйста, проявляйте большую осторожность при форматировании ваших сообщений - отступы вытеснили большую часть кода с экрана, чтобы начать с. Используйте предварительный просмотр, чтобы проверить, что сообщение выглядит так, как вы хотите, чтобы он выглядел, если вы пытаетесь ответить. –
Далее, * прекратите строить SQL таким образом *. Используйте параметризованный SQL. *Всегда*. И похоже, что вы храните свои пароли в виде простого текста ... что еще одна серьезная проблема. –
@JonSkeet Я получил это так, я никогда не использовал что-то еще. – ToxicData