Я играл с SQL и базами данных на С# через 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 в длинный.
COUNT возвращает Int (Int32), поэтому проблема заключается в том, что Int32 превращается в длинный.