From e729424c163936acd5e26970763454da261eb806 Mon Sep 17 00:00:00 2001 From: Nagappan Alagappan Date: Tue, 24 Jul 2007 06:42:24 +0000 Subject: [PATCH] 2007-07-24 Nagappan A * SqlParameterTest.cs (ParameterSizeTest): Fixes Large strings truncated with SqlClient - Bug # 82170. svn path=/trunk/mcs/; revision=82531 --- .../System.Data.SqlClient/ChangeLog | 5 ++ .../System.Data.SqlClient/SqlParameterTest.cs | 59 +++++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/ChangeLog b/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/ChangeLog index ae0e065ecf1..3e8bed31226 100644 --- a/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/ChangeLog +++ b/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/ChangeLog @@ -1,3 +1,8 @@ +2007-07-24 Nagappan A + + * SqlParameterTest.cs (ParameterSizeTest): Fixes Large strings + truncated with SqlClient - Bug # 82170. + 2007-07-22 Nagappan A * SqlTransactionTest.cs: Added exception handling. diff --git a/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/SqlParameterTest.cs b/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/SqlParameterTest.cs index c362dfd4bb1..2145ca0c69f 100644 --- a/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/SqlParameterTest.cs +++ b/mcs/class/System.Data/Test/ProviderTests/System.Data.SqlClient/SqlParameterTest.cs @@ -115,6 +115,65 @@ namespace MonoTests.System.Data.SqlClient } + //testcase for #82170 + [Test] + public void ParameterSizeTest () + { + SqlConnection conn = new SqlConnection (ConnectionManager.Singleton.ConnectionString); + conn.Open (); + string longstring = new String('x', 20480); + SqlCommand cmd; + SqlParameter prm; + cmd = new SqlCommand ("create table #text1 (ID int not null, Val1 ntext)", conn); + cmd.ExecuteNonQuery (); + cmd.CommandText = "INSERT INTO #text1(ID,Val1) VALUES (@ID,@Val1)"; + prm = new SqlParameter (); + prm.ParameterName = "@ID"; + prm.Value = 1; + cmd.Parameters.Add (prm); + + prm = new SqlParameter (); + prm.ParameterName = "@Val1"; + prm.Value = longstring; + prm.SqlDbType = SqlDbType.NText; // Comment and enjoy the truncation + cmd.Parameters.Add (prm); + cmd.ExecuteNonQuery (); + cmd = new SqlCommand ("select datalength(Val1) from #text1", conn); + Assert.AreEqual (20480 * 2, cmd.ExecuteScalar (), "#1"); + + cmd.CommandText = "INSERT INTO #text1(ID,Val1) VALUES (@ID,@Val1)"; + prm = new SqlParameter (); + prm.ParameterName = "@ID"; + prm.Value = 1; + cmd.Parameters.Add (prm); + + prm = new SqlParameter (); + prm.ParameterName = "@Val1"; + prm.Value = longstring; + //prm.SqlDbType = SqlDbType.NText; + cmd.Parameters.Add (prm); + cmd.ExecuteNonQuery (); + cmd = new SqlCommand ("select datalength(Val1) from #text1", conn); + Assert.AreEqual (20480 * 2, cmd.ExecuteScalar (), "#2"); + + cmd.CommandText = "INSERT INTO #text1(ID,Val1) VALUES (@ID,@Val1)"; + prm = new SqlParameter (); + prm.ParameterName = "@ID"; + prm.Value = 1; + cmd.Parameters.Add (prm); + + prm = new SqlParameter (); + prm.ParameterName = "@Val1"; + prm.Value = longstring; + prm.SqlDbType = SqlDbType.VarChar; + cmd.Parameters.Add (prm); + cmd.ExecuteNonQuery (); + cmd = new SqlCommand ("select datalength(Val1) from #text1", conn); + Assert.AreEqual (20480 * 2, cmd.ExecuteScalar (), "#3"); + cmd = new SqlCommand ("drop table #text1", conn); + cmd.ExecuteNonQuery (); + conn.Close (); + } #if NET_2_0 [Test] public void ResetSqlDbTypeTest () -- 2.25.1