我正在尝试将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/