mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-23 12:33:44 +08:00
TDSQLForPGODBC同步PGSQL修改
This commit is contained in:
@@ -18,6 +18,66 @@ namespace SqlSugar.TDSQLForPGODBC
|
||||
{
|
||||
public class UtilMethods
|
||||
{
|
||||
public static string EscapeLikeValue(ISqlSugarClient db, string value, char wildcard = '%')
|
||||
{
|
||||
var dbType = db.CurrentConnectionConfig.DbType;
|
||||
if (db.CurrentConnectionConfig?.MoreSettings?.DatabaseModel != null)
|
||||
{
|
||||
dbType = db.CurrentConnectionConfig.MoreSettings.DatabaseModel.Value;
|
||||
}
|
||||
if (string.IsNullOrEmpty(value))
|
||||
return value;
|
||||
|
||||
string wildcardStr = wildcard.ToString();
|
||||
|
||||
switch (dbType)
|
||||
{
|
||||
// 支持标准 SQL LIKE 转义,通常使用中括号 [] 或反斜杠 \ 进行转义
|
||||
case DbType.SqlServer:
|
||||
case DbType.Access:
|
||||
case DbType.Odbc:
|
||||
case DbType.TDSQLForPGODBC:
|
||||
// SQL Server 使用中括号转义 %, _ 等
|
||||
value = value.Replace("[", "[[]")
|
||||
.Replace("]", "[]]")
|
||||
.Replace(wildcardStr, $"[{wildcard}]");
|
||||
break;
|
||||
|
||||
// PostgreSQL 风格数据库,使用反斜杠进行 LIKE 转义
|
||||
case DbType.PostgreSQL:
|
||||
case DbType.OpenGauss:
|
||||
case DbType.TDSQL:
|
||||
case DbType.GaussDB:
|
||||
case DbType.GaussDBNative:
|
||||
// MySQL 和兼容库,使用反斜杠进行转义
|
||||
case DbType.MySql:
|
||||
case DbType.MySqlConnector:
|
||||
case DbType.Tidb:
|
||||
case DbType.PolarDB:
|
||||
case DbType.OceanBase:
|
||||
case DbType.Oracle:
|
||||
case DbType.OceanBaseForOracle:
|
||||
case DbType.HG:
|
||||
case DbType.Dm:
|
||||
case DbType.GBase:
|
||||
case DbType.DB2:
|
||||
case DbType.HANA:
|
||||
case DbType.GoldenDB:
|
||||
case DbType.Sqlite:
|
||||
case DbType.DuckDB:
|
||||
case DbType.QuestDB:
|
||||
case DbType.Doris:
|
||||
case DbType.Xugu:
|
||||
case DbType.Vastbase:
|
||||
default:
|
||||
value = value
|
||||
.Replace(wildcardStr, "\\\\" + wildcard);
|
||||
break;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
public static List<SugarParameter> CopySugarParameters(List<SugarParameter> pars)
|
||||
{
|
||||
@@ -193,6 +253,14 @@ namespace SqlSugar.TDSQLForPGODBC
|
||||
var p = ParameterConverter.Invoke(obj, new object[] { value, 100 + index }) as SugarParameter;
|
||||
return p;
|
||||
}
|
||||
internal static object QueryConverter(int index, ISqlSugarClient db, IDataReader dataReader, EntityInfo entity, EntityColumnInfo columnInfo)
|
||||
{
|
||||
var type = columnInfo.SqlParameterDbType as Type;
|
||||
var ParameterConverter = type.GetMethod("QueryConverter").MakeGenericMethod(columnInfo.PropertyInfo.PropertyType);
|
||||
var obj = Activator.CreateInstance(type);
|
||||
var p = ParameterConverter.Invoke(obj, new object[] { dataReader, index });
|
||||
return p;
|
||||
}
|
||||
internal static bool IsErrorParameterName(ConnectionConfig connectionConfig, DbColumnInfo columnInfo)
|
||||
{
|
||||
return connectionConfig.MoreSettings?.IsCorrectErrorSqlParameterName == true &&
|
||||
@@ -610,6 +678,14 @@ namespace SqlSugar.TDSQLForPGODBC
|
||||
{
|
||||
return (char)(bytes)[0];
|
||||
}
|
||||
else if (value is DateTime && destinationType == typeof(TimeSpan))
|
||||
{
|
||||
value = Convert.ToDateTime(value).TimeOfDay;
|
||||
}
|
||||
else if (value is DateTime && destinationType.FullName == "System.TimeOnly")
|
||||
{
|
||||
value = Convert.ToDateTime(value).TimeOfDay;
|
||||
}
|
||||
var destinationConverter = TypeDescriptor.GetConverter(destinationType);
|
||||
if (destinationConverter != null && destinationConverter.CanConvertFrom(value.GetType()))
|
||||
return destinationConverter.ConvertFrom(null, culture, value);
|
||||
@@ -722,7 +798,8 @@ namespace SqlSugar.TDSQLForPGODBC
|
||||
DisableQueryWhereColumnRemoveTrim = it.MoreSettings.DisableQueryWhereColumnRemoveTrim,
|
||||
DatabaseModel = it.MoreSettings.DatabaseModel,
|
||||
EnableILike = it.MoreSettings.EnableILike,
|
||||
ClickHouseEnableFinal = it.MoreSettings.ClickHouseEnableFinal
|
||||
ClickHouseEnableFinal = it.MoreSettings.ClickHouseEnableFinal,
|
||||
PgSqlIsAutoToLowerSchema = it.MoreSettings.PgSqlIsAutoToLowerSchema
|
||||
|
||||
},
|
||||
SqlMiddle = it.SqlMiddle == null ? null : new SqlMiddle
|
||||
|
Reference in New Issue
Block a user