[Как говорится в названии .... Это всплывает, когда я пытаюсь щелкнуть Login. Просто Ошибка `Index была за пределами массива`, когда я пытаюсь получить результаты запроса.
У меня также есть другая система с той же самой, но это не ошибка, как это и сейчас я слишком слеп, чтобы найти то, что случилось XDD
private void btnLogin_Click(object sender, EventArgs e)
{
try
{
string constring = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=
|DataDirectory|\MMG.mdb";
string cmdText = ("SELECT COUNT(*) FROM Accounts WHERE User_name=? AND Pass_word=?");
using (OleDbConnection con = new OleDbConnection(constring))
using (OleDbCommand cmd = new OleDbCommand(cmdText, con))
{
con.Open();
cmd.Parameters.AddWithValue("@UName", txtUserName.Text);
cmd.Parameters.AddWithValue("@PWord", txtPassword.Text);
DataTable dt = db.execQuery("SELECT * FROM Accounts WHERE User_name='" + txtUserName.Text + "' AND Pass_word='" + txtPassword.Text + "'");
if (dt.Rows.Count > 0)
{
if (dt.Rows[0].ItemArray[5].ToString() == "Manager")
{
this.Hide();
frmMainForm mnf = new frmMainForm();
mnf.ShowDialog();
this.Close();
}
else if (dt.Rows[0].ItemArray[5].ToString() == "Cashier")
{
this.Hide();
Sales mnf = new Sales();
mnf.ShowDialog();
this.Close();
}
}
}
}
Благодарность за решение заранее! :)
Rows.Length сделать и Rows [0] .Length, и вы будете знать, что пошло не так – Steve
Могу ли я использовать ' '; DROP TABLE Accounts; - 'как пароль? Вы должны * действительно проверить, есть ли какие-либо результаты, прежде чем пытаться получить к ним доступ. У вас гораздо большие проблемы, хотя, поскольку ваш код позволяет взломать ваше приложение за считанные секунды –
Я ставлю на 5 на 'dt.Rows [0] .ItemArray [5]' – Jcl