仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 394|回复: 8
打印 上一主题 下一主题

[学习教程] ASP编程:一般你会在甚么中央碰到DBNull?

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:49:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
写软件都是想的时间比写的时间要长的.如果反过来了就得看看是什么原因了.另外大家可以回去问问公司里的小MM.(一般企业里,跟你们交付软件接触得最多的是她们)明天不但被外包,还要跑到虹桥机场往协助实行。惋惜离开这里又好象没有甚么事干。。:)恰好能够写写Blog。

恰好这几天写数据库操纵对照多,是时分写写关于DBNull的器材了。

DBNull在DotNet是独自的一个范例System.DBNull。它只要一个值DBNull.Value。DBNull间接承继Object,以是DBNull不是string,不是int,也不是DateTime。。。

可是为何DBNull能够暗示数据库中的字符串,数字,或日期呢?缘故原由是DotNet贮存这些数据的类(DataRow等)都是以object的情势来贮存数据的。

关于DataRow,它的row[column]前往的值永久不为null,要末就是详细的为column的范例的值。要末就是DBNull。以是row[column].ToString()这个写法永久不会在ToString那边产生NullReferenceException。

DBNull完成了IConvertible。可是,除ToString是一般的外,其他的ToXXX城市抛出不克不及转换的毛病。

在IDbCommand(OleDbCommand,SqlCommand...)的ExecuteScalar的前往值中,情形能够如许剖析:

select1如许前往的object是1
selectnull如许前往的是DBNull.Value
selectisnull(null,1)前往的是1
selecttop0idfromtable1如许前往的值是null
selectisnull(id,0)fromtable1where1=0前往的值是null

这里ExecuteScalar的划定规矩就是,前往第一列,第一行的数据。假如第一列第一行不为空,那末ExecuteScalar就间接对应的DotNet的值。假如有第一行,可是第一列为空,那末前往的是DBNull。假如一行都没有,那末ExecuteScalar就前往null

划定规矩就是如许的。这里简单犯的一个毛病是,把ExecuteScalar前往DBNull与null的情形搅浑,比方:

stringusername=cmd.ExecuteScalar().ToString();

除非你以为cmd实行后,一定最少有一行数据,不然这里就会堕落。

又大概selectidfromusertablewhereusername=@name如许的sql语句,假如找不到纪录,那末ExecuteScalar则会前往null,以是万万不要

intuserid=Convert.ToInt32(cmd.ExecuteScalar());

大概你会如许写SQL语句:selectisnull(id,0)fromusertablewhereusername=@name

可是intuserid=Convert.ToInt32(cmd.ExecuteScalar());仍然会堕落,由于下面的语句不建立时,仍旧是不前往任何行。

关于IDbDataParameter(OleDDbParameter,SqlParameter..)的Value,假如为null,则代表该参数没有指定,大概是代表DEFAULT。假如为DBNull.Value,则代表SQL中的NULL

以是,假如你要挪用存储历程,内里有参数@valnvarchar(20)="AABB",
那末cmd.Parameters["@val"].Value=null代表利用这个默许的"AABB"
而cmd.Parameters["@val"].Value=DBNull.Value代表利用NULL来传给@val


你能够用Convert.IsDBNull来判别一个值是不是DBNull。注重Convert.IsDBNull(null)是false。


备注:以上的SQL语句满是指SQLSERVER2000的。其他的数据库是不是为一样的举动,我不断定。

(先写到这里,想到再增补)


</p>只要你想学,就没什么优缺点,上面那位大哥已经把网上的评论说了,但我认为想学哪个都一样,不然它就不可能在当今时代数字艺术方面存活到今天
简单生活 该用户已被删除
沙发
发表于 2015-1-20 05:11:42 | 只看该作者
在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。
蒙在股里 该用户已被删除
板凳
发表于 2015-1-25 15:17:18 | 只看该作者
不能只是将它停留在纸上谈兵的程度上。
冷月葬花魂 该用户已被删除
地板
发表于 2015-2-2 22:34:50 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
只想知道 该用户已被删除
5#
发表于 2015-2-8 17:25:49 | 只看该作者
运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。
不帅 该用户已被删除
6#
发表于 2015-2-25 21:39:13 | 只看该作者
如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:
飘灵儿 该用户已被删除
7#
发表于 2015-3-8 06:16:01 | 只看该作者
那么,ASP.Net有哪些改进呢?
透明 该用户已被删除
8#
发表于 2015-3-15 21:02:48 | 只看该作者
我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。
乐观 该用户已被删除
9#
发表于 2015-3-22 04:10:51 | 只看该作者
那么,ASP.Net有哪些改进呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 02:58

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表