From 613940df2091fbd917587db97648ac6ce4d1aecc Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Sun, 12 Apr 2020 19:00:29 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20MySql=20=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E4=B8=B2=E5=8F=8D=E6=96=9C=E6=9D=A0=E6=97=A0=E6=95=88?= =?UTF-8?q?=E7=9A=84=20bug=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MySqlConnector/MySqlCodeFirstTest.cs | 7 ++++++- .../Dameng/DamengCodeFirstTest.cs | 7 ++++++- .../Default/OdbcCodeFirstTest.cs | 7 ++++++- .../MySql/MySqlCodeFirstTest.cs | 7 ++++++- .../Oracle/OracleCodeFirstTest.cs | 7 ++++++- .../PostgreSQL/PostgreSQLCodeFirstTest.cs | 7 ++++++- .../SqlServer/SqlServerCodeFirstTest.cs | 9 +++++++-- .../FreeSql.Tests/MsAccess/MsAccessCodeFirstTest.cs | 7 ++++++- FreeSql.Tests/FreeSql.Tests/MySql/MySqlCodeFirstTest.cs | 7 ++++++- .../FreeSql.Tests/Oracle/OracleCodeFirstTest.cs | 7 ++++++- .../FreeSql.Tests/PostgreSQL/PostgreSQLCodeFirstTest.cs | 7 ++++++- .../FreeSql.Tests/SqlServer/SqlServerCodeFirstTest.cs | 9 +++++++-- .../FreeSql.Tests/Sqlite/SqliteCodeFirstTest.cs | 7 ++++++- Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlAdo.cs | 8 ++++---- .../MySql/OdbcMySqlAdo/OdbcMySqlAdo.cs | 6 +++--- 15 files changed, 87 insertions(+), 22 deletions(-) diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/MySqlCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/MySqlCodeFirstTest.cs index a00a399b..fed6cd4f 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/MySqlCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/MySqlCodeFirstTest.cs @@ -275,7 +275,7 @@ namespace FreeSql.Tests.MySqlConnector testFieldSByteNullable = 99, testFieldShort = short.MaxValue, testFieldShortNullable = short.MinValue, - testFieldString = "我是中国人string", + testFieldString = "我是中国人string'\\?!@#$%^&*()_+{}}{~?><<>", testFieldTimeSpan = TimeSpan.FromSeconds(999), testFieldTimeSpanNullable = TimeSpan.FromSeconds(60), testFieldUInt = uint.MaxValue, @@ -288,6 +288,11 @@ namespace FreeSql.Tests.MySqlConnector }; item2.Id = (int)insert.AppendData(item2).ExecuteIdentity(); var newitem2 = select.Where(a => a.Id == item2.Id).ToOne(); + Assert.Equal(item2.testFieldString, newitem2.testFieldString); + + item2.Id = (int)insert.NoneParameter().AppendData(item2).ExecuteIdentity(); + newitem2 = select.Where(a => a.Id == item2.Id).ToOne(); + Assert.Equal(item2.testFieldString, newitem2.testFieldString); var items = select.ToList(); } diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/DamengCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/DamengCodeFirstTest.cs index c5120439..0fcc7897 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/DamengCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/DamengCodeFirstTest.cs @@ -270,7 +270,7 @@ namespace FreeSql.Tests.Odbc.Dameng SByteNullable = 99, Short = short.MaxValue, ShortNullable = short.MinValue, - String = "我是中国人string", + String = "我是中国人string'\\?!@#$%^&*()_+{}}{~?><<>", TimeSpan = TimeSpan.FromSeconds(999), TimeSpanNullable = TimeSpan.FromSeconds(60), UInt = uint.MaxValue, @@ -287,6 +287,11 @@ namespace FreeSql.Tests.Odbc.Dameng item2.Id = (int)insert.AppendData(item2).ExecuteIdentity(); var newitem2 = select.Where(a => a.Id == item2.Id).ToOne(); + Assert.Equal(item2.String, newitem2.String); + + item2.Id = (int)insert.NoneParameter().AppendData(item2).ExecuteIdentity(); + newitem2 = select.Where(a => a.Id == item2.Id).ToOne(); + Assert.Equal(item2.String, newitem2.String); var items = select.ToList(); } diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/OdbcCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/OdbcCodeFirstTest.cs index 1859e308..ed20c3ba 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/OdbcCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/OdbcCodeFirstTest.cs @@ -98,7 +98,7 @@ namespace FreeSql.Tests.Odbc.Default testFieldSByteNullable = sbyte.MinValue, testFieldShort = short.MaxValue, testFieldShortNullable = short.MinValue, - testFieldString = "鎴戞槸涓浗浜簊tring", + testFieldString = "鎴戞槸涓浗浜簊tring'\\?!@#$%^&*()_+{}}{~?><<>", testFieldUInt = uint.MaxValue, testFieldUIntNullable = uint.MinValue, testFieldULong = ulong.MaxValue, @@ -116,6 +116,11 @@ namespace FreeSql.Tests.Odbc.Default var item3 = insert.AppendData(item2).ExecuteIdentity(); var newitem2 = select.Where(a => a.Id == item2.Id).ToOne(); + Assert.Equal(item2.testFieldString, newitem2.testFieldString); + + item2.Id = (int)insert.NoneParameter().AppendData(item2).ExecuteIdentity(); + newitem2 = select.Where(a => a.Id == item2.Id).ToOne(); + Assert.Equal(item2.testFieldString, newitem2.testFieldString); var items = select.ToList(); } diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlCodeFirstTest.cs index ebc6c398..967151b0 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlCodeFirstTest.cs @@ -244,7 +244,7 @@ namespace FreeSql.Tests.Odbc.MySql testFieldSByteNullable = 99, testFieldShort = short.MaxValue, testFieldShortNullable = short.MinValue, - testFieldString = "我是中国人string", + testFieldString = "我是中国人string'\\?!@#$%^&*()_+{}}{~?><<>", testFieldTimeSpan = TimeSpan.FromSeconds(999), testFieldTimeSpanNullable = TimeSpan.FromSeconds(60), testFieldUInt = uint.MaxValue, @@ -263,6 +263,11 @@ namespace FreeSql.Tests.Odbc.MySql item2.Id = (int)insert.AppendData(item2).ExecuteIdentity(); var newitem2 = select.Where(a => a.Id == item2.Id).ToOne(); + Assert.Equal(item2.testFieldString, newitem2.testFieldString); + + item2.Id = (int)insert.NoneParameter().AppendData(item2).ExecuteIdentity(); + newitem2 = select.Where(a => a.Id == item2.Id).ToOne(); + Assert.Equal(item2.testFieldString, newitem2.testFieldString); var items = select.ToList(); } diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleCodeFirstTest.cs index 7eccb3bb..a9e24fc5 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleCodeFirstTest.cs @@ -270,7 +270,7 @@ namespace FreeSql.Tests.Odbc.Oracle SByteNullable = 99, Short = short.MaxValue, ShortNullable = short.MinValue, - String = "我是中国人string", + String = "我是中国人string'\\?!@#$%^&*()_+{}}{~?><<>", TimeSpan = TimeSpan.FromSeconds(999), TimeSpanNullable = TimeSpan.FromSeconds(60), UInt = uint.MaxValue, @@ -287,6 +287,11 @@ namespace FreeSql.Tests.Odbc.Oracle item2.Id = (int)insert.AppendData(item2).ExecuteIdentity(); var newitem2 = select.Where(a => a.Id == item2.Id).ToOne(); + Assert.Equal(item2.String, newitem2.String); + + item2.Id = (int)insert.NoneParameter().AppendData(item2).ExecuteIdentity(); + newitem2 = select.Where(a => a.Id == item2.Id).ToOne(); + Assert.Equal(item2.String, newitem2.String); var items = select.ToList(); } diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/PostgreSQLCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/PostgreSQLCodeFirstTest.cs index 179a66d8..c6d33cb5 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/PostgreSQLCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/PostgreSQLCodeFirstTest.cs @@ -182,7 +182,7 @@ namespace FreeSql.Tests.Odbc.PostgreSQL testFieldSByteNullable = sbyte.MinValue, testFieldShort = short.MaxValue, testFieldShortNullable = short.MinValue, - testFieldString = "我是中国人String", + testFieldString = "我是中国人string'\\?!@#$%^&*()_+{}}{~?><<>", testFieldTimeSpan = TimeSpan.FromDays(1), testFieldTimeSpanNullable = TimeSpan.FromSeconds(90), testFieldUInt = uint.MaxValue, @@ -200,6 +200,11 @@ namespace FreeSql.Tests.Odbc.PostgreSQL var item3 = insert.AppendData(item2).ExecuteInserted().First(); var newitem2 = select.Where(a => a.Id == item3.Id).ToOne(); + Assert.Equal(item2.testFieldString, newitem2.testFieldString); + + item3 = insert.NoneParameter().AppendData(item2).ExecuteInserted().First(); + newitem2 = select.Where(a => a.Id == item3.Id).ToOne(); + Assert.Equal(item2.testFieldString, newitem2.testFieldString); var items = select.ToList(); } diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/SqlServerCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/SqlServerCodeFirstTest.cs index 1eb1d44a..a0e1bb2d 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/SqlServerCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/SqlServerCodeFirstTest.cs @@ -178,7 +178,7 @@ namespace FreeSql.Tests.Odbc.SqlServer testFieldSByteNullable = sbyte.MinValue, testFieldShort = short.MaxValue, testFieldShortNullable = short.MinValue, - testFieldString = "我是中国人string", + testFieldString = "我是中国人string'\\?!@#$%^&*()_+{}}{~?><<>", testFieldTimeSpan = TimeSpan.FromSeconds(999), testFieldTimeSpanNullable = TimeSpan.FromSeconds(30), testFieldUInt = uint.MaxValue, @@ -197,7 +197,12 @@ namespace FreeSql.Tests.Odbc.SqlServer var sqlTestUpdate = g.sqlserver.Update().SetSource(item3NP).NoneParameter().ToSql(); var item3 = insert.AppendData(item2).ExecuteInserted(); - var newitem2 = select.Where(a => a.Id == item2.Id).ToOne(); + var newitem2 = select.Where(a => a.Id == item3[0].Id).ToOne(); + Assert.Equal(item2.testFieldString, newitem2.testFieldString); + + item3 = insert.NoneParameter().AppendData(item2).ExecuteInserted(); + newitem2 = select.Where(a => a.Id == item3[0].Id).ToOne(); + Assert.Equal(item2.testFieldString, newitem2.testFieldString); var items = select.ToList(); } diff --git a/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessCodeFirstTest.cs index 826cb13b..e11d0b2b 100644 --- a/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessCodeFirstTest.cs @@ -266,7 +266,7 @@ namespace FreeSql.Tests.MsAccess SByteNullable = 99, Short = short.MaxValue, ShortNullable = short.MinValue, - String = "我是中国人string", + String = "我是中国人string'\\?!@#$%^&*()_+{}}{~?><<>", TimeSpan = TimeSpan.FromSeconds(999), TimeSpanNullable = TimeSpan.FromSeconds(60), UInt = uint.MaxValue, @@ -279,6 +279,11 @@ namespace FreeSql.Tests.MsAccess }; item2.Id = (int)insert.AppendData(item2).ExecuteIdentity(); var newitem2 = select.Where(a => a.Id == item2.Id).ToOne(); + Assert.Equal(item2.String, newitem2.String); + + item2.Id = (int)insert.NoneParameter().AppendData(item2).ExecuteIdentity(); + newitem2 = select.Where(a => a.Id == item2.Id).ToOne(); + Assert.Equal(item2.String, newitem2.String); var items = select.ToList(); } diff --git a/FreeSql.Tests/FreeSql.Tests/MySql/MySqlCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/MySql/MySqlCodeFirstTest.cs index b3ccdd26..27a3ab52 100644 --- a/FreeSql.Tests/FreeSql.Tests/MySql/MySqlCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/MySql/MySqlCodeFirstTest.cs @@ -274,7 +274,7 @@ namespace FreeSql.Tests.MySql testFieldSByteNullable = 99, testFieldShort = short.MaxValue, testFieldShortNullable = short.MinValue, - testFieldString = "我是中国人string", + testFieldString = "我是中国人string'\\?!@#$%^&*()_+{}}{~?><<>", testFieldTimeSpan = TimeSpan.FromSeconds(999), testFieldTimeSpanNullable = TimeSpan.FromSeconds(60), testFieldUInt = uint.MaxValue, @@ -293,6 +293,11 @@ namespace FreeSql.Tests.MySql item2.Id = (int)insert.AppendData(item2).ExecuteIdentity(); var newitem2 = select.Where(a => a.Id == item2.Id).ToOne(); + Assert.Equal(item2.testFieldString, newitem2.testFieldString); + + item2.Id = (int)insert.NoneParameter().AppendData(item2).ExecuteIdentity(); + newitem2 = select.Where(a => a.Id == item2.Id).ToOne(); + Assert.Equal(item2.testFieldString, newitem2.testFieldString); var items = select.ToList(); } diff --git a/FreeSql.Tests/FreeSql.Tests/Oracle/OracleCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/Oracle/OracleCodeFirstTest.cs index 57da44cf..8080c0fa 100644 --- a/FreeSql.Tests/FreeSql.Tests/Oracle/OracleCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/Oracle/OracleCodeFirstTest.cs @@ -368,7 +368,7 @@ namespace FreeSql.Tests.Oracle SByteNullable = 99, Short = short.MaxValue, ShortNullable = short.MinValue, - String = "我是中国人string", + String = "我是中国人string'\\?!@#$%^&*()_+{}}{~?><<>", TimeSpan = TimeSpan.FromSeconds(999), TimeSpanNullable = TimeSpan.FromSeconds(60), UInt = uint.MaxValue, @@ -385,6 +385,11 @@ namespace FreeSql.Tests.Oracle item2.Id = (int)insert.AppendData(item2).ExecuteIdentity(); var newitem2 = select.Where(a => a.Id == item2.Id).ToOne(); + Assert.Equal(item2.String, newitem2.String); + + item2.Id = (int)insert.NoneParameter().AppendData(item2).ExecuteIdentity(); + newitem2 = select.Where(a => a.Id == item2.Id).ToOne(); + Assert.Equal(item2.String, newitem2.String); var items = select.ToList(); } diff --git a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLCodeFirstTest.cs index 700f2d6d..ca7ab03e 100644 --- a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLCodeFirstTest.cs @@ -353,7 +353,7 @@ namespace FreeSql.Tests.PostgreSQL testFieldShortArray = new short[] { 1, 2, 3, 4, 5 }, testFieldShortArrayNullable = new short?[] { 1, 2, 3, null, 4, 5 }, testFieldShortNullable = short.MinValue, - testFieldString = "我是中国人String", + testFieldString = "我是中国人string'\\?!@#$%^&*()_+{}}{~?><<>", testFieldStringArray = new[] { "我是中国人String1", "我是中国人String2", null, "我是中国人String3" }, testFieldTimeSpan = TimeSpan.FromDays(1), testFieldTimeSpanArray = new[] { TimeSpan.FromDays(1), TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(60) }, @@ -385,6 +385,11 @@ namespace FreeSql.Tests.PostgreSQL var item3 = insert.AppendData(item2).ExecuteInserted().First(); var newitem2 = select.Where(a => a.Id == item3.Id && object.Equals(a.testFieldJToken["a"], "1")).ToOne(); + Assert.Equal(item2.testFieldString, newitem2.testFieldString); + + item3 = insert.NoneParameter().AppendData(item2).ExecuteInserted().First(); + newitem2 = select.Where(a => a.Id == item3.Id && object.Equals(a.testFieldJToken["a"], "1")).ToOne(); + Assert.Equal(item2.testFieldString, newitem2.testFieldString); var items = select.ToList(); } diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerCodeFirstTest.cs index 368eddf8..a835f5e5 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerCodeFirstTest.cs @@ -181,7 +181,7 @@ namespace FreeSql.Tests.SqlServer testFieldSByteNullable = sbyte.MinValue, testFieldShort = short.MaxValue, testFieldShortNullable = short.MinValue, - testFieldString = "我是中国人string", + testFieldString = "我是中国人string'\\?!@#$%^&*()_+{}}{~?><<>", testFieldTimeSpan = TimeSpan.FromSeconds(999), testFieldTimeSpanNullable = TimeSpan.FromSeconds(30), testFieldUInt = uint.MaxValue, @@ -200,7 +200,12 @@ namespace FreeSql.Tests.SqlServer var sqlTestUpdate = g.sqlserver.Update().SetSource(item3NP).NoneParameter().ToSql(); var item3 = insert.AppendData(item2).ExecuteInserted(); - var newitem2 = select.Where(a => a.Id == item3NP[0].Id).ToOne(); + var newitem2 = select.Where(a => a.Id == item3[0].Id).ToOne(); + Assert.Equal(item2.testFieldString, newitem2.testFieldString); + + item3 = insert.NoneParameter().AppendData(item2).ExecuteInserted(); + newitem2 = select.Where(a => a.Id == item3[0].Id).ToOne(); + Assert.Equal(item2.testFieldString, newitem2.testFieldString); var items = select.ToList(); } diff --git a/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteCodeFirstTest.cs index 03b30986..d697b47c 100644 --- a/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteCodeFirstTest.cs @@ -293,7 +293,7 @@ namespace FreeSql.Tests.Sqlite SByteNullable = 99, Short = short.MaxValue, ShortNullable = short.MinValue, - String = "我是中国人string", + String = "我是中国人string'\\?!@#$%^&*()_+{}}{~?><<>", TimeSpan = TimeSpan.FromSeconds(999), TimeSpanNullable = TimeSpan.FromSeconds(60), UInt = uint.MaxValue, @@ -306,6 +306,11 @@ namespace FreeSql.Tests.Sqlite }; item2.Id = (int)insert.AppendData(item2).ExecuteIdentity(); var newitem2 = select.Where(a => a.Id == item2.Id).ToOne(); + Assert.Equal(item2.String, newitem2.String); + + item2.Id = (int)insert.NoneParameter().AppendData(item2).ExecuteIdentity(); + newitem2 = select.Where(a => a.Id == item2.Id).ToOne(); + Assert.Equal(item2.String, newitem2.String); var items = select.ToList(); } diff --git a/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlAdo.cs b/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlAdo.cs index 2eeaa75b..17ea6496 100644 --- a/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlAdo.cs +++ b/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlAdo.cs @@ -42,9 +42,9 @@ namespace FreeSql.MySql if (param is bool || param is bool?) return (bool)param ? 1 : 0; else if (param is string || param is char) - return string.Concat("'", param.ToString().Replace("'", "''"), "'"); + return string.Concat("'", param.ToString().Replace("'", "''").Replace("\\", "\\\\"), "'"); //鍙湁 mysql 闇瑕佸鐞嗗弽鏂滄潬 else if (param is Enum) - return string.Concat("'", param.ToString().Replace("'", "''"), "'"); //((Enum)val).ToInt64(); + return string.Concat("'", param.ToString().Replace("'", "''").Replace("\\", "\\\\"), "'"); //((Enum)val).ToInt64(); else if (decimal.TryParse(string.Concat(param), out var trydec)) return param; else if (param is DateTime || param is DateTime?) @@ -54,11 +54,11 @@ namespace FreeSql.MySql else if (param is byte[]) return $"0x{CommonUtils.BytesSqlRaw(param as byte[])}"; else if (param is MygisGeometry) - return string.Concat("ST_GeomFromText('", (param as MygisGeometry).AsText().Replace("'", "''"), "')"); + return string.Concat("ST_GeomFromText('", (param as MygisGeometry).AsText().Replace("'", "''").Replace("\\", "\\\\"), "')"); else if (param is IEnumerable) return AddslashesIEnumerable(param, mapType, mapColumn); - return string.Concat("'", param.ToString().Replace("'", "''"), "'"); + return string.Concat("'", param.ToString().Replace("'", "''").Replace("\\", "\\\\"), "'"); } protected override DbCommand CreateCommand() diff --git a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlAdo/OdbcMySqlAdo.cs b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlAdo/OdbcMySqlAdo.cs index 41aa2ed3..4b9196ca 100644 --- a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlAdo/OdbcMySqlAdo.cs +++ b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlAdo/OdbcMySqlAdo.cs @@ -42,9 +42,9 @@ namespace FreeSql.Odbc.MySql if (param is bool || param is bool?) return (bool)param ? 1 : 0; else if (param is string || param is char) - return string.Concat("'", param.ToString().Replace("'", "''"), "'"); + return string.Concat("'", param.ToString().Replace("'", "''").Replace("\\", "\\\\"), "'"); //鍙湁 mysql 闇瑕佸鐞嗗弽鏂滄潬 else if (param is Enum) - return string.Concat("'", param.ToString().Replace("'", "''"), "'"); //((Enum)val).ToInt64(); + return string.Concat("'", param.ToString().Replace("'", "''").Replace("\\", "\\\\"), "'"); //((Enum)val).ToInt64(); else if (decimal.TryParse(string.Concat(param), out var trydec)) return param; else if (param is DateTime || param is DateTime?) @@ -56,7 +56,7 @@ namespace FreeSql.Odbc.MySql else if (param is IEnumerable) return AddslashesIEnumerable(param, mapType, mapColumn); - return string.Concat("'", param.ToString().Replace("'", "''"), "'"); + return string.Concat("'", param.ToString().Replace("'", "''").Replace("\\", "\\\\"), "'"); } protected override DbCommand CreateCommand()