System.IndexOutOfRangeException: Brak wiersza w pozycji 0.

0

Witam.

string z1 = "SELECT `id`, `password` FROM `users` WHERE `nick`= '"+l_nick.Text+"'";
					try{	
						MySqlConnection connection = new MySqlConnection("SERVER=127.0.0.1;DATABASE=project;UID=root;PASSWORD=;");
						MySqlDataAdapter adapter = new MySqlDataAdapter(z1, connection);
						DataSet data = new DataSet();
						adapter.Fill(data, "users");
						if(data.Tables.Count > 0){
							dane = data.Tables["users"].Rows[0]["password"].ToString();
						}
							if(dane == l_password.Text){
								MessageBox.Show("Zostałeś pomyślnie zalogowany, teraz zostaniesz przekierowany!","Logowanie");
								Form a = new Form1();
								this.Hide();
								a.Show();
							}else{
									MessageBox.Show("Logowanie nieudane, sprawdź swoje dane dostępowe lub połączenie z bazą danych!","Logowanie");
							}	
					}catch(MySqlException ex){
							MessageBox.Show(ex.ToString());
					}

Połączenie z bazą przynajmniej działa i logowanie prawie też, ale jeśli wpiszę jakiś nieistniejący nick to wywali mi całą aplikację z błędem podanym w temacie, mimo sprawdzenia czy

data.Tables.Count > 0
.
PS.Teraz chyba jasno się wyraziłem co jest nie tak i nikt nie wywali mi tematu do kosza.

0

Błąd mówi sam za siebie, Brak wiersza w pozycji 0. Odwołujesz się do data.Tables["users"].Rows[0] nie sprawdzając czy istnieje Rows[0] - czy jest przynajmniej jeden wiersz. A skoro dany nick nie istnieje, to jasne, że select zwraca 0 wierszy.

0

W sumie wpadłem na to kilka sekund po założeniu tematu, a wcześniej siedziałem z pół godziny i nic nie przyszło mi do głowy :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1