我试图将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 Serverbigint
映射到.NET的Int64
结构:
long id = 0;
//Omitted code
if (reader.Read())
{
id = (long) reader["id"];
}
如果这引发InvalidCastException
了您bigint
在dtaabase中完全没有的情况,并且您可能想使用来检查调试器中的实际类型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"));
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句