来一篇关于NET的请为你的SqlParameter的参数设置长度(size属性)
它有很多缺点的,有兴趣可以到网上去搜索一下。于是微软有发明了“下一代”C++:C++/CLI语言,这个可以解决在.NETFramework中,托管C++产生的问题。在《程序员》杂志上,lippman和李建中合作连载介绍了C++/CLI语言。看到良多伴侣在实例化SqlParameter时,一般都没有指定参数的长度就间接给参数赋值了。就像上面的写法:newSqlParameter("@address",SqlDbType.Varchar){Value=address};
之前也一向都觉的加与不加参数长度应当没有甚么区分,仅是写法上的分歧罢了,今天看到一年老的贴子,才分明实在二者纷歧样的,为了进步sql实行速率,请为SqlParameter参数加上size属性。
上面我们剖析一下二者的区分:
依据MSDN注释:假如未在size参数中显式设置Size,则从dbType参数的值揣度出该巨细。
假如你以为下面的揣度出该巨细是指从SqlDbType范例揣度,那你就错了,它实践上是从你传过去的参数的值来揣度的,好比传送过去的值是"shengzhen",则size值为9,"shanghai",则size值为8。那末,分歧的size值会激发甚么样的了局呢?且经测试发明,size的值分歧时,会招致数据库的实行企图不会重用,如许就会每次实行sql的时分从头天生新的实行企图,而华侈数据库实行工夫。
好比:
stringsql="selecttop1*fromtable1whereaddress=@address";
SqlParameter[]parameter=newSqlParameter("@address",SqlDbType.VarChar){Value="shanghai"};
SqlHelper.ExecuteReader(ConnectionString,CommandType.Text,sql,parameter)
我们经由过程数据库跟踪工具SqlProfiler捕捉到的sql以下:
execsp_executesqlNselecttop1*fromtable1whereaddress=@address,N@addressnvarchar(8),@address=Nshanghai
假如把参数的值改成shengzhen,则经由过程SqlProfiler捕捉到的sql以下:
execsp_executesqlNselecttop1*fromtable1whereaddress=@address,N@addressnvarchar(9),@o=Nshengzhen
然后经由过程上面的sql来测试实行企图是不是有重用:
--清空实行企图缓存
DBCCFREESYSTEMCACHE(ALL)
DBCCFREEPROCCACHE
GO
execsp_executesqlNselecttop1*fromtable1whereaddress=@address,N@addressnvarchar(8),@address=Nshanghai
GO
SELECT*FROMsys.dm_exec_cached_plansWHEREcacheobjtype=CompiledPlan
GO
execsp_executesqlNselecttop1*fromtable1whereaddress=@address,N@addressnvarchar(9),@o=Nshengzhen
GO
SELECT*FROMsys.dm_exec_cached_plansWHEREcacheobjtype=CompiledPlan
GO
你会发明,第一条sql与第二条sql会各自天生本人的实行企图,而假如@address参数的长度一样的话,会利用统一个实行企图。
总结:
实例化SqlParameter时,假如是字符型,必定要指定size属性,如最下面的界说,应当修正为:
newSqlParameter("@address",SqlDbType.Varchar,4000){Value=address};
假如是Int、Float、Bigint,DateTime之类的参数,能够不必指定size属性。但假如size指定毛病,则大概呈现没法预知的毛病。c语言的编译器,几乎是所有新平台都有的。因此从这点上看,c语言的程序,比其他任何语言更加容易跨平台。 提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。 asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦! 逐步缩小出错代码段的范围,最终确定错误代码的位置。 目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案. ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。 ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。 目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案. HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了. asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源 关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。 主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。
页:
[1]