Наилучшая практика для возврата типа из SQL Server в ExecuteScalar? - PullRequest
0 голосов
/ 26 февраля 2012

В C # SqlCommand - ExecuteScalar это:

private object CompleteExecuteScalar(SqlDataReader ds, bool returnSqlValue)

Теперь давайте перейдем к SQL Server.

Если я хочу вернуть значение из выбора (который идет к ExecuteScalar)Например:

if record already exists select `-1`
else select `0`

Вопрос:

Какой тип (согласно рекомендациям) является предпочтительным для возврата из SQL Server, чтобы уменьшить количество приведений & tostring () в C #:

if exists(select ....) select '-1'       -- string

или

if exists(select ....) select -1         -- int

1 Ответ

1 голос
/ 26 февраля 2012

Вы возвращаете номер, так что int здесь предпочтительнее по значению.

Более того, при синтаксическом анализе ошибки в коде C # вы должны будете сделать что-то вроде:

enum Error { NO_ERROR = -1, ERROR 1 };

....

Error e = (Error)cmd.ExcecuteScalar();

Это довольно чистый и самообъяснимый код, который не подходит для анализа результата в int или сравнения строковых значений.

...