InvalidCastException:无法将类型“System.DBNull”的对象转换为类型“System.Nullable`1[System.Int32]”[重复]

2023-12-07

我正在尝试从数据库执行存储过程。但是,我遇到了一个例外:

InvalidCastException:无法将“System.DBNull”类型的对象转换为 输入“System.Nullable`1[System.Int32]”。

“results.Add”行引发异常。

var result = new List<GetActiveUserPackagesForOpenBillingPeriodResult> ();

using (var conn = new NpgsqlConnection ("Host=localhost;Port=xxx;Database=xxx;Username=postgres;Password=xxx;TrustServerCertificate=true;ApplicationName=xxx;")) {
    using (var cmd = new NpgsqlCommand ("\"GetActiveUserPackagesForOpenBillingPeriod\"", conn)) {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue ("somedate", DateTime.Today);
        conn.Open ();

        var reader = cmd.ExecuteReader ();

        string x = DBNull.Value.Equals (reader) ? " " : reader.ToString ();

        if (x != null) 
        {
            while (reader.Read ()) {

                result.Add (
                    new GetActiveUserPackagesForOpenBillingPeriodResult {
                        Amount = (decimal) reader["Amount"],
                            AcceptanceActID = (int?) reader["AcceptanceActID"],
                            PackageID = (int) reader["PackageID"],
                            UserID = (int) reader["UserID"],
                            AccountID = (int) reader["AccountID"],
                            HasChangedPackage = (bool) reader["HasChangedPackage"],
                    }
                );
            }
        }
    }
}

From DBNull文档:

DBNull代表一个不存在的值,其中null表示不存在 对对象的引用。

要解决您的问题,

在更改值的类型之前检查 Null,然后将其分配给变量

result.Add (
     new GetActiveUserPackagesForOpenBillingPeriodResult {
     Amount = (decimal) reader["Amount"],
     AcceptanceActID =  Convert.IsDBNull(reader["AcceptanceActID"]) ? null : (int?) reader["AcceptanceActID"],
     PackageID = (int) reader["PackageID"],
     UserID = (int) reader["UserID"],
     AccountID = (int) reader["AccountID"],
     HasChangedPackage = (bool) reader["HasChangedPackage"],
        });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

InvalidCastException:无法将类型“System.DBNull”的对象转换为类型“System.Nullable`1[System.Int32]”[重复] 的相关文章

随机推荐

  • 实体框架-使其只读? [复制]

    这个问题在这里已经有答案了 可能的重复 如何使实体框架数据上下文只读 是否有配置设置或简单的方法使实体 只读 我有一个数据访问层 该层与作为 CRM 解决方案后端的数据库相对应 我们不想 无意或故意 写入 CRM UI 之外的数据库 但我们
  • 如何将 int[] 类型转换为 int?[]

    我正在使用 linq 查询来输出 int 数组 但我需要将其传递给仅接受 int 的方法 因此 在搜索了将 int 转换为 int 的方法之后 我发现了一些似乎可行的方法here 以下代码是一个简化的示例 显示了哪些内容有效 哪些无效 us
  • 如何以编程方式在 Windows 8 开始屏幕上放置磁贴?

    我正在构建一个 Windows 商店应用程序 我希望该应用程序的磁贴位于我的开始屏幕的特定位置 是否有任何 API 可以对我的图块在开始屏幕上的位置进行编码 提前致谢 不 您无法控制图块的移动位置 这由用户决定 Windows 8 环境设计
  • 如何将heroku 上回形针的上传目录更改为/tmp?

    我需要上传文件 然后使用回形针解析它们 目前它上传到 system文件夹中 这在heroku中是不允许的 我不需要持久上传 我解析它然后存储它们 所以我希望能够保存到 tmp 中然后解析 然后让它稍后被吹走 关于如何做到这一点的想法 如果我
  • 如何在R中两个单词之间的文本上进行gsub?

    EDIT 我想放置一个 n在我的文本中特定的未知单词之前 我知道这个未知词第一次出现在我的文本中将会在 树 和 湖 之间 前任 文本 text 1 TreeRULakeSunWater 2 A B C D EDIT 树 和 湖 永远不会改变
  • 地图不适用于加载的 Obj

    这是我之前的问题的延续here 我只是尝试向该对象的每一侧应用不同的纹理 但什么也没有出现 没有控制台错误 我相信我正在按正确的顺序应用事物 这应该很简单 但过去一个小时我一直在努力解决这个问题 下面是一个代码示例 function onL
  • Google Apps - 使用昵称发送电子邮件

    我在 google apps u 中有一个电子邮件帐户 电子邮件受保护 它有一个昵称 电子邮件受保护 我可以从 发送电子邮件吗 电子邮件受保护 多谢 确实 Google Apps 支持从您拥有的任何电子邮件地址 包括昵称 发送邮件 登录您的
  • 了解多重索引

    所以我在 csv 中有一个这样的示例数据集 name team date score John A 3 9 12 100 John B 3 9 12 99 Jane B 4 9 12 102 Peter A 9 9 12 103 Josie
  • 如何使用 Ember Data 查找模型?

    相当于什么 App Person find age 30 in the 新的 Ember 数据 IE 如何根据属性获取记录数组 ember data 1 0 0 beta2 中的等效方法现在是 this store find person
  • Java 中的 Context 到底是什么? [复制]

    这个问题在这里已经有答案了 我用 Google 搜索了这个并阅读了 Java 文档 但我有点困惑 有人可以解释一下什么是Context是简单的英语吗 用编程术语来说 它是较大的周围部分 可以具有any对当前工作单元的行为的影响 例如 使用的
  • 不处理条件渲染组件中的表单提交

    我有一个带有表单的自定义标记文件
  • 如何解码gzip数据?

    我有一个变量data 变量的类型为 TIdBytes 变量包含一些用 gzip 编码的数据 如何解码这些数据 如果您想手动解码数据 请查看DecompressGZipStream 的方法TIdCompressorZLib组件 或TDecom
  • 分子测试似乎忽略了ansible.cfg的remote_tmp设置

    我正在尝试使用molecule测试一个非常基本的角色 venv red jumphost docker ops cat roles fake role tasks main yml tasks file for fake role name
  • 在 ruby​​ 中从自身获取实例变量名称

    我有一个实例变量 foo我想写一些代码来获取字符串 foo 有什么提示吗 如果您拥有的只是对该对象的引用 那么您就无法真正干净利落地完成它 def foo bar something end def bar value value no c
  • DATA 和 IMAGE 填充在两行中。我想将它们绑定在一行中

    我要第二次问这个问题 我会把它说清楚 这样你就可以帮助我 好吧 让我们开始吧 我有一个注册流程 我把这个过程分成了两页 第一页仅用于 个人信息 然后 当我单击下一步按钮时 将出现下一页 postbackURL 此页面用于 上传照片 页面 他
  • Scrapy CLOSESPIDER_PAGECOUNT 设置无法正常工作

    我使用 scrapy 1 0 3 无法发现 CLOSESPIDER 扩展是如何工作的 对于命令 scrapy 抓取domain links set CLOSESPIDER PAGECOUNT 1 正确的是一个请求 但对于两页计数 scrap
  • javaFx 中更新 java-124 版本后如何解析 tableview 中的嵌套列?

    Exception in thread JavaFX Application Thread java lang NullPointerException at com sun javafx scene control skin Nested
  • 父类是否应该引用子类?

    早上好 我在工作中继承了一些遗留代码 它使用了一种相当不寻常的设计模式 我在论坛上找到的类似模式的唯一参考是here 情况是原始设计者有一个通用父类 不是抽象 它有一个直接引用子类的静态工厂方法 以下是这种编码风格的示例 可以在遗留代码的多
  • Google 的抓取工具可以解释 Javascript 吗?如果我通过 AJAX 加载页面怎么办? [关闭]

    Closed 这个问题是无关 目前不接受答案 当用户进入我的页面时 我必须进行另一个 AJAX 调用 以加载 div 内的数据 这就是我的应用程序的工作原理 问题是 当我查看这段代码的源代码时 它不包含该 AJAX 的源代码 当然 当我执行
  • InvalidCastException:无法将类型“System.DBNull”的对象转换为类型“System.Nullable`1[System.Int32]”[重复]

    这个问题在这里已经有答案了 我正在尝试从数据库执行存储过程 但是 我遇到了一个例外 InvalidCastException 无法将 System DBNull 类型的对象转换为 输入 System Nullable 1 System In