C # ExecuteScalar () - должно быть меньше, чем бесконечность? - PullRequest
1 голос
/ 11 января 2012

Проблемы со следующим кодом.Метод NextIPID () должен просто просмотреть таблицу в SQL Server, которая возвращает максимальное значение поля IPID, а затем добавляет к нему 1, чтобы получить следующий номер в последовательности.

public int NextIPID()
    {
        string strConnect = BuildConnectionString();
        SqlConnection linkToDB = new SqlConnection(strConnect);
        linkToDB.Open();
        string sqlStat = "SELECT MAX(IPID) FROM tblInterestedParties;";
        SqlCommand sqlCom = new SqlCommand(sqlStat, linkToDB);   
        int intNextIPID = (Int32)sqlCom.ExecuteScalar();
        linkToDB.Close();
        return intNextIPID + 1;                             
    }

ОднакоЯ продолжаю получать сообщение об ошибке

«При приведении числа число должно быть числом меньше бесконечности».

Я подозреваю, что это потому, что таблица в настоящее время пуста, но затем яожидал, что Execute Scalar вернет '0' и, следовательно, добавление единицы к этому будет означать, что метод вернет следующее значение, т.е. 1. Однако этого не происходит.

Помощь очень ценится.

Ответы [ 2 ]

8 голосов
/ 11 января 2012

Если таблица пуста, ваш запрос не вернет 0, он вернет NULL.То, что вы могли бы использовать это

SELECT ISNULL((SELECT MAX(IPID) FROM tblInterestedParties), 0)
4 голосов
/ 11 января 2012

Изменение:

string sqlStat = "SELECT MAX(IPID) FROM tblInterestedParties;";

до:

string sqlStat = "SELECT ISNULL(MAX(IPID), 0) FROM tblInterestedParties;";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...