Я пытался использовать параметризованный запрос с устройством чтения данных, когда получаю это сообщение об ошибке «Неверная попытка прочитать, когда нет данных».Ошибка - «Неверная попытка прочитать, когда данных нет». при использовании SQLDataReader, даже если данные присутствуют.
Но данные есть читатель!
Ниже приводится строка кода, который выполняет эту задачу
using (ConnectionManager connectionManager = new ConnectionManager())
{
string query = @"SELECT * FROM LoginTab WHERE [email protected] " +
"AND [email protected]";
List<SqlParameter> sqlParameterCollection = new List<SqlParameter>();
sqlParameterCollection.Add(new SqlParameter("@username", SqlDbType.NVarChar) { Value = userName });
sqlParameterCollection.Add(new SqlParameter("@password", SqlDbType.NVarChar) { Value = password });
SqlDataReader sqlDataReader = connectionManager.ExecuteReader(query, CommandType.Text, sqlParameterCollection);
String roles = sqlDataReader[0].ToString();
return roles;
}
функция ExecuteReader определен в другом классе.
public SqlDataReader ExecuteReader(String strcmd, CommandType type, List<SqlParameter> Parametercollections)
{
connnection = new SqlConnection(Connnectionstring);
command = new SqlCommand(strcmd, connnection);
command.CommandType = type;
foreach (SqlParameter paras in Parametercollections)
{
command.Parameters.Add(paras);
}
try
{
connnection.Open();
reader = command.ExecuteReader();
}
catch (SqlException E)
{
}
finally
{
}
return reader;
}
Что может быть неправильным здесь?
Где читатель определен? Это может быть проблема, или читатель может быть закрыт, когда он доберется до точки, где вы пытаетесь ее прочитать. – Tim
Не решение, но вы должны удалить try/catch/наконец, чтобы вы могли узнать обо всех исключениях. –