ASP.NET网页设计Setting Database Values to Their Uni...
我见过java运行在手机上,包括很廉价的山寨手机,但是却暂时没发现.net在手机上有什么作为。wp7可能是个转机,但是按照《Java的跨平台就是一句谎言。那.net的跨平台也当之无愧是一句谎言。Question:WhenIminsertingblankvalueintoaSQLServerdatabase,foraDateTimecolumn,mydatabaseitisinserting1/1/1900evenifIassignNulltothevariableinmyapplication.Hereisanexample:
stringxx=null;
//T-SQL="INSERTINTOtempTable(DateTimeColumn)VALUES(xx);"
Canyouhelpmewiththisproblem?
Thanks®ards,
Ravi
Answer:
Ravi,youreinluck.Thisisactuallyaneasyfix-youjusthavetoknowwhattodo(andunfortunatelysometimesfindingtherightthingtodoishalfthebattle).
Whenyouareinsertingdataintoadatabase,theADO.NETdataprovidersandyourdatabasemaydistinguishbetweenanullobjectandanuninitializedvalue.Inyourcase,insertinganullintoaDateTimecolumncausesthedatabasetoseedthefieldwiththedefaultinitializedvalue-1/1/1900.Inrealityyouwanttotellthedatabasethatthefieldinquestionshouldremainuninitialized.Todothatthereisasingletonclassinthe.NETFrameworkthatisdesignedforpassingtoadatabasetorepresentanuninitializedvalue.ThatclassisSystem.DBNull;andspecificallytheValuepropertyoftheclass.
Toinsertarecordintoyourdatabase,andmaintaintheuninitializedstateoftheDateTimefieldsyouwoulddosomethinglikethis:
SqlCommandcmd=newSqlCommand();
cmd.Connection=con;
cmd.CommandText="INSERTINTOmyTable(Name,RegisteredDate,CancelDate)"+
"VALUES(@Name,@RegisteredDate,@CancelDate)";
cmd.Parameters.Add("@Name","DougSeven");
cmd.Parameters.Add("@RegisteredDate",DateTime.Today);
//UseSystem.DBNull.Valuetoleavethefielduninitialized
cmd.Parameters.Add("@CancelDate",System.DBNull.Value);
DimcmdAsNewSqlCommand()
cmd.Connection=con
cmd.CommandText="INSERTINTOmyTable(Name,RegisteredDate,CancelDate)"&_
"VALUES(@Name,@RegisteredDate,@CancelDate)"
cmd.Parameters.Add("@Name","DougSeven")
cmd.Parameters.Add("@RegisteredDate",DateTime.Today)
UseSystem.DBNull.Valuetoleavethefielduninitialized
cmd.Parameters.Add("@CancelDate",System.DBNull.Value)
InmanycasesIwillactuallyperformchecksonthevaluepassedtomyinsertorupdateoperationtodetermineifDBNull.ValueshouldbesenttothestoredprocedureIaminvoking.IfyouweretospendsometimelookingatthecodeIwriteintherealworld,youwouldseesomethinglikethis(thisiscodedirectfromaclientapplication):
Ifuser.FirstName=String.EmptyThen
cmd.Parameters("@FirstName").Value=System.DBNull.Value
Else
cmd.Parameters("@FirstName").Value=user.FirstName
EndIf
Ifuser.LastName=String.EmptyThen
cmd.Parameters("@LastName").Value=System.DBNull.Value
Else
cmd.Parameters("@LastName").Value=user.LastName
EndIf
Ifuser.RegisteredDate=NothingThen
cmd.Parameters("@RegisteredDate").Value=System.DBNull.Value
Else
cmd.Parameters("@RegisteredDate").Value=user.RegisteredDate
EndIf
Summary
Tosetvaluesinadatabasetotheiruninitializedstate,usetheSystem.DBNull.Valuestructure.YoucanpassthisvalueinusingaT-SQLcommand,orastoredprocedure-passingDBNull.Valueasaparameter.
其实Java之所以在曾经独步天下,就是因为他的跨平台、安全性,这两方面,效率可不是Java的强项,反而是他最短的一块挡板,虽然net总是用理论证明比.NET快。 关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。 ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。 ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。 ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。 这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。 主流网站开发语言之PHP:PHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。 关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。 但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。
页:
[1]