我试图通过ExecuteNonQuery
(和MS Practices Enterprise Library中的DatabaseFactory.CreateDatabase()
)插入> 8000个字符(从网页提交)。存储过程将参数定义为VARCHAR(MAX)
。该栏目为VARCHAR(MAX)
。理论上,2GB的数据应该可以通过。如何使用ExecuteNonQuery在VARCHAR(MAX)列中插入多于8000个字符?
我能做些什么来传递数据> 8000?我设置了一个断点,并且string.Length
确实大于8K。
public static void UpdateTerms(string terms)
{
Database db = DatabaseFactory.CreateDatabase();
db.ExecuteNonQuery("uspUpdateTerms", terms);
}
存储过程:
ALTER PROCEDURE [dbo].[uspUpdateTerms]
@Terms VARCHAR(MAX)
AS
SET NOCOUNT ON
INSERT INTO tblTerms(Terms)
VALUES(@Terms)
表(只是为了证明这一切都是varchar(max)
):
CREATE TABLE [dbo].[tblTerms](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Terms] [varchar](max) NULL,
[DateUpdated] [datetime] NULL,
。
更新:
我只是改变了代码,这似乎工作,虽然我不知道有什么区别:
public static void UpdateTerms(string terms)
{
Database db = DatabaseFactory.CreateDatabase();
DbCommand cmd = db.GetStoredProcCommand("uspUpdateTerms");
db.AddInParameter(cmd, "Terms", DbType.String, terms);
db.ExecuteNonQuery(cmd);
}
有趣的是,如果我做的:插入测试 (数据) 值 (@x + @x + @x) 选择数据,从测试莱恩(数据)......它显示了24000(不30K),但显然允许> 8K –
@twoleggedhorse - 'a'被视为'varchar(1)'不是'nvarchar(8000)'(甚至没有这样的数据类型) –
我的意思是说VARCHAR不是NVARCHAR,我已转贴我的评论,因为我不能再编辑它 – twoleggedhorse