I am trying to insert > 8000 characters (submit from a web page) via ExecuteNonQuery
(and DatabaseFactory.CreateDatabase()
from MS Practices Enterprise Library). The stored procedure defines the parameter as VARCHAR(MAX)
. The column is VARCHAR(MAX)
. In theory, 2GB of data should be able to be passed.
What can I do to pass data > 8000? I set a breakpoint and the string.Length
is indeed > 8K.
public static void UpdateTerms(string terms)
{
Database db = DatabaseFactory.CreateDatabase();
db.ExecuteNonQuery("uspUpdateTerms", terms);
}
Stored procedure:
ALTER PROCEDURE [dbo].[uspUpdateTerms]
@Terms VARCHAR(MAX)
AS
SET NOCOUNT ON
INSERT INTO tblTerms(Terms)
VALUES(@Terms)
Table (just to show that everything is varchar(max)
):
CREATE TABLE [dbo].[tblTerms](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Terms] [varchar](max) NULL,
[DateUpdated] [datetime] NULL,
.
Update:
I just changed the code, and this seems to work, though I am not sure what the difference is:
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);
}