new SqlParameter("@content", SqlDbType.VarChar,30) 里的30,有30和没有写30有什么区别

new   SqlParameter( "@title ",   SqlDbType.Int,4),
new   SqlParameter( "@content ",   SqlDbType.VarChar,30),

这里的4,30,写上和没有写有什么区别吗?

4和30一般对应的数据库的大小,整型大多是4个字节,不写问题也不大

这个参数指的是参数长度,指定size则当执行cmd命令时,只传递不超过指定size的数据
比如存储过程中定义参数长度为100,commandparameter指定size为5,则执行存储过程时,存储过程接收的参数长度为5。如果不指定size,则size为数据类型的最大长度,执行上面的存储过程时,存储过程接收的参数不超过100

建议能写上就写上
不写的话,它是以默认的长度,会导致字符串丢失等问题

VarChar最好写上,我有一次程序就出现过,如果字符串超出它会截去多出的部分
Int   可以不写一般很难超出

来自:http://topic.csdn.net/u/20070527/09/bd116f8b-3600-491c-8656-e3e6e4ca8431.html

例:
create   ALTER   PROCEDURE   dbo._test2
(@Name   varchar(100),
@Ret   int   =0   output  
  )

AS
set   @ret   =   len(@name)
指定长度时
param=new   SqlParameter( "@Name ",   SqlDbType.VarChar,5)
param.Value= "djfkejodkfjdkf "
则执行命令后参数@Ret的值为5

本人测式过,以上说的没有错,但是在我的一个ORM里面可能是跟我用的SQLHelper.cs有关系吧size失效了,我还在找原因,希望高手可以指教!

原文地址:https://www.cnblogs.com/SALIN/p/1770546.html