- 修复 Odbc 自定义 N'' 无效;#1332

This commit is contained in:
2881099 2022-11-13 23:34:02 +08:00
parent 07f2ee7be6
commit 3c0c106cc3
3 changed files with 34 additions and 10 deletions

View File

@ -4,6 +4,7 @@ using FreeSql.Extensions;
using FreeSql.Internal;
using FreeSql.Internal.CommonProvider;
using FreeSql.Internal.Model;
using FreeSql.Odbc.Default;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
@ -381,8 +382,39 @@ namespace base_entity
}
public enum JoinTest01Enum { f1, f2, f3 }
public class AccessOdbcAdapter : OdbcAdapter
{
public override string UnicodeStringRawSql(object value, ColumnInfo mapColumn) => value == null ? "NULL" : string.Concat("'", value.ToString().Replace("'", "''"), "'");
}
private static IFreeSql CreateInstance(string connectString, DataType type)
{
IFreeSql client = new FreeSqlBuilder()
.UseConnectionString(type, connectString)
.Build();
if (DataType.Odbc.Equals(type))
{
client.SetOdbcAdapter(new AccessOdbcAdapter());
}
return client;
}
static void Main(string[] args)
{
using (IFreeSql client = CreateInstance(@"Driver={Microsoft Access Driver (*.mdb)};DBQ=d:/accdb/2007.accdb", DataType.Odbc))
{
Dictionary<string, object> data = new Dictionary<string, object>();
data.Add("ExpNo", "RSP0950008");
data.Add("SPoint", "RSP0950004");
data.Add("EPoint", "RSP095000440");
data.Add("PType", "RS");
data.Add("GType", "窨井轮廓线");
data.Add("LineStyle", 2);
data.Add("Memo", null);
data.Add("ClassID", null);
var kdkdksqlxx = client.InsertDict(data).AsTable("FZLINE").ToSql();
}
BaseModel<User1>.fsql = 1;
BaseModel<UserGroup>.fsql = 2;
Console.WriteLine(BaseModel<User1>.fsql);

View File

@ -37,7 +37,8 @@ namespace FreeSql.Odbc.Default
return ret;
});
public override string FormatSql(string sql, params object[] args) => sql?.FormatOdbc(args);
static FreeSql.Odbc.Default.OdbcAdo _customAdo = new FreeSql.Odbc.Default.OdbcAdo();
public override string FormatSql(string sql, params object[] args) => (_orm?.Ado as OdbcAdo)?.Addslashes(sql, args) ?? _customAdo.Addslashes(sql, args);
public override string QuoteSqlName(params string[] name)
{
if (name.Length == 1)

View File

@ -37,15 +37,6 @@
internal static string FormatOdbcPostgreSQL(this string that, params object[] args) => _odbcPostgreSQLAdo.Addslashes(that, args);
static FreeSql.Odbc.PostgreSQL.OdbcPostgreSQLAdo _odbcPostgreSQLAdo = new FreeSql.Odbc.PostgreSQL.OdbcPostgreSQLAdo();
/// <summary>
/// 特殊处理类似 string.Format 的使用方法,防止注入,以及 IS NULL 转换
/// </summary>
/// <param name="that"></param>
/// <param name="args"></param>
/// <returns></returns>
internal static string FormatOdbc(this string that, params object[] args) => _odbcAdo.Addslashes(that, args);
static FreeSql.Odbc.Default.OdbcAdo _odbcAdo = new FreeSql.Odbc.Default.OdbcAdo();
/// <summary>
/// 特殊处理类似 string.Format 的使用方法,防止注入,以及 IS NULL 转换
/// </summary>