Synchronization code

This commit is contained in:
sunkaixuan 2024-05-10 22:09:33 +08:00
parent b49b270551
commit beb45a19f9

View File

@ -211,20 +211,11 @@ namespace SqlSugar.OceanBaseForOracle
} }
} }
orderParameters = parameters.Where(it => sql.Contains(it.ParameterName)) orderParameters = parameters.Where(it => sql.Contains(it.ParameterName))
.OrderBy(it => new List<int>() { .Select(it =>new { p=it,sort= GetSortId(sql, it) })
sql.IndexOf(it.ParameterName+")"), .OrderBy(it=>it.sort)
sql.IndexOf(it.ParameterName+" "), .Where(it=>it.sort!=0)
sql.IndexOf(it.ParameterName+"="), .Select(it=>it.p)
sql.IndexOf(it.ParameterName+"+"), .ToList();
sql.IndexOf(it.ParameterName+"-"),
sql.IndexOf(it.ParameterName+";"),
sql.IndexOf(it.ParameterName+","),
sql.IndexOf(it.ParameterName+"*"),
sql.IndexOf(it.ParameterName+"/"),
sql.IndexOf(it.ParameterName+"|"),
sql.IndexOf(it.ParameterName+"&"),
sql.EndsWith(it.ParameterName)?sql.IndexOf(it.ParameterName):0
}.Where(it => it != 0).Max()).ToList();
foreach (var param in parameters.OrderByDescending(it => it.ParameterName.Length)) foreach (var param in parameters.OrderByDescending(it => it.ParameterName.Length))
{ {
sql = sql.Replace(param.ParameterName, "?"); sql = sql.Replace(param.ParameterName, "?");
@ -246,6 +237,26 @@ namespace SqlSugar.OceanBaseForOracle
CheckConnection(); CheckConnection();
return sqlCommand; return sqlCommand;
} }
private static int GetSortId(string sql, SugarParameter it)
{
return new List<int>() {
0,
sql.IndexOf(it.ParameterName+")"),
sql.IndexOf(it.ParameterName+" "),
sql.IndexOf(it.ParameterName+"="),
sql.IndexOf(it.ParameterName+"+"),
sql.IndexOf(it.ParameterName+"-"),
sql.IndexOf(it.ParameterName+";"),
sql.IndexOf(it.ParameterName+","),
sql.IndexOf(it.ParameterName+"*"),
sql.IndexOf(it.ParameterName+"/"),
sql.IndexOf(it.ParameterName+"|"),
sql.IndexOf(it.ParameterName+"&"),
sql.EndsWith(it.ParameterName)?sql.IndexOf(it.ParameterName):0
}.Max();
}
public override void SetCommandToAdapter(IDataAdapter dataAdapter, DbCommand command) public override void SetCommandToAdapter(IDataAdapter dataAdapter, DbCommand command)
{ {
((OceanBaseForOracleDataAdapter)dataAdapter).SelectCommand = (OdbcCommand)command; ((OceanBaseForOracleDataAdapter)dataAdapter).SelectCommand = (OdbcCommand)command;