8 ответов:
, что соответствует долго (или тип int64), 64-разрядное целое число.
хотя, если число из базы данных оказывается достаточно маленьким, и вы случайно используете Int32 и т. д.- все будет хорошо. Но это тип int64 определенно будет держать его.
и ошибка, которую вы получаете, Если вы используете что-то меньшее и полный размер необходим? переполнение стека! Ура!
У меня просто был скрипт, который вернул первичный ключ вставки и использовал
SELECT @@identityна моем первичном ключе bigint, и я получаю ошибку приведения с помощью long - вот почему я начал этот поиск. Правильный ответ, по крайней мере в моем случае, заключается в том, что тип, возвращаемый этим выбором, является числовым, который приравнивается к десятичному типу. Используя длинный приведет к исключению броска.
Это одна из причин, чтобы проверить ваши ответы в более чем одном поиске Google (или даже на стеке Переполнение!).
чтобы процитировать администратора базы данных, который помог мне:
... BigInt-это не то же самое, что INT64, независимо от того, насколько они похожи. Часть причины заключается в том, что SQL часто преобразует Int/BigInt в Numeric как часть обычной обработки. Поэтому, когда он переходит к OLE или .NET, необходимое преобразование является числовым в INT.
Мы не часто замечаем, так как печатное значение выглядит одинаково."
int в sql maps непосредственно к int32 также известен как примитивный тип т. е. int на C#, тогда как
bigint в sql maps непосредственно к int64 также известен как примитивный тип т. е. float на C#
явное преобразование, если biginteger в целое число было определено здесь
я обрабатывал тип данных bigint, который будет отображаться в DataGridView, и сделал это так
something = (int)(Int64)data_reader[0];
Comments