如何将 SQL bigint 转换为等效的 C#
本文关键字:转换 SQL bigint | 更新日期: 2023-09-27 18:26:36
我正在尝试将 bigint 从 SQL Server 转换为 c# 中的等效项,但 Visual Studio 一直强迫我尝试将其转换为 int,这引发了"指定的强制转换无效"错误。我试图将其转换为 long、Int64、int 等。这样做的正确方法是什么?我的代码如下所示:
var id = 0;
//Omitted code
if (reader.Read())
{
id = (int) reader["id"];
}
//More code
如following table
所示,SQL Server 的bigint
映射到 。NET的Int64
结构:
long id = 0;
//Omitted code
if (reader.Read())
{
id = (long) reader["id"];
}
如果这抛出了一个InvalidCastException
,那么您的 dtaabase 中完全没有bigint
,并且您可能希望使用 reader["id"].GetType()
检查调试器中的实际类型。
顺便说一下,请注意我如何将您的var id = 0;
替换为long id = 0;
,这实际上是声明一个 Int64
类型的变量而不是 Int32
.如果要使用 C# 变量推理,请确保以正确的方式进行:var id = 0L;
顺便说一句,如果你不想投射,你可以尝试这个替代方案:
long id = 0;
//Omitted code
if (reader.Read())
{
id = reader.GetInt64(reader.GetOrdinal("id"));
}
使用 Int64
.
来源:"System.Data.SqlTypes 命名空间">
也许问题是你对var
的初始声明。这是一个隐式类型变量,在第一次使用时分配。并且假定它是一个 int,因为您将其分配给 0。
将声明替换为Int64 or long id = 0
,您应该没问题