Welcome to Rolland Town which Record fire's life.
2003年10月28日03年9月-06年9月存档

评论关闭

又开始忙了……

下午刚刚被杂志社约定了3篇稿子,要我最迟下个月3号交,也就是2003.11.3。晕阿~~~

主要是写.NET方面的东西,概念阿之类的。思路比较杂,需要时间理一下!

2003年10月27日我的文章

评论关闭

从ASP.NET数据库某字段为空时的处理所衍生出来的思考

对于数据库字段为空时,在B/S结构下的处理方式很多,而到了dotNet时代,就和原来有了本质的不同,根本就在于更强调服务器的自行处理。下面一步一步地从大家最熟悉的东西开始说。

首先用一个简单的ASP+Access留言本为例。数据库中对于每一个留言都有对应的一个回复,并且,只要回复了的留言将会用一个数据类型未bit的messageStatus字段来标记,回复了的用“1”来标记,否则用“0”(下面只给出关键部分代码,也就是判断messageStatus字段的值是真还是假):

<%
if messageRs("messageStatus")=False then
%>
................(此处省略了html代码)
<%
else
set replyRs = Server.CreateObject("adodb.recordset")
replySql = "select * from reply where messageId = " & messageRs("messageId")
replyRs.Open replySql,conn
%>
................(此处省略了html代码)
<%
replyRs.Close
set replyRs = nothing
end if
%>

而在ASP.NET中,由于程序代码已经完全可以和html代码分开,加上所提供的服务器端控件,使我们必须要找到一种适合于ASP.NET的方式。下面就直接进入我们的正题,和大家一起探讨在ASP.NET如何更好的实现。

下面列出笔者所知道的三种方法。下面还以留言板为例。

第一种——

可以这样解决,在cs页里写一函数,用于判断一个帖子是否有回复,如果有回复,则返回回复的内容,没有则返回“无回复”。然后把这个方法绑定到DataGrid或者DataList,或者Reapter空间的itemtemplate中的一个Label控件上。

下面是一个例子,用于显示某个图片,首先用IsImageAvailable()方法判断是否存在这幅图片,返回是一个布尔值,从而控制img控件和Label控件是否显示.如果有图片,则img控件显示,否则显示Label控件。


  
		
		
  
//IsImageAvailable()函数
private bool IsImageAvailable(String strLastName){
       String strImageFile = "images\\" + strLastName + ".bmp";
       return File.Exists(Server.MapPath(strImageFile));
}

解决思路大概就是这样,当没有图片时用Label控件显示”No picture available”。

第二种——

留言板的数据显示使用DataGrid控件,那么就容易了。使用DataGrid控件显示数据的时候,如果字段值为NULL,它会自动默认为空。所以我们可以把数据存为一个DATASET,然后再绑定到DataGrid上,使用FOR 循环来判断,如果一个字段为空,如下赋值:

for (int i, i



第三种——

直接只用SQL语句。大家先来看看这样一个SQL语句:

SELECT GuestName,GuestContact,GuestEmot,PostTitle,PostContent,PostTime,PostIP,case when(ReplyContent IS NULL) then '未回复' else ReplyContent end AS reply FROM GuestBook ORDER BY Id DESC

这里出现了一个case when() then … else …end as,下面来看看它的具体用法。

CASE

计算条件列表并返回多个可能结果表达式之一。

CASE 具有两种格式:

1、简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。

2、CASE 搜索函数计算一组布尔表达式以确定结果。

两种格式都支持可选的 ELSE 参数。

语法

简单 CASE 函数:

CASE input_expression
WHEN when_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
END

CASE 搜索函数:

CASE
WHEN Boolean_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
END

参数

input_expression

是使用简单 CASE 格式时所计算的表达式。Input_expression 是任何有效的 Microsoft® SQL Server™ 表达式。

WHEN when_expression

使用简单 CASE 格式时 input_expression 所比较的简单表达式。When_expression 是任意有效的 SQL Server 表达式。Input_expression 和每个 when_expression 的数据类型必须相同,或者是隐性转换。

n

占位符,表明可以使用多个 WHEN when_expression THEN result_expression 子句或 WHEN Boolean_expression THEN result_expression 子句。

THEN result_expression

当 input_expression = when_expression 取值为 TRUE,或者 Boolean_expression 取值为 TRUE 时返回的表达式。result expression 是任意有效的 SQL Server 表达式。

ELSE else_result_expression

当比较运算取值不为 TRUE 时返回的表达式。如果省略此参数并且比较运算取值不为 TRUE,CASE 将返回 NULL 值。Else_result_expression 是任意有效的 SQL Server 表达式。Else_result_expression 和所有 result_expression 的数据类型必须相同,或者必须是隐性转换。

WHEN Boolean_expression

使用 CASE 搜索格式时所计算的布尔表达式。Boolean_expression 是任意有效的布尔表达式。

结果类型

从 result_expressions 和可选 else_result_expression 的类型集合中返回最高的优先规则类型。

那么,总结一下上面说过的三种方法:

1、  第一种方法,需要额外写一个处理函数。增加了工作量;

2、  利用了dotNet中的DataSet,对于能熟练运用的朋友来说不成问题,但是对于初学者这个就有点困难了。而且也没有从减少代码量角度来考虑;

3、  充分利用了SQL语句,将空字段的处理完全交给服务器来完成,不需要额外写任何的代码。

其实,不管是做B/S结构的程序还是做C/S结构的,都离不开和数据库关联,那么一个好的SQL语句,将会带来极大的方便。DotNet时代的到来,将会进一步加快我们走向完整的三层体系结构,如上面说到的程序中直接利用SQL语句将是不规范的,以后的程序都将分为数据层、中间层、应用层,那么数据层的开发,其实还是直接、或者间接的和SQL语句关联,所以充分挖掘现有的SQL语句的功能将会非常有必要。

2003年10月23日03年9月-06年9月存档

评论关闭

当以前的人生目标就近在咫尺…………

上大学的时候吧,记不得具体的时间了。
我的人生目标就是在30岁之前做到项目经理,可当这个时候,一个公司要挖我过去做项目经理的时候,我开始犹豫了。我真的需要嘛?

我知道了我的目标太过于模糊,我知道我需要时间来把他细化,然后用一辈子的时间来不停的校正,这就是我现在要做的!

2003年10月16日03年9月-06年9月存档

评论关闭

再次决定准备辞职ing

当初,选择留校,是为了能多学点东西。可是一年多来,我马不停蹄的做应用的开发,对语言的深入也随之加深,但是纯粹的做应用,个人认为是没有前途的!我这个月给杂志社的稿子就说明了这个。

所以,我向我的头儿摊牌了,说不好,我就辞职,回家考研!我已经决定了。本来还想出去,到公司长长经验,现在看来没有必要了,人生没有几个年头好过,年轻的时候更不多,所以要好好利用这个时间!也算是置之死地而后生吧!

我不知道自己的未来可能是什么样子,我只知道我现在应该做什么!

2003年10月6日03年9月-06年9月存档

评论关闭

病去如抽丝阿!

  计划被打乱完了,今天,病算是开始离我远去!!

书没有看,时间剩下不多,赶紧些程序吧!不过昨日又开始思考我给杂志社写的稿子,发现还有续篇可以写,等空了再说啦,呵呵!

每天对自己说——开心一点,呵呵!今天就开心了,呵呵!!

2003年10月3日03年9月-06年9月存档

评论关闭

这两天被病魔折腾…………

昨天上街就开始了,拉肚子,到今天就随便吃了一点点东西,不停的……索性不吃,整个人都没有精神……

不爽!

2003年10月2日03年9月-06年9月存档

评论关闭

给“程序春秋”杂志的稿子敲定了,11期用,呵呵~~~

一看时间,已经是零点多了,给“程序春秋”杂志的稿子写的差不多了。忽然发现qq上面,杂志的编辑上来了,赶紧联系…………
文字部分还要改,不过已经确定要用了。等着到时候看杂志了,哈哈哈!等杂志发了以后,我会把它发到这里来。想抢先的朋友,去买本“程序春秋”看看吧,呵呵。
对了,忘记说题目了——Who’s designing the future?

赶紧把最后一点写完,睡觉,早上还要去成都逛逛呢,呵呵。这两天的计划算是完成了60%了。开心ing…………

杂志网址——::URL::http://www.cbideveloper.com/

说说十一假期的安排吧

10.1-10.2
完成准备给“程序春秋”杂志的稿子。这两天主要休息,睡觉。把前段时间没有睡够的补回来。去买张卡,要不我就成了隐形人了,朋友都找不到我,呵呵~~
开始研读techedu推荐的Enterprise Solution Patterns Using Microsoft .NET。

10.3-10.4
继续研读Enterprise Solution Patterns Using Microsoft .NET。准备权限系统的论文资料。

10.5-10.7
完成头儿布置的小型OA应用系统的开发,准备开始做自己的Blog。

返回顶部