博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库中复杂的NULL问题
阅读量:6122 次
发布时间:2019-06-21

本文共 3204 字,大约阅读时间需要 10 分钟。

数据库中Null表示不知道

需求:如果没输姓名,则说明姓名是“不知道”,因此是Null

如果没输入年龄,则年龄是Null,而不是0

 

Null不是'',Null也不是0

三个的区别:string类型有空是‘’,不知道Null,int类型只能是0.

  • 查询表中所有的数据

  • 查询LoginName等于空,查询名字为空的一栏

  • 查询LoginName等于不知道的一列

  • 查询LoginName等于不知道的一列

  • 查询ErrorTimes等于0

如果给的参数的值为“不知道”则其实是没有给该参数赋值

 

1  //添加数据的时候,判断用户是否未填,未填在数据库中表示NULL。NULL和“”,0表示的意思不一样。 2         private void btnAdd_Click(object sender, RoutedEventArgs e) 3         { 4             //DBNull.Value是数据库中的NULL,所以不可以直接拿来和其他类型的数据比较。 5             string num = textBox1.Text; 6             string name=textBox2.Text; 7             string pwd=textBox3.Text; 8             string error=textBox4.Text; 9             //“num.Length <= 0”长度小于0,是防御性编程。10             //"object objid"设置object类型就可以任意指向了。11             object objid;12             //判断用户是否输入,未输入的在数据库中表示NULL。13             if (num.Length <= 0)14             {15                 //object指向DBNull.Value16                 objid = DBNull.Value;17             }18             else19             {20                 //object指向字符串21                 objid = num;22             }23             object objname;24             if (name.Length <= 0)25             {26                 objname = DBNull.Value;27             }28             else29             {30                 objname = name;31             }32             object objpwd;33             if (pwd.Length <= 0)34             {35                 objpwd = DBNull.Value;36             }37             else38             {39                 objpwd = pwd;40             }41             object objerror;42             if (error.Length <= 0)43             {44                 objerror = DBNull.Value;45             }46             else47             {48                 objerror = error;49             }50             int add = SqlHelper.ExecuteNonQuery(@"insert into Table_2 values(@Id,@LoginName,@LoginPwd,@ErrorTimes)",51                 new SqlParameter("@Id",objid ),//这边想赋值NULL,是.net赋值,必须是DBNull.Value才可以。52                 new SqlParameter("@LoginName", objname),53                 new SqlParameter("@LoginPwd",objpwd),54                 new SqlParameter("@ErrorTimes",objerror));55             if(add>0)56             {57                 MessageBox.Show("Success");58             }59         }
View Code

 

1 private void btnNull_Click(object sender, RoutedEventArgs e) 2         { 3             DataTable dt = SqlHelper.ExecuteDataSet("select * from Table_2 where Id='501B1197-C823-48CF-922C-023B68056444'").Tables[0]; 4             DataRow row = dt.Rows[0]; 5             //读取的值如果在数据库中是NULL,则读取的时候是DBNull.Value; 6             //读取的值如果在数据库中是"",则读取的时候是“” 7             string loginname; 8             if (row["LoginName"] == DBNull.Value) 9             {10                 loginname = null;11             }12             else13             {14                 loginname = (string)row["LoginName"];15             }16             //int类型,bool类型等都不是null,要转换成可空类型。17             int? errortime;18             if (row["ErrorTimes"] == DBNull.Value)19             {20                 errortime = null;21             }22             else23             {24                 errortime = (int)row["ErrorTimes"];25             }26         }
View Code

转载于:https://www.cnblogs.com/chuizhuizhigan/p/3317370.html

你可能感兴趣的文章
会计基础_001
查看>>
Cordova 开发环境搭建及创建第一个app
查看>>
ajax请求拿到多条数据拼接显示在页面中
查看>>
小程序: 查看正在写的页面
查看>>
dedecms生成文档数据库崩溃 mysql daemon failed to start
查看>>
Linux的50个基本命令
查看>>
Objective-C中创建单例方法的步骤
查看>>
Codeforces 520B:Two Buttons(思维,好题)
查看>>
Jenkins持续集成环境部署
查看>>
emoji等表情符号存mysql的方法
查看>>
检查磁盘利用率并且定期发送告警邮件
查看>>
MWeb 1.4 新功能介绍二:静态博客功能增强
查看>>
linux文本模式和文本替换功能
查看>>
Windows SFTP 的安装
查看>>
摄像机与绕任意轴旋转
查看>>
rsync 服务器配置过程
查看>>
预处理、const与sizeof相关面试题
查看>>
爬虫豆瓣top250项目-开发文档
查看>>
Elasticsearch增删改查
查看>>
oracle归档日志增长过快处理方法
查看>>