精灵巫婆 发表于 2015-1-16 14:21:31

来一篇关于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语言的程序,比其他任何语言更加容易跨平台。

飘飘悠悠 发表于 2015-1-18 13:33:12

提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。

admin 发表于 2015-1-25 22:21:27

asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦!

若相依 发表于 2015-2-4 10:18:51

逐步缩小出错代码段的范围,最终确定错误代码的位置。

愤怒的大鸟 发表于 2015-2-9 22:05:06

目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案.

透明 发表于 2015-2-27 23:46:11

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。

小女巫 发表于 2015-3-9 16:44:39

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。

蒙在股里 发表于 2015-3-17 01:08:02

目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案.

老尸 发表于 2015-3-17 01:08:02

HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.

变相怪杰 发表于 2015-3-17 01:08:03

asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源

小魔女 发表于 2015-3-17 01:07:59

关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。

只想知道 发表于 2015-3-23 11:50:29

主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。
页: [1]
查看完整版本: 来一篇关于NET的请为你的SqlParameter的参数设置长度(size属性)