@ Damien_The_Unbeliever Я указал, что использую компактную версию, которую я сказал через SqlCeConnection (Ce = компактная версия), а не SqlConnection. Вы правы, я не осознавал ограничения COUNT, поэтому я не могу получить преимущества от int64 или long в любом случае. Нужно также найти максимальное количество записей в таблице для этой редакции и, возможно, сбросить все до int32. Однако позже я добавлю поддержку полного сервера SQL, поэтому полезно знать о COUNT_BIG. Спасибо

ал с SQL и базами данных в C # черезSqlCeConnection, Я используюExecuteReader читать результаты иBigInt значения для идентификаторов записей, которые считываются в Long.

Сегодня я играл с SQL-операторами, которые используют операторы на основе COUNT ('SELECT COUNT (*) FROM X') и использовалиExecuteScalar читать эти однозначные результаты.

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

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

Следовательно, 8 байтов BigInt - это Int64. Разве Long не равен Int64, поскольку оба являются 64-битными целыми числами со знаком?

Поэтому, почему я не могу бросить Int64 в Long?

long recordCount =0;

recordCount = (long)selectCommand.ExecuteScalar();

Ошибка:

Указанный состав недействителен.

Я могу прочитать BigInt в Long. Это не проблема. Я не могу прочитать SQL COUNT в долго.

COUNT возвращает Int (Int32), поэтому проблема заключается в приведении Int32 к длинному.

Ответы на вопрос(2)

Ваш ответ на вопрос