[哭]使用Data Access 2 插入Ntext类型数据时SqlParameter不指定类型的问题 ,请为我解惑
原来的代码
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 类型推断出。
这又如何解释??
同发:
http://huobazi.cnblogs.com/archive/2005/10/10/251251.html