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