Я экспериментировал с SQL и базами данных на C # через SqlCeConnection . Я использовал ExecuteReader для чтения результатов и BigInt значений для идентификаторов записей, которые считываются в Longs.
Сегодня я играл с операторами SQL, которые используют операторы на основе COUNT (' SELECT COUNT (*) FROM X ') и использовал ExecuteScalar для чтения этих однозначных результатов.
Однако я столкнулся с проблемой. Кажется, я не могу хранить значения в типе данных Long, который я использовал до сих пор. Я могу хранить их в Int64.
Я использовал BigInt для идентификаторов записей, чтобы получить максимальное потенциальное количество записей.
BigInt 8 байт, следовательно, является Int64. Разве Long не равен Int64, поскольку оба являются 64-битными целыми числами со знаком?
Следовательно, почему я не могу преобразовать Int64 в Long?
long recordCount =0;
recordCount = (long)selectCommand.ExecuteScalar();
Ошибка:
Указанное преобразование недопустимо.
Я могу прочитать BigInt в Long. Это не проблема. Я не могу прочитать SQL COUNT в long.
COUNT возвращает Int (Int32), поэтому проблема на самом деле заключается в преобразовании Int32 в long.