2013-11-24 4 views
0

У меня есть datareader, который получает результаты моей хранимой процедуры. Хранимая процедура в зависимости от определенных значений, таких как (isjeried = = true), возвращает 10 coulmns, но если («ismarried» = false), он возвращает только 5 столбцов.Необязательный параметр Sqldatareader

На моей странице asp.net мой datareader ожидает 10 столбцов независимо от того, что и что хочет знать, был ли способ в моем коде asp.net C# иметь необязательные параметры. Я знаю, что вы можете использовать ISNULL («Столбец», '') в SQL, но вместо этого я надеялся, что может быть, может быть, сказать моему datareader, что эти 5 параметров могут не существовать всегда.

Благодаря

+0

Если он ожидает 10 колонок, вы должны дать ему 10 колонок. «Я знаю 1 + 1 = 2, но я хочу, чтобы это = 3!» – NathanAldenSr

+0

Натан, очевидно, вы не в состоянии думать за пределами своей коробки, в соответствии с другими ответами, похоже, есть возможности. – Tim

ответ

1

Вы можете сказать, сколько столбцов, что хранимая процедура, возвращаемые с помощью FieldCount собственности. Если он вернет 5 или 10, ваш код может соответствующим образом реагировать.

+0

Спасибо, работал отлично! – Tim

0

Я создаю запрос динамически. Я использую построитель строк для конкатенации запроса, если значение приходит с нулевым или пустым, а затем в код, который не добавлен, и в том, где условие не добавлено.

0

Вместо проверки столбцов вернулся, а затем отображения на основе подсчета полей и т.д., уборщик решение было бы создать класс, скажем, человек, как так ...

public class Person 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public bool IsMarried { get; set; } 
    //etc... 
} 

Затем, вы можете использовать dapper, чтобы вернуть результат ...

var people = cnn.Query<Person>("spName", 
        commandType: CommandType.StoredProcedure).ToList(); 

щеголеватыми будет отображать поля в вашу собственность класса, и игнорировать любые недостающие поля. Имейте в виду, что имена свойств должны соответствовать именам полей из базы данных. Это сократит любую логическую проверку и будет привязывать каждое свойство вручную к возвращенному полю.

Смежные вопросы