ExecuteNonQuery
我正在尝试通过(以及DatabaseFactory.CreateDatabase()
来自 MS Practices Enterprise Library)插入 > 8000 个字符(从网页提交)。存储过程将参数定义为VARCHAR(MAX)
. 列是VARCHAR(MAX)
。理论上,2GB的数据应该是可以通过的。
我该怎么做才能传递数据> 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);
}