@ 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 к длинному.