2015-08-17 3 views
0

Я пытаюсь получить мои данные из базы данных и показать в окне сообщений, но он не работает. Я попытался помещать фиктивный ящик сообщений в мой цикл while, но, похоже, код тоже не входит в него. Есть ли способы сделать это?MySQL datareader не читает

Это мой код:

ConnectToDatabase(); 

MySqlCommand cmd = new MySqlCommand("Select Name, LPN From visitors Where password = '@password';", conn); 
cmd.Parameters.AddWithValue("@password", decodeStr); 

MySqlDataReader reader = cmd.ExecuteReader(); 

while (reader.Read()) 
{ 
    MessageBox.Show("he"); 

    name = reader["Name"].ToString(); 
    lpn = reader["LPN"].ToString(); 
} 
+0

Не уверен, но не должен 'cmd.Parameters.AddWithValue (" @ password ", decodeStr);' быть без '@'? – Stefan

+2

@Stefan - Нет, что '@' действителен – fubo

+1

yes @Stefan ранее я использовал то, что он работал – systemcrash

ответ

5

Вы должны удалить одиночные кавычки в вашей '@password' части. С одинарными кавычками менеджер баз данных считает, что это string literal, а не параметр.

И поэтому у вашего читателя нет данных, потому что ваш парольный столбец , вероятно, не содержит ни одной строки, как @password.

Несколько вещей больше;

  • Используйте using statement, чтобы использовать ваше соединение, команду и считыватель автоматически.
  • Не используйте метод AddWithValue. It may generate unexpected and surprising results sometimes. Используйте метод перегрузки Add, чтобы указать тип параметра и его размер.
  • Name и password - reserved keywords в MySQL. Он должен указываться как «Имя» и «пароль». Я знаю, что их случаи не совпадают, но по умолчанию, насколько мне известно, MySQL по умолчанию не заботится о зарезервированных словах.