asp.net中Null在从数据库读取的时候的一点点小技巧_实用技巧

它的功能很简单,就是说先在数据库里查找为Name的字段,然后进行判断,如果它的值为空的话,那么number的值就加1.

比如,加黑的就是我们需要注意下的。

复制代码 代码如下:

int number = 0;
string connstr = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\lando\Desktop\UML Extension\MyPratices\WebServices\App_Data\Database1.mdf;Integrated Security=True;User Instance=True";
using (SqlConnection conn = new SqlConnection(connstr))
{
conn.Open();
string str = "select * from Test";
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = str;
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
string name = dr["Name"].ToString();
DateTime dt = dr.GetDateTime(dr.GetOrdinal("InputDate"));
<STRONG>if (dr["Name"] == null) { number += 1; } </STRONG> }
}
}
if (number == 0)
Label1.Text = "不存在Name为null的值";
else
Label1.Text = "Name为空值的个数为:" + number;

然后,在看看我数据里的数据:

在我们的Test表里,有3个数据,而第三条数据的Name字段的值为空,刚刚开始,我理所当然的认为在Label里会输出:Name为空值的个数为:1.
很多故事告诉我们,很随意的下结论是很容易错误的。比如说,我现在做的这个结论。
结果很不意外的没有找到Null为Name的值?
咋的啦?我刚开始左右寻思不知道原因在哪里。然后,很习惯的设上断点,然后开始 F5 开始调试。。。
上图:

看到了没有啊?它不认。也就是说 如果在数据库(至少是在SQL里的吧?在oracle我还不知道)的空值 其实不是null,它用表面现象欺骗了你。
不过,我们可以从上面的截图中看到它的类型:object{System.DBNull},我们可以从这里发现一点端倪。
对,从类型里面下手,然后我在网上看了一些DBNull的知识。具体的,看官可以自己在百度下。
知道了是类型的问题,改正过来就很OK了,核心只需要改如下:

复制代码 代码如下:

if (dr["Name"] == DBNull.Value)
{
number += 1;
}

  就OK了,然后它就能正确的识别。
还有另外一个方法,其实都是差不多,换汤不换药:

复制代码 代码如下:

if (Convert.IsDBNull(dr["Name"]))
{
number += 1;
}

 也行。。

时间: 2024-09-13 17:16:18

asp.net中Null在从数据库读取的时候的一点点小技巧_实用技巧的相关文章

ASP.NET中常见文件类型、扩展名、存放位置及用途总结_实用技巧

.asax 应用程序根目录. 通常是 Global.asax 文件,该文件包含从 HttpApplication 类派生并表示该应用程序的代码. 有关更多信息,请参见 Global.asax 语法. .ascx 应用程序根目录或子目录. Web 用户控件文件,该文件定义自定义.可重复使用的用户控件. 有关更多信息,请参见 ASP.NET 用户控件. .ashx 应用程序根目录或子目录. 一般处理程序文件,该文件包含实现 IHttpHandler 接口以处理所有传入请求的代码. 有关更多信息,请参

ASP.NET中iframe框架点击左边页面链接 右边显示链接页面内容_实用技巧

 ASP.NET中iframe框架点击左边页面链接,右边则显示链接页面内容,具体实现内容如下 先看看效果图: 首先是主页面main.aspx <body style="background-color: #AFEEEE"> <form id="form1" runat="server"> <div> <center> <h1> 后台管理界面 </h1> <span st

asp.net中在用ajax格式传递数据到aspx页面时出现乱码_实用技巧

 asp.net中在用ajax格式传递数据到aspx页面时有时会出现乱码,以下为解决方法 js中 : 复制代码 代码如下: XmlHttp.open("POST", "test.aspx", false); XmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); XmlHttp.send("QueryName=&qu

ASP.NET中防止页面刷新造成表单重复提交执行两次操作_实用技巧

之前看过别人防刷新的方法,是让页面刷新或返回上一步让页面过期,这里介绍一种另类的方法,使用Session来处理. 实现原理: 由于刷新提交表单,实际上提交的就是上一次正常提交的表单,所以我们只要做一个标志,判断出是新表单还是上一次的旧表单就可以分辨出是否进行了重复提交操作. 实现方法: 在页面上放置一个Hidden域,当页面第一次载入的时候,在Session里面保存一个标志,同时,把这个标志保存到页面上的Hidden里面.在提交表单时,判断表单中提交上来的Hidden和Session中的标志是否

asp.net中使用cookie与md5加密实现记住密码功能的实现代码_实用技巧

在做一个前台的登陆和后台的信息审核管理功能时,需要用到记住密码的模块:虽然.net内置了登陆控件,有记住密码的功能,但还是想自己实践一下,以下代码主要应用了COOKIE,包括安全加密的过程等. 复制代码 代码如下: //设置,删除Cookie//provider jb51.net        protected void set_cookie()        {            HttpCookie UserNameCookie = Request.Cookies["UserNameC

asp.net中的“按需打印”(打印你需要打印的部分) 实现代码_实用技巧

过程很简单: 首先在asp.net页面中设定开始打印和结束打印的标记,为了确保该标记不在网页浏览时显示,我们采用"<!-- HTML注释 -->"的方式.比如:<!--startprint-->和<!--endprint-->. 接着写相关的JavaScript代码,具体代码见后. 如果不想打印按钮也被打印出来,注意将打印按钮包含在<!--startprint-->和<!--endprint-->之外. 相关代码: 复制代码

ASP.NET下上传图片到数据库,并且读出图片的代码(详细版)_实用技巧

首先在SQL Server中建立一个图片存储的数库表,ImageData Column为图象二进制数据储存字段,ImageContentType Column为图象文件类型记录字段,ImageDescription Column为储蓄图 象文件说明字段,ImageSize Column为储存图象文件长度字段,结构如下: 复制代码 代码如下: CREATE TABLE [dbo].[ImageStore] ( [ImageID] [int] IDENTITY (1, 1) NOT NULL , [

ASP.NET实现读取Excel内容并在Web上显示_实用技巧

本文实例讲述了ASP.NET实现读取Excel内容并在Web上显示的方法,是非常实用的一个功能,分享给大家供大家参考.具体实现方法如下: 点击事件代码.cs代码如下: protected void Button1_Click(object sender, EventArgs e) { string strPath = "d:/test.xls"; string mystring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source

ASP.NET比较常用的26个性能优化技巧_实用技巧

本篇文章主要介绍了"ASP.NET中常用的26个优化性能方法",主要涉及到ASP.NET中常用的26个优化性能方法方面的内容,对于ASP.NET中常用的26个优化性能方法感兴趣的同学可以参考一下.  现在很多客户也慢慢开始注重网站的性能了,同时有很多运营网站的公司也不像以前那样特别在意网站是否非常漂亮,而把更多的精力放在了网站性能优化上面,提供更快更稳定的浏览速度,在这个基础上面进行网站功能上的扩充和完善,那么在asp.net中如何优化性能呢? 1. 数据库访问性能优化 数据库的连接和