dbnull mysql_关于.net:无法将’System.DBNull’类型的对象强制转换为’System.String’类型...

2023-10-27

本问题已经有最佳答案,请猛点这里访问。

我正在使用MVC3 ASP,并已将我的web.config文件配置为以root用户身份登录MYSQL数据库。我创建了许多存储过程,我可以很好地连接。我现在想要将此登录用户更改为公共用户,称为tempuser而不是root。

但是,当我将登录用户从"root"更改为"tempuser"时,我收到错误:

无法将"System.DBNull"类型的对象强制转换为"System.String"类型

我在执行ExecuteNonQuery()时遇到上述错误。

我通过以下方式授予了访问权限的权限:

GRANT EXECUTE ON FUNCTION check_user_exists to tempuser @'%';

我还在这个表上授予了'select'和'update',我可以访问该函数使用的内容。我可以作为tempuser登录mysql命令行并手动调用该函数,没有任何问题。但是,当我运行ExecuteNonQuery()时,我得到上述错误。我目前正在使用Visual Web Developer 2010,Razor Engine,MVC3。

请帮忙。

我已经尝试了几个星期而没有运气。

这是正在执行的代码。 ExecuteScalar()函数是错误的位置。错误是这个问题的主题:但是,如果我以"root"用户身份登录,我不会收到错误。

[HttpPost]

public ActionResult Register(RegisterModel model)

{

if (ModelState.IsValid)

{

// Attempt to register the user

DBController dbcontroller = new DBController();

if (dbcontroller.DBConnection())

{

MySqlCommand command = new MySqlCommand("check_user_exists_signup", dbcontroller.conn);

command.CommandType = System.Data.CommandType.StoredProcedure;

// Add parameters for the check_user_exists_signup STORED FUNCTION

command.Parameters.Add(new MySqlParameter("@userName", model.UserName));

command.Parameters["@userName"].Direction = System.Data.ParameterDirection.Input;

// RETURN parameter for the insert_users STORED FUNCTION

MySqlParameter cnt_user = command.Parameters.Add("@cnt_user", MySqlDbType.Int32);

command.Parameters["@cnt_user"].Direction = System.Data.ParameterDirection.ReturnValue;

try

{

command.ExecuteScalar();

object ret = command.Parameters["@cnt_user"].Value;

dbcontroller.conn.Close();

存储过程是:

CREATE DEFINER=`root`@`localhost` FUNCTION `check_user_exists_signup`(

userName varchar(20)) RETURNS int(11)

DETERMINISTIC

BEGIN

DECLARE cnt_user int;

select count(*) into cnt_user

from users

where user_name = userName;

RETURN cnt_user;

END

请注意,您的问题与类型转换有关,因此您不提供代码。 您应该在发布之前做出一些努力,即使用调试器跟踪导致错误的实际行。

Unable to cast object of type 'System.DBNull' to type 'System.String'

好吧,你做不到。你不得不说

string s = null;

object value = reader["columnName"];

if(value != System.DBNull) {

s = (string)value;

}

或等同的东西。关键是,你不能将System.DbNull转换为字符串。因此,如果您当前处理的行中的列columnName的值为null,则必须检测它。否则,继续进行强制转换(假设基础数据类型为string)是安全的。

I have been trying for weeks now with no luck.

最重要的是,你不应该花几周时间来解决这样的问题。我把消息"无法将类型'System.DBNull'的对象强制转换为'System.String'"进入谷歌并向上弹出这个答案,这基本上是你的问题,和我给你的相同解决方案,只是编码了一点不同。

失败发生在ExecuteScalar点。 因此,一旦执行了存储过程,它就会失败并且不会按照上面的代码通过这一点。 那么,我在哪个时候添加你的代码? 因为在调用executeScalar之前,我设置了参数。

在.Net中,如果数据为NULL,则表示为System.DBNull.Value,它是在DB中表示NULL的特定类型,您无法将其隐式转换为任何内容,因此,假设您有一个对象包含来自DB的值命名为theValue,但数据为NULL然后theValue实际上是一种System.DBNull,那么下面的表达式将抛出异常:

if(theValue =="blabla")

{

....

}

要防止这很容易,要么检查类型,要么在其上做一个ToString(只要你确定它不是.net null)你会得到一个空字符串

你的第二个建议是不一致的。 它将以一个空字符串结束。 Console.WriteLine("" == System.DBNull.Value.ToString());空字符串与Null不同

我只是建议如何避免这种异常,是的它不一样,但在我的代码中体验它对我来说足够了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

dbnull mysql_关于.net:无法将’System.DBNull’类型的对象强制转换为’System.String’类型... 的相关文章

  • 第五章:多重循环及程序调试

    第五章 多重循环及程序调试 一 什么是多重循环 多重循环 一个循环体内又包含另一个完整的循环结构 例子 while 循环条件1 循环操作1 while 循环条件2 循环操作2 do 循环操作1 do 循环操作2 while 循环条件2 wh
  • 基于libVLC的视频播放器(支持RTSP协议)

    VLC Media Player是一款优秀的播放器 大多数多媒体开发人员都使用过 VLC是一款开源的 跨平台的 可扩展的 多媒体播放器 流媒体服务器及框架 可播放大多数多媒体文件 以及DVD 音频CD VCD及各类流媒体协议 现更名为VLC
  • 自学黑客(网络安全),一般人我劝你还是算了吧

    一 自学网络安全学习的误区和陷阱 1 不要试图先成为一名程序员 以编程为基础的学习 再开始学习 我在之前的回答中 我都一再强调不要以编程为基础再开始学习网络安全 一般来说 学习编程不但学习周期长 而且实际向安全过渡后可用到的关键知识并不多
  • vue深度css样式

    vue 2 gt gt gt 或者 deep 或者 v deep vue 3 deep class
  • PCL点云库学习笔记(搜索方法)

    PCL点云库学习笔记 搜索方法 一 k d tree 二 八叉树 一 k d tree 我们所有的k d树都是三维空间的 k d树的每个级都使用特定维度拆分所有子级 在树的根部 所有子项都将根据第一维进行拆分 即 如果第一维坐标小于根 则它
  • 奇数求和

    include
  • 谷歌打响全面反击战!官宣AI重构搜索、新模型比肩GPT-4,朝着ChatGPT微软开炮...

    点击上方 视学算法 选择加 星标 或 置顶 重磅干货 第一时间送达 明敏 丰色 发自 凹非寺量子位 公众号 QbitAI 万众瞩目 谷歌的反击来了 现在 谷歌搜索终于要加入AI对话功能了 排队通道已经开放 当然这还只是第一步 大的还在后面
  • 如何快速判断IP被墙

    IP被墙是指IP部分地区或者运营商无法被正常进行访问的一个情况 被墙的原因有很多种不一一列举 由于被墙的时间短的为按周按月计算 时间长的则为按年计算 所以一般这种情况下只能选择更换IP 检查办法 第一 确认IP没有封能正常出去机房 确认机器
  • android开发时常用的像素单位,Android开发里的像素单位dp、px、pt、sp的比较

    Android支持下列所有单位 px 像素 屏幕上的点 in 英寸 长度单位 mm 毫米 长度单位 pt 磅 1 72英寸 dp 与密度无关的像素 一种基于屏幕密度的抽象单位 在每英寸160点的显示器上 1dp 1px dip 与dp相同
  • Shell 从入门到精通系列 (第一章 Shell编程基础)

    1 什么是变量 从本质上讲 变量就是在程序中保存用户数据的一块内存空间 变量名就是这块内存空间的地址 在程序执行过程当中 保存数据的内存空间内容可能会不断发生变化 但是代表内存地址的变量名却保持不变 由于变量的值时在计算机的内存中 所以当计
  • C#基本数据类型

    C 数据类型分为值类型和引用类型 值类型 常用的有4种 包括整型 浮点型 布尔型 枚举型等 引用类型 常用的有5种 包括类 接口 数组 委托 字符串等 如果从内存存储空间的角度看 值类型的 值是存放到栈中的 每次存取值都会在该内存中操作 而
  • SQLyog的免费使用方式

    1 删除注册表 会继续使用30天 输入 regedit 进入注册表 找到注册表 HEYK CURRENT USER Software FCE28CE8 D8CE 4637 9BC7 93E4C0D407FA 下的InD保存着SQLyog的使
  • Windows10下超详细Mysql安装

    目录 0 前言 1 下载mysql 2 开始安装 3 验证安装 4 环境变量配置 0 前言 Mysql简介 MySQL是一种开源的关系型数据库管理系统 RDBMS 它使用SQL 结构化查询语言 语言进行数据的存储和访问 MySQL的设计目标
  • U盘启动重装系统报cdboot:couldn't find ntldr 错误

    进BIOS把硬盘格式从IDE改为AHCI二 硬盘主MBR引导损坏 要用PE启动盘进行修复引导 解决方法 在PE打开分区工具Disk Genius点硬盘点重建主引导记录MBR
  • 微信小程序之30分钟学会开发小程序(小程序总览)

    一 注册小程序账号 下载IDE 1 官网注册https mp weixin qq com 并下载IDE 2 官方文档一向都是最好的学习资料 注意 1 注册账号之后会有一个appid 新建项目的时候需要填上 不然很多功能是用不了的 比如不能预
  • 两个真实线上升级故障让你彻底搞懂package.json中的脱字符(^)

    大厂技术 高级前端 Node进阶 点击上方 程序员成长指北 关注公众号 回复1 加入高级Node交流群 作者 掘金干货君 原文 https juejin cn post 7121520457760653349 package json 相信
  • object标签上悬浮div标签,可拖拽,播放rtsp视频

    object上方悬浮div并实现拖拽 云台控制等操作 注意 1 在static目录下创建video html 2 必须安装2 2 1 win32版本的vlc插件 3 vlc安装文件 链接 https pan baidu com s 1yQJ
  • 日志聚合工具loki

    目录 1 loki是什么 2 loki特点 3 loki组成 4 loki安装 4 1 添加helm的chart库 4 2 安装loki及promtail 4 3 安装grafana 5 配置和使用 6 日志选择和过滤 6 1 日志选择器
  • ROS Melodic 安装时所遇到的问题及解决方法

    文章目录 参考教程 所遇到的问题 1 sudo rosdep init 2 ERROR default sources list file already exists etc ros rosdep sources list d 20 de

随机推荐

  • 接口入参格式为x-www-form-urlencoded 的处理

    一般情况下接口入参数格式要求是JSON通用格式 但有些时候接口入参数要求是x www form urlencoded格式 这种格式前端就不能传递JSON格式数据了 如果传递JSON数据的话 接口会报异常 下面对此种情况做解释处理 1 接口入
  • Elasticsearch 配置内存量

    场景 由于配置es之后服务器内存负载过高 原因 初步原因是es内存暂用过高 处理 修改es的配置文件jvm options 根据服务器情况一般是配置服务器内存的一半
  • 手残,双硬盘(SSD+HDD)双系统(Win10+ubuntu)用easyBCD删除win10引导项怎么办?戳这里

    问题描述 博主处女座 电脑双硬盘 固态 机械 因为学习需要 装了双系统 Win10 Ubuntu 这个也是费了不少功夫才成功 不知道怎么装的可以看我这个http blog csdn net x1825048925 article detai
  • 怎样的架构设计才是真正的数据仓库架构

    在各个网站和论坛 一说到数据仓库 基本都想到了 ETL DW OLAP 一说到数据仓库设计 就是按照行业规范和客户需求调研 设计主题 然后设计对应的 事实表 维表 但是 这就是真正的数据仓库总体设计么 关于上面说的主题设计 以及前端展现 这
  • cfssljson详解1

    一 cfssljson简介 大多数cfssl命令的输出内容都是JSON格式的 而cfssljson工具可以将这些JSON格式的输出内容作为输入内容 并按照key键 key certificate CSR and bundle 将之区分然后输
  • 机器学习-决策树算法ID3实现,含例子(红酒分类)

    决策树原理实现代码如下所示 参考自机器学习实践 Peter Harrington import math x 0 1 no 0 1 no 1 0 no 1 1 yes 1 1 no 1 1 no 1 1 maybe 1 1 maybe 1
  • 手把手教你搭建SpringCloudAlibaba项目

    SpringCloud Alibaba全集文章目录 零 手把手教你搭建SpringCloudAlibaba项目 一 手把手教你搭建SpringCloud Alibaba之生产者与消费者 二 手把手教你搭建SpringCloudAlibaba
  • 数据结构——AOE与算法——关键路径的计算

    AOE图 节点表示事件 弧表示活动 弧的权重表示活动进行的时间 关键路径 在AOE网中 从起始点到终点具有最大路径长度的一条路径被称为关键路径 算法思路 1 利用拓扑排序求出AOE网的一个拓扑序列 2 从拓扑排序的序列的第一个顶点 源点 开
  • 设计模式的 C++ 实现---策略模式

    前文回顾 单例模式 一 单例模式 二 观察者模式 简单工厂模式 工厂方法模式 一 工厂方法模式 二 抽象工厂模式 一 抽象工厂模式 二 原型模式 外观模式 中介者模式 代理模式 装饰者模式 前言 所谓策略即解决一件事情的算法 或者方法 是一
  • intel至强服务器芯片制程,64核自研芯片性能提升7倍,追平英特尔至强

    不久之前 英特尔发布了至强铂金8284处理器 单个内核拥有高达28核心56线程 刷新了业界顶尖水平 事实上 在服务器级处理器中 英特尔的产品一向具有重要的地位 它的服务器芯片不仅技术先进 而且耐用程度优质 能耗控制良好 可以说是服务器必备产
  • AJAX请求返回流 下载Excel文件

    AJAX请求返回流 下载Excel文件 模拟请求 var xhr new XMLHttpRequest 文件名称 var fileName 1 xls xhr open POST http 127 0 0 1 8001 Api Downlo
  • 并发编程篇

    并发编程篇 线程基础 线程和进程的区别 面试官 说一下线程和进程的区别 候选人 嗯 好 进程是正在运行程序的实例 进程中包含了线程 每个线程执行不同的任务 不同的进程使用不同的内存空间 在当前进程下的所有线程可以共享内存空间 线程更轻量 线
  • docker部署常用服务器(redis,nginx,mysql,tomcat)

    docker部署服务器 docker部署redis docker部署nginx docker部署mysql docker部署tomcat docker部署redis 参考这篇博客 写的很详细 docker部署nginx 1 搜索镜像 doc
  • opencv imread()默认加载三通道图像

    今天用python opencv 函数 cv2 imread加载图像 图像是单通道的但是加载完之后就变成三通到了 处理了半天的bug才发现是这里出现了问题 介绍一下imread函数 c 函数模型 include
  • 使用@JsonInclude来实现字段为Null不传递,不为null才传递

    屁话不多说 直接上需求 code 0 msg 成功 data orderId 161873371171128075 buyerName 张三 buyerPhone 18868877111 buyerAddress 总部 buyerOpeni
  • 实战分享:基于python PyQt5的视频监控系统 完整代码数据 课程设计

    代码视频讲解 PyQt5的视频监控系统 基于python PyQt5的视频监控系统 完整代码可直接运行 哔哩哔哩 bilibili import sys import cv2 from PyQt5 Qt import from PyQt5
  • pandoc 使用_如何使用Pandoc撰写研究论文

    pandoc 使用 本文深入探讨了如何使用 主要是 Markdown语法来撰写研究论文 我们将介绍如何创建和引用节 图形 在Markdown和LaTeX中 和参考书目 我们还将讨论麻烦的案例 以及为什么在LaTeX中编写它们是正确的方法 研
  • CGAL配置的一点心得(各种错误的解决办法)

    这几天由于项目关系 花了些时间配置了一下CGAL 说实话走了不少弯路 谈谈我的心得吧 具体流程我不想讲 这种东西网上博客一搜一大把 而且都有一定的参考价值 当然最值得推荐的还是官网http www cgal org download win
  • 新能源汽车涨价的背后,究竟有哪些原因?

    新能源车企宣布涨价 前段时间 不仅油价接连上涨 新能源车企也接连宣布调价 根据不完全统计 今年2月后 已有超过16家车企因原料价格上涨宣布提价 下面云恒制造小编带大家来看一下 主要新能源车企涨价情况 其余车企如岚图 极氪等内部正在酝酿涨价
  • dbnull mysql_关于.net:无法将’System.DBNull’类型的对象强制转换为’System.String’类型...

    本问题已经有最佳答案 请猛点这里访问 我正在使用MVC3 ASP 并已将我的web config文件配置为以root用户身份登录MYSQL数据库 我创建了许多存储过程 我可以很好地连接 我现在想要将此登录用户更改为公共用户 称为tempus