异常详细信息: System.InvalidCastException: 对象不能从 DBNull 转换为其他类型。
当从数据库中统计字段值时,有时没有记录就会产生一个DBNull值,在.net应用程序中用null值判断就会出错。
此时要加以判断须要用 :
object o =SqlHelper.ExecuteScalar (connectionString, CommandType.Text, selectString, parms);
if (o!=System .DBNull .Value )
{
val = Convert.ToInt32(o);
}
或者用:
if (!Convert.IsDBNull(o) )
{
val = Convert.ToInt32(o);
}
分享到:
相关推荐
System.InvalidCastException(解决方案).md
编译时可以通过,但运行时却报如下错误: System.InvalidCastException: 指定的转换无效。 这是因为,当对一个对象进行拆箱时,转型的结果必须是它原来未装箱的类型。此处必须先转换为int类型,才能再转换为double...
Entity Framework 6以模型方式... Message=无法将类型为“System.Data.SQLite.SQLiteConnection”的对象强制转换为类型“System.Data.Entity.Core.EntityClient.EntityConnection”。 Source=EntityFramework Line=0
在进行类型转换时,应注意可能抛出的异常,如`System.OverflowException`(当数值超出目标类型范围时)和`System.InvalidCastException`(当类型之间不兼容时)。因此,编写转换代码时要确保转换的安全性,避免不必...
标识转换(identity conversion)是最简单的转换形式,它不改变变量的实际类型,如从一个类型为`MyClass`的对象赋值给同类型的另一个变量。 **26.1.2 隐式数值转换** 当一个数值类型的值被转换为范围更大的数值类型...
- 如果转换不成功,如试图将字符串转换为整数但无法解析,会导致System.InvalidCastException异常。 7. var关键字 - var是隐式类型变量,仅在局部变量中使用,编译器会根据初始值推断类型。 8. 泛型 - 泛型允许...
- `System.InvalidCastException`:类型转换失败时抛出。 - `System.NullReferenceException`:访问未初始化的对象时抛出。 - `System.OutOfMemoryException`:内存分配失败时抛出。 - `System.OverflowException`:...
5. `System.InvalidCastException`:在运行时从一个类型强制转换为不兼容的类型时抛出。 6. `System.NullReferenceException`:当试图使用未初始化的对象时抛出。 7. `System.OutOfMemoryException`:内存分配失败时...
两者之间可以进行转换,但需要注意,将引用类型转换为值类型(装箱)会创建一个对象副本,而值类型转换为引用类型(拆箱)需确保对象存在且类型匹配,否则可能导致异常。 2. **子类和基类的转换**: 在面向对象...
- **强制类型转换**:如果转换不合法,则会抛出`System.InvalidCastException`异常。 - **as类型转换**:不会抛出异常,而是返回`null`值。 **示例代码**: ```csharp object obj = "Hello"; string str = (string...
强制类型转换在转换失败时会抛出`System.InvalidCastException`异常,而as类型转换则在失败时返回null。 3. 访问限定符:public表示任何类都可以访问,protected限制为派生类,private仅限本类访问,internal限制在...
- **强制类型转换**:如果类型转换不合法,会抛出 `System.InvalidCastException` 异常。 - **as 关键字**:不会抛出异常,而是返回 null。这使得代码更加健壮,因为它可以在类型转换失败时进行错误处理。 #### 5. ...
然而,不恰当的类型转换可能会导致运行时错误,如`InvalidCastException`或`NullReferenceException`,这些错误会影响程序的稳定性和执行效率。因此,"类型转换前检查"是一个重要的编程实践,它旨在确保转换的安全性...
当转换类型不需要额外的处理,且目标类型能容纳源类型的值时,C#会自动执行这种转换。例如,从小整型到大整型,或者从派生类到基类。例如: ```csharp short shortValue = 10; int intValue = shortValue; // ...
这个做法可以防止程序运行时出现NullReferenceException异常,以及确保类型转换过程中不会因为不正确的对象类型而导致的InvalidCastException异常。 首先,我们来详细解释一下每个步骤: 1. **判断是否为空**:在...
* System.InvalidCastException 因无效类型转换或显示转换引发的异常。 * System.InvalidOperationException 当方法调用对于对象的当前状态无效时引发的异常。 * System.InvalidProgramException 当程序包含无效...
6. **对象到接口的转换**:如果一个类实现了特定接口,你可以将对象转换为该接口类型,以便调用接口定义的方法。例如: ```csharp class MyClass : IMyInterface { // ... } MyClass myClassInstance = new ...
- 当类型转换不合法时,会抛出`System.InvalidCastException`异常。 - 语法简单直接,但可能导致运行时错误。 **as操作符**: - 不会抛出异常,而是返回`null`。 - 更加安全,适用于不确定类型是否兼容的情况。 *...
2. 类型安全:由于ArrayList使用object类型,所以在使用时需要进行类型转换,可能引发InvalidCastException。 3. 泛型:ArrayList不是泛型集合,没有强类型检查,而List提供了更好的类型安全和性能。 替代方案:...