我应该使用什么时候处理一个值在c#,这是一个SQL Server数据库的大int ?
当前回答
sql中的int直接映射到int32,也被称为基本类型,即c#中的int
Sql Server中的bigint直接映射到int64,也被称为基本类型,即c#中的long
这里定义了biginteger到integer的显式转换
其他回答
我处理一个bigint数据类型显示在一个DataGridView,并使它像这样
something = (int)(Int64)data_reader[0];
使用长数据类型。
如果你在你的数据库表中使用bigint,你可以在c#中使用Long
这对应于long(或Int64),一个64位整数。
尽管如果来自数据库的数字恰好足够小,并且您不小心使用了Int32等等,那么就不会有问题。但Int64肯定会hold住它。
如果你使用更小的东西,而需要完整的尺寸,你得到的错误是什么?堆栈溢出!耶!
我刚刚有一个脚本,返回一个插入的主键,并使用
SELECT @@identity
在我的bigint主键,我得到一个转换错误使用长-这就是为什么我开始这个搜索。至少在我的例子中,正确的答案是选择返回的类型是NUMERIC,这相当于一个十进制类型。使用long类型会导致强制转换异常。
这就是为什么要在不止一个谷歌搜索(甚至Stack Overflow!)中检查你的答案。
引用一位帮助过我的数据库管理员的话:
... BigInt和INT64是不一样的,不管它们看起来有多相似。部分原因是SQL经常将Int/BigInt转换为Numeric作为正常处理的一部分。所以当它转到OLE或。net时,所需的转换是NUMERIC到INT。 我们通常不会注意到,因为打印的值看起来是一样的。
推荐文章
- 在SQL server查询中将NULL替换为0
- Linq-to-Entities Join vs GroupJoin
- 在SQL中修改表的模式名
- 为什么字符串类型的默认值是null而不是空字符串?
- 在list中获取不同值的列表
- 组合框:向项目添加文本和值(无绑定源)
- 如何得到累计和
- 如何在SQL Server 2005的一条语句中更新两个表?
- AutoMapper:“忽略剩下的?”
- 如何为ASP.net/C#应用程序配置文件值中的值添加&号
- 从System.Drawing.Bitmap中加载WPF BitmapImage
- 如何找出一个文件存在于c# / .NET?
- 为什么更快地检查字典是否包含键,而不是捕捉异常,以防它不?
- 如何创建临时表与SELECT * INTO tempTable从CTE查询
- [DataContract]的命名空间