我正在尝试将SQL Server中的bigint强制转换为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"));
}

关于c# - 如何将SQL bigint强制转换为C#等效项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26392118/

10-11 02:52