Witam,
mam problem z odczytem kolumn z bazy MySql, wczesniej uzywalem MSSQL dzialalo bez zarzutu, jednak teraz bylem zmuszony zmienic baze , oto kod :
public void Logowanie()
{
try
{
string nameuser = textBox1.Text;
string passwd = HashPass(pass_txt.Text);
string activeacc = "ACTIVE";
string inactiveacc = "INACTIVE";
DateTime now = DateTime.Now;
MySqlCommand cmd = new MySqlCommand("SELECT `login`, `password`, `status`,`startDate`,`stopDate` FROM `OpUser` WHERE `login` = ?username and `password` = ?password", con);
cmd.Parameters.Add(new MySqlParameter("?username", nameuser));
cmd.Parameters.Add(new MySqlParameter("?password", passwd));
cmd.Parameters.Add(new MySqlParameter("?aktywne", activeacc));
cmd.Parameters.Add(new MySqlParameter("?nieaktywne", inactiveacc));
con.Open();
MySqlDataReader dr = cmd.ExecuteReader();
dr.Read();
try
{
if (dr["login"].ToString().Trim().Equals(nameuser) && dr["password"].ToString().Trim().Equals(passwd))
if (dr["status"].ToString().Trim() == activeacc && dr["startDate"] != DBNull.Value && dr["stopDate"] != DBNull.Value)
{
DateTime STARTDATE = Convert.ToDateTime(dr["startDate"].ToString());
DateTime STOPDATE = Convert.ToDateTime(dr["stopDate"].ToString());
if (now >= STARTDATE && STOPDATE > now)
{
this.Hide();
MAIN ss = new MAIN();
ss.Show();
}
else if (now <= STARTDATE)
{
MessageBox.Show("Konto nie jest jeszcze aktywne, data aktywacji konta : " + STARTDATE, "Info", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else if (now >= STOPDATE)
{
MessageBox.Show("Okres ważności konta minął.", "Info", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
else if (dr["startDate"] == DBNull.Value || dr["stopDate"] == DBNull.Value)
{
MessageBox.Show("Konto nie posiada daty początkowej, lub końcowej!", "Bląd", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else if (dr["status"].ToString().Trim() == inactiveacc)
{
MessageBox.Show("Konto nieaktywne, proszę o kontakt z administratorem systemu.", "Bląd", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
catch (MySqlException er)
{//"Proszę sprawdz swoj login lub haslo, a nastepnie sprobuj ponownie."
MessageBox.Show(er.Message);
}
finally
{
dr.Close();
}
}
catch (MySqlException ex)
{
MessageBox.Show(ex.Message);
}
finally
{
con.Close();
}
}
problem nie wystepuje jezeli podam poprawne dane, jezeli jednak sa niepoprawne na tym warunku wywala sie :
if (dr["login"].ToString().Trim().Equals(nameuser) && dr["password"].ToString().Trim().Equals(passwd))
Komunikat : Invalid attempt to access a field before calling Read()
co jest troche dziwne bo wywoluje readera.
Przeszukalem troche neta i nic nie znalazlem , prosze o pomoc :(