This commit is contained in:
sunkaixuan
2022-07-30 08:04:56 +08:00
parent 1f8a5cdef7
commit 97c84ab88b
3 changed files with 65 additions and 46 deletions

View File

@@ -103,40 +103,7 @@ namespace SqlSugar
sqlParameter.Direction = parameter.Direction; sqlParameter.Direction = parameter.Direction;
if (parameter.IsJson) if (parameter.IsJson)
{ {
sqlParameter.NpgsqlDbType = NpgsqlDbType.Json; sqlParameter.DbType=System.Data.DbType.String;
}
if (parameter.IsArray)
{
// sqlParameter.Value = this.Context.Utilities.SerializeObject(sqlParameter.Value);
var type = sqlParameter.Value.GetType();
if (ArrayMapping.ContainsKey(type))
{
sqlParameter.NpgsqlDbType = ArrayMapping[type] | NpgsqlDbType.Array;
}
else if (type==DBNull.Value.GetType())
{
if (parameter.DbType.IsIn(System.Data.DbType.Int32))
{
sqlParameter.NpgsqlDbType = NpgsqlDbType.Integer | NpgsqlDbType.Array;
}
else if (parameter.DbType.IsIn(System.Data.DbType.Int16))
{
sqlParameter.NpgsqlDbType = NpgsqlDbType.Smallint | NpgsqlDbType.Array;
}
else if (parameter.DbType.IsIn(System.Data.DbType.Int64))
{
sqlParameter.NpgsqlDbType = NpgsqlDbType.Bigint | NpgsqlDbType.Array;
}
else
{
sqlParameter.NpgsqlDbType =NpgsqlDbType.Text | NpgsqlDbType.Array;
}
}
else
{
Check.Exception(true, sqlParameter.Value.GetType().Name + " No Support");
}
} }
if (sqlParameter.Direction == 0) if (sqlParameter.Direction == 0)
{ {
@@ -149,14 +116,19 @@ namespace SqlSugar
this.OutputParameters.RemoveAll(it => it.ParameterName == sqlParameter.ParameterName); this.OutputParameters.RemoveAll(it => it.ParameterName == sqlParameter.ParameterName);
this.OutputParameters.Add(sqlParameter); this.OutputParameters.Add(sqlParameter);
} }
if (isVarchar && sqlParameter.DbType == System.Data.DbType.String) if (sqlParameter.DbType == System.Data.DbType.String)
{ {
sqlParameter.DbType = System.Data.DbType.AnsiString; sqlParameter.DbType = System.Data.DbType.AnsiString;
} }
if (sqlParameter.Value is DateTime && sqlParameter.DbType == System.Data.DbType.AnsiString) else if (sqlParameter.Value is DateTime && sqlParameter.DbType == System.Data.DbType.AnsiString)
{ {
sqlParameter.DbType = System.Data.DbType.DateTime; sqlParameter.DbType = System.Data.DbType.DateTime;
} }
else if (sqlParameter.DbType==System.Data.DbType.Decimal)
{
sqlParameter.DbType = System.Data.DbType.Double;
sqlParameter.Value = Convert.ToDouble(sqlParameter.Value);
}
++index; ++index;
} }
return result; return result;

View File

@@ -46,10 +46,10 @@ namespace SqlSugar
string columnParametersString = string.Join(",", this.DbColumnInfoList.Select(it => string columnParametersString = string.Join(",", this.DbColumnInfoList.Select(it =>
{ {
var spk = Builder.SqlParameterKeyWord + it.DbColumnName; var spk = Builder.SqlParameterKeyWord + it.DbColumnName;
if (it.Value is DateTime) //if (it.Value is DateTime)
{ //{
return $"to_timestamp('{it.Value.ObjToString("yyyy-MM-ddTHH:mm:ss")}', 'yyyy-MM-ddTHH:mm:ss')"; // return $"to_timestamp('{it.Value.ObjToString("yyyy-MM-ddTHH:mm:ss")}', 'yyyy-MM-ddTHH:mm:ss')";
} //}
return spk; return spk;
} }

View File

@@ -12,9 +12,9 @@ namespace SqlSugar
get get
{ {
/* /*
SELECT * FROM TABLE WHERE CONDITION ORDER BY ID DESC LIMIT 10 offset 0 SELECT * FROM TABLE WHERE CONDITION ORDER BY ID DESC LIMIT 0,10
*/ */
var template = "SELECT {0} FROM {1} {2} {3} {4} LIMIT {6} offset {5}"; var template = "SELECT {0} FROM {1} {2} {3} {4} LIMIT {5},{6}";
return template; return template;
} }
} }
@@ -31,7 +31,7 @@ namespace SqlSugar
#region Common Methods #region Common Methods
public override bool IsComplexModel(string sql) public override bool IsComplexModel(string sql)
{ {
return Regex.IsMatch(sql, @"AS ""\w+\.\w+""")|| Regex.IsMatch(sql, @"AS ""\w+\.\w+\.\w+"""); return Regex.IsMatch(sql, @"AS \`\w+\.\w+\`") || Regex.IsMatch(sql, @"AS \`\w+\.\w+\.\w+\`");
} }
public override string ToSqlString() public override string ToSqlString()
{ {
@@ -72,7 +72,54 @@ namespace SqlSugar
} }
return result; return result;
} }
private string ToCountSqlString()
{
//base.AppendFilter();
string oldOrderValue = this.OrderByValue;
string result = null;
sql = new StringBuilder();
sql.AppendFormat(SqlTemplate, "Count(*)", GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, (Skip != null || Take != null) ? null : GetOrderByString);
if (IsCount)
{
if (sql.ToString().Contains("-- No table"))
{
return "-- No table";
}
return sql.ToString();
}
if (Skip != null && Take == null)
{
if (this.OrderByValue == "ORDER BY ") this.OrderByValue += GetSelectValue.Split(',')[0];
result = string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, (Skip != null || Take != null) ? null : GetOrderByString, Skip.ObjToInt(), long.MaxValue);
}
else if (Skip == null && Take != null)
{
if (this.OrderByValue == "ORDER BY ") this.OrderByValue += GetSelectValue.Split(',')[0];
result = string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, GetOrderByString, 0, Take.ObjToInt());
}
else if (Skip != null && Take != null)
{
if (this.OrderByValue == "ORDER BY ") this.OrderByValue += GetSelectValue.Split(',')[0];
result = string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, GetOrderByString, Skip.ObjToInt() > 0 ? Skip.ObjToInt() : 0, Take);
}
else
{
result = sql.ToString();
}
this.OrderByValue = oldOrderValue;
return result;
}
public override string ToCountSql(string sql)
{
if (this.GroupByValue.HasValue())
{
return base.ToCountSql(sql);
}
else
{
return ToCountSqlString();
}
}
#endregion #endregion
#region Get SQL Partial #region Get SQL Partial
@@ -93,9 +140,9 @@ namespace SqlSugar
{ {
this.SelectCacheKey = this.SelectCacheKey + string.Join("-", this.JoinQueryInfos.Select(it => it.TableName)); this.SelectCacheKey = this.SelectCacheKey + string.Join("-", this.JoinQueryInfos.Select(it => it.TableName));
} }
if (IsDistinct) if (IsDistinct)
{ {
result = "distinct "+result; result = " DISTINCT " + result;
} }
return result; return result;
} }