Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更新维护Null状态的数据库

我有一个asp.net文本表单,其中包含许多可选的小数字段。我想有选择地更新数据库,但不为没有数据的字段插入"0“(保持null状态)。

通常,我会创建多个函数,每个函数都有不同的签名来处理这个问题。但是,我通过does服务插入数据,该does服务不允许具有相同名称的函数具有多个签名。我可以想出几种方法来解决这个问题,但没有一种是“实用的”。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-10-07 20:10:54

Nullable Types的目的是相同的。它们表示值类型,其中可能没有数据。可以使用这些类型的HasValue属性检查值的存在。

读取字段的伪代码:

代码语言:javascript
运行
AI代码解释
复制
decimal? dValue; // default value is null
 if(decimalValueExists)
{
  dValue = <value read from text file>
} 

当你说多个方法时-我假设这些都是重载的方法,以便能够添加可选字段(所以n个可选字段意味着更多n个方法)

您可以通过编写单个方法来避免编写这些方法。假设您有一个必填字段和一个可选字段:

代码语言:javascript
运行
AI代码解释
复制
public class MyFields
{
    decimal  req1;
    decimal? opt1; // optional field 1  
}

然后定义使用它的web服务方法:

代码语言:javascript
运行
AI代码解释
复制
[WebMethod]
void MyWSMethod(MyFields myFields)
{/* code here will ultimately call InsertMyFields */}

void InsertMyFields(MyFields myFields)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        // Create the command and set its properties.
        SqlCommand command = new SqlCommand();
        command.Connection = connection;
        command.CommandText = "AddMyFields";
        command.CommandType = CommandType.StoredProcedure;

        // Add the required input parameter
        SqlParameter parameter1 = new SqlParameter();
        parameter1.ParameterName = "@ReqField1";
        parameter1.SqlDbType = SqlDbType.NVarChar;
        parameter1.Direction = ParameterDirection.Input;
        parameter1.Value = myFields.req1;

        // Add the parameter to the Parameters collection. 
        command.Parameters.Add(parameter1);

        // Add the optional parameter and set its properties.
        SqlParameter parameter2 = new SqlParameter();
        parameter2.ParameterName = "@OptField1";
        parameter2.SqlDbType = SqlDbType.NVarChar;
        parameter2.Direction = ParameterDirection.Input;
        parameter2.Value = myFields.opt1 ?? DBNull.Value; //null coalescing operator

        // Add the parameter to the Parameters collection. 
        command.Parameters.Add(parameter2);

        //.. rest of the code
    }

} 

如果可为空的类型有一个值,Null Coalescing Operator将设置该值,否则它将设置您指定的另一个值(在本例中为DBNull.Value)。

票数 2
EN

Stack Overflow用户

发布于 2008-10-07 20:23:19

您可以将参数定义为可以为空的小数。可为空值类型的C#语法如下:

代码语言:javascript
运行
AI代码解释
复制
decimal? rebateAmountOrWhatever;

然后,您可以将空值存储在变量中,并将变量与空值进行比较。

代码语言:javascript
运行
AI代码解释
复制
new SqlParameter("@RebateAmount", 
  rebateAmountOrWhatever == null ? (object)DBNull.Value : (object)rebateAmountOrWhatever)

使用??也有很大的乐趣。像这样的运算符:

代码语言:javascript
运行
AI代码解释
复制
new SqlParameter("@RebateAmount", 
 (object)rebateAmountOrWhatever ?? (object)DBNull.Value)

声明变量的另一种等效方法是使用Nullable<>泛型类型,如下所示:

代码语言:javascript
运行
AI代码解释
复制
Nullable<decimal> currentIraBalance = null;
票数 2
EN

Stack Overflow用户

发布于 2008-10-07 19:27:49

您可以在web服务代码中使用DBNull class来表示空值。

而您仍然必须使用代理值(例如,0或-1),然后只需计算该值以将其转换为DBNull对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/181210

复制
相关文章
Object 类型
ECMAScript中大多数的引用类型都值都是Object类型的实例,Object也是使用最多的一个类型,主要用来在程序中存储和传输数据
河岸飞流
2019/09/11
5390
JavaScript引用类型之Object类型
在JavaScript中大多数的引用类型都是Object的实例,Object类型也是使用最多的类型! 创建Object类型实例的方式有两种,下面分别来分析一下: (1)第一种是使用new操作符后跟Object构造函数,代码如下: var perosn=new Object(); person.name="张三"; person.age=22; (2)第二种方式使用对象字面量表示法。对象字面量是对象定义的一种简写方式,目地就是为了简化创建含有大量属性和方法的对象的过程。代码如下: var person={ n
郑小超.
2018/01/24
8890
变量类型测试函数的使用:六、is_object的用法
讲完PHP变量类型测试函数【is_array】的用法,今天来讲讲PHP变量类型测试函数【is_object】的用法。
大脸猫
2020/07/06
7110
变量类型测试函数的使用:六、is_object的用法
匿名类型和Object转换
本文转载:http://www.cnblogs.com/JustRun1983/archive/2012/05/13/2497997.html
跟着阿笨一起玩NET
2018/09/18
8000
一文读懂 TS 中 Object, object, {} 类型之间的区别
TypeScript 2.2 引入了被称为 object 类型的新类型,它用于表示非原始类型。在 JavaScript 中以下类型被视为原始类型:string、boolean、number、bigint、symbol、null 和 undefined。
阿宝哥
2020/04/08
18.2K0
判断Object中数据类型(已知类型、未知类型))
接收到的数据类型为Object,如果知道数据的类型可以使用ObjectMapper进行处理,得到里面的参数。
ha_lydms
2023/08/09
3120
object到底是什么类型
instanceof运算符用来判断某个构造函数的prototype属性所指向的对象是否存在于另外一个要检测对象的原型链上。
用户7293182
2022/01/06
3970
object到底是什么类型
java中将Object类型转换成String类型[通俗易懂]
从下图(a图)的String类的valueOf(Object)的源码可以看到,当传入的值为null的时候返回的是“null”字符串,而不是null,所以在这里如果想判断这个string的值不为空的时候,应该用字段串相关判断不为空的方法例如用equals方法。示例如下(b图)
全栈程序员站长
2022/08/30
1.3K0
java中将Object类型转换成String类型[通俗易懂]
JS原生引用类型解析1-Object类型
(注1:如果有问题欢迎留言探讨,一起学习!转载请注明出处,喜欢可以点个赞哦!) (注2:更多内容请查看我的目录。)
love丁酥酥
2018/08/27
2.2K0
ElasticSearch数据类型Object介绍
JSON文档本质上是分层的:文档可能包含内部对象,而内部对象又可能包含内部对象本身:
xdd
2022/07/12
1.2K0
红宝书 📒 6.1 集合应用类型-object
字面量的声明方式更为常用。在使用对象字面量表示法定义对象时,并不会实际调用Object构造函数。
用户4793865
2023/01/12
2650
TypeScript-never和object类型、类型断言概述
TypeScript 中的 "never" 类型表示一个永远不会发生正常结束的函数返回值类型,通常在异常处理或无限循环中使用。这有助于标识代码中的潜在问题和错误流程。
杨不易呀
2023/09/28
2680
TypeScript-never和object类型、类型断言概述
js中Object类型的一些特点
这种方法简单,直接,但感觉也太随意了,当需要定义大量的属性或方法时,会给人一种凌乱不堪的感觉。
风柏杨4711
2021/03/15
1K0
java string 转 object_java 类型转换 Object和String互转
但是,使用toString()的对象不能为null,否则会抛出异常java.lang.NullPointerException
全栈程序员站长
2022/09/05
2.5K0
【Flutter】Dart 数据类型 ( var 数据类型 | Object 数据类型 )
var 也是定义变量的关键字 , 使用 var 声明变量 , 也是 由系统根据该变量的 赋值 自动 推断该变量的数据类型 ; 该用法与 dynamic 关键字定义的变量类似 ;
韩曙亮
2023/03/28
3K0
【Flutter】Dart 数据类型 ( var 数据类型 | Object 数据类型 )
无法解析类型java.lang.Object_java类型转换异常
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.xxx.xxxx.entity.xxxx
全栈程序员站长
2022/10/03
1.2K0
无法解析类型java.lang.Object_java类型转换异常
Java-类型转换,String转Object和Object转String「建议收藏」
String 转换 Object : 使用类似 Obj.parseObj(String) , Obj.valueOf(String)
全栈程序员站长
2022/06/30
6K0
Java-类型转换,String转Object和Object转String「建议收藏」
Dart 中变量类型 var, Object, dynamic 区别
Dart 中弱类型有var, Object 以及dynamic,本文主要探讨一下这三者的区别
莫斯
2020/09/10
1.6K0
Dart 中变量类型 var, Object, dynamic 区别
Object转换为String[]数组,或者其他类型的数组
可以通过向下转型来获得,但是不知道为什么包类异常,最后我采用的方法如下:
全栈程序员站长
2022/09/02
2.7K0
点击加载更多

相似问题

错误:预期的声明,使用未声明的类型'Object',使用未声明的类型'JSON‘

10

未声明类型的使用

12

“‘object”未声明<在此function>中首次使用

21

未声明类型"NSManagedObjectModel“的使用

14

未声明类型“MessagingDelegate”的使用

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档