Если бы я собирался выполнить процедуру, которая была объявлена как:
CREATE PROCEDURE x(em VARCHAR, pw VARCHAR) --declaration of parameters
BEGIN
SELECT * FROM `user` WHERE `EmailAddress`= em AND `Password` = pw;
END
, я бы удостоверился, что параметры в моем коде C # были названы так же, как в объявлении хранимой процедуры:
cmd.Parameters.Add(new MySqlParameter("em", Email));
cmd.Parameters.Add(new MySqlParameter("pw", Password));
Я подозреваю, что ваш запрос не получает никаких строк, потому что установленные вами значения никогда не попадают в параметры и, следовательно, никогда не используются для запроса.reader.Read () возвращает false, потому что строк нет.Также убедитесь, что значения для EMail и пароля, которые вы запрашиваете, действительно существуют в таблице
Попробуйте для отладки сделать запрос следующим образом:
SELECT UserID, DisplayName, Moderator FROM `user` WHERE `EmailAddress`= @p0 AND `Password` = @p1
UNION ALL
SELECT 0, CONCAT_WS(' ', 'There is no user with email/password of', @p0, '/', @p1), '' FROM DUAL;
Или какВаши параметры теперь названы ..
Ваш reader.Read () должен теперь возвращать true, потому что этот запрос должен всегда возвращать строку, поэтому проверьте значение DisplayName, он должен сказать, какие условия поиска были применены