1
我有一个控制台应用程序,我通过Mono在Mac OS X上运行。虽然它在Windows操作系统上正确执行,但它只返回nvarchar(max)变量的第一个字符。下面是C#代码:MonoMac控制台应用程序只返回nvarchar的第一个字符(最大)
SqlConnection myConnection = new SqlConnection(Variables.connectionString());
SqlCommand myCommand = new SqlCommand("IndexPageDetailsGet", myConnection);
myCommand.CommandType = CommandType.StoredProcedure;
SqlParameter parameterIndexPageID = new SqlParameter("@IndexPageID", SqlDbType.Int);
parameterIndexPageID.Value = indexPageID;
myCommand.Parameters.Add(parameterIndexPageID);
SqlParameter parameterIndexPageText = new SqlParameter("@IndexPageText", SqlDbType.NVarChar, -1);
parameterIndexPageText.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterIndexPageText);
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
return (string)parameterIndexPageText.Value; // Only returns the first character
这里是存储过程:
ALTER PROCEDURE [dbo].[IndexPageDetailsGet]
(
@IndexPageID int,
@IndexPageText nvarchar(max) OUTPUT
)
AS SELECT
@IndexPageText = IndexPageText
FROM
IndexPages
WHERE
IndexPageID = @IndexPageID
有其他人共同见证了这一行为和/或不知道如何解决它?
编辑:这是我的单声道版本信息:
MonoDevelop的3.0.3.2
运行:
单2.10.9(压缩档)
GTK 10年2月24日
GTK#(2.12.0.0)
包装版本:210090011
代码似乎罚款 - 只是胡乱猜测 - 你试过参数的最大大小设置为'Int.MaxValue'(而不是的-1)?像'新的SqlParameter(“@ IndexPageText”,SqlDbType.NVarChar,Int.MaxValue);' – 2012-07-07 09:31:55
谢谢。我尝试了你的建议,但得到一个异常: 未处理的异常:System.Data.SqlClient.SqlException:传入的表格数据流(TDS)远程过程调用(RPC)协议流不正确。参数6(“@IndexPageText”):数据类型0xE7的数据长度或元数据长度无效。 – 2012-07-07 10:14:27