Наилучшая практика для возврата типа из SQL Server в ExecuteScalar?

В 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 ответ

Решение

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

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

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

....

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

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

Другие вопросы по тегам