首页 > 解决方案 > 如何将 DBObject 值转换为 long

问题描述

我想将DBObject值转换为长。我在 db 中具有类似id = 24100001000001.

我正在使用这段代码:

String totalcount = "SELECT MAX(id) FROM table";

SqlCommand cmd1 = new SqlCommand(totalcount, con);
cmd1.ExecuteNonQuery();

long count = (long)(cmd1.ExecuteScalar());

使用此代码,我收到一个错误:

System.InvalidCastException : sSpecified 强制转换无效。

在 c:\Users\aBhiShEkrANAa\Desktop\ABC\Prroject\Default.aspx.cs:line 43 中的 Default.method1(Object sender, EventArgs e)

我只想把这个 id 值变成 long。

标签: c#.netsql-serverado.net

解决方案


稍微简单一点的方法是为工作使用正确的类型:

var value = (long?)command.ExecuteScalar();

如果要返回默认值而不是可为空的:

var value = (long?)command.ExecuteScalar();
return value.GetValueOrDefault();

可空值将处理DbNull和使用可空值将为其他开发人员/读者提供更多信息。

请注意,object返回的实际值ExecuteScalar是很长的,使用Convert.ToInt64会产生很多开销,因为转换要做更多的工作。


推荐阅读