如何将 DBObject 值转换为 long
How can convert DBObject value into 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 cast is not valid.
at Default.method1(Object sender, EventArgs e) in c:\Users\aBhiShEkrANAa\Desktop\ABC\Prroject\Default.aspx.cs:line 43
我只想把这个id值变成long。
它可能包含 Null
个值。所以在这种情况下最好使用 Convert
而不是 cast
,或者甚至更好地使用这样的东西:
var temp = cmd1.ExecuteScalar();
temp = (temp == DBNull.Value) ? null : temp;
long count = Convert.ToInt64(temp);
稍微简单一点的方法是为工作使用正确的类型:
var value = (long?)command.ExecuteScalar();
如果你想return默认值而不是可为空值:
var value = (long?)command.ExecuteScalar();
return value.GetValueOrDefault();
可空值将处理 DbNull
,使用可空值将为其他 developers/readers.
提供更多信息
请注意 object
return 下 ExecuteScalar
编辑的实际值是一个 long,使用 Convert.ToInt64
会产生很多开销,因为转换会做更多的工作。
我想将 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 cast is not valid.
at Default.method1(Object sender, EventArgs e) in c:\Users\aBhiShEkrANAa\Desktop\ABC\Prroject\Default.aspx.cs:line 43
我只想把这个id值变成long。
它可能包含 Null
个值。所以在这种情况下最好使用 Convert
而不是 cast
,或者甚至更好地使用这样的东西:
var temp = cmd1.ExecuteScalar();
temp = (temp == DBNull.Value) ? null : temp;
long count = Convert.ToInt64(temp);
稍微简单一点的方法是为工作使用正确的类型:
var value = (long?)command.ExecuteScalar();
如果你想return默认值而不是可为空值:
var value = (long?)command.ExecuteScalar();
return value.GetValueOrDefault();
可空值将处理 DbNull
,使用可空值将为其他 developers/readers.
请注意 object
return 下 ExecuteScalar
编辑的实际值是一个 long,使用 Convert.ToInt64
会产生很多开销,因为转换会做更多的工作。