[哭]使用Data Access 2 插入Ntext类型数据时SqlParameter不指定类型的问题 , ,请为我解惑

实在郁闷 ,请大家为我解惑。
同发csdn:http://community.csdn.net/Expert/topic/4315/4315539.xml?temp=.3931848

原来的代码

 SqlHelper.ExecuteNonQuery(connectionString, CommandType.StoredProcedure,
  FullyQualifiedSprocName("P_InsertNtextData"),
  new SqlParameter("@Id", f.Id),
  new SqlParameter("@NtextData",f.Data));
如果 f.Data过长,就莫名其妙的异常,

---------------------------

---------------------------
当前命令发生了严重错误。应放弃任何可能产生的结果。
---------------------------
确定  
---------------------------

---------------------------

---------------------------
常规网络错误。请检查您的网络文档。
---------------------------
确定  
---------------------------

Google baidu 都翻了个底朝天,也没个能安慰我的信息。
试验了一下午,最后试出来写个测试字符串"aaaa"就能插入
尝试了如下代码

 SqlParameter ntext = new SqlParameter("@NtextData",SqlDbType.NText);
 ntext.Value = f.Data;
 SqlHelper.ExecuteNonQuery(connectionString, CommandType.StoredProcedure,
  FullyQualifiedSprocName("P_InsertNtextData"),
  new SqlParameter("@Id", f.Id),
  ntext);

成功,怎么也想不通这换汤不换药的方法为何能够成功,
翻msdn,
打自己一巴掌

获取或设置参数的 SqlDbType。

[Visual Basic]
Public Property SqlDbType As SqlDbType

[C#]
public SqlDbType SqlDbType {get; set;}


属性值
SqlDbType 值之一。默认值为 NVarChar

然而我又看到另外一个构造器的重载这样说明

[Visual Basic]
Public Sub New( _
   ByVal parameterName As String, _
   ByVal value As Object _
)

[C#]
public SqlParameter(
   string parameterName,
   object value
);


参数
parameterName
要映射的参数的名称。
value
一个 Object,它是 SqlParameter 的值。
备注
当在 value 参数中指定 Object 时,SqlDbType 将从 Object 的 .NET Framework 类型推断出。

这又如何解释??

你可能感兴趣的:(parameter)