Вы пропустили несколько шагов. Всегда обращайтесь к примерам , предоставленным поставщиком . В частности, вы пытаетесь вернуть сам ридер , но вместо этого вам нужно читать данные из него. Примерно так:
SqlDataReader myReader = sqlcommand.ExecuteReader();
try
{
if (myReader.HasRows)
{
// What should you do if there's more than one row?
while (myReader.Read())
{
// Which value are you trying to read?
return myReader.GetString(0);
}
}
else
{
// What do you do when no rows are found?
return string.Empty;
}
}
finally
{
// Make sure to close the reader
myReader.Close();
}
Обратите внимание на несколько вопросов в комментариях к коду, на которые вы действительно должны ответить:
- Вы выбираете записи с потенциально нулевым ко многим , но пытается вернуть одно значение. Что вы хотите / ожидаете, когда счетчик результатов отличается от 1?
- Вы выполняете
SELECT *
, который предположительно получает более одного значения из базы данных. Какое значение вы хотите вернуть? (И зачем выбирать больше этого?)
Вы можете решить, что делать в этих различных случаях. Но в конечном итоге при использовании DataReader
вам нужно получить возвращенные строки.