public SqlCommand Parse(SqlCommand rawSqlCommand) { string parameterNamePrefix = SqlUtil.PARAMETER_NAME_PREFIX_AT; string strDbProviderName = EvnValService.GetDbAccessorDbProviderName(rawSqlCommand.DbAccessor); if (strDbProviderName == DbProviderName.Oracle.ToString()) { parameterNamePrefix = SqlUtil.PARAMETER_NAME_PREFIX_COLON; } IList <Replacement> lsReplacement = new List <Replacement>(); foreach (Match match in RegexPattern.ParameterPattern.Matches(rawSqlCommand.Text)) { string namedParam = match.Groups["NamedParam"].Value.Trim(); if (string.IsNullOrEmpty(namedParam)) { continue; } lsReplacement.Add(new Replacement() { OldText = match.Value, NewText = parameterNamePrefix + namedParam }); } foreach (var replacement in lsReplacement) { rawSqlCommand.Text = rawSqlCommand.Text.Replace(replacement.OldText, replacement.NewText); } return(null); }
public static DbAccessor CreateDbAccessor() { var result = CreateDbAccessor(DefaultDbName); if (EvnValService.GetDefaultDbAccessorHashCode() == null) { EvnValService.SetDefaultDbAccessorHashCode(result); } return(result); }
public static DbAccessor NewDbAccessor(string connectionString, string providerName) { DbAccessor dba = null; if (string.IsNullOrEmpty(providerName) || providerName == "System.Data.SqlClient" || providerName.ToLower() == DbProviderName.SqlServer.ToString().ToLower()) { dba = new SqlServerAccessor(connectionString); EvnValService.SetDbAccessorDbProviderName(dba, DbProviderName.SqlServer); } else if (providerName.ToLower() == DbProviderName.Oracle.ToString().ToLower()) { dba = new OracleAccessor(connectionString); EvnValService.SetDbAccessorDbProviderName(dba, DbProviderName.Oracle); } else if (providerName.ToLower() == DbProviderName.MySql.ToString().ToLower()) { dba = new MySqlAccessor(connectionString); EvnValService.SetDbAccessorDbProviderName(dba, DbProviderName.MySql); } else { Type tProviderName = Type.GetType(providerName); if (tProviderName == null) { throw new Exception(string.Format("ConnectionString({0})的ProviderName({1})找不到该类型!", connectionString, providerName)); } else if (!(tProviderName.IsSubclassOf(typeof(DbAccessor)))) { throw new Exception(string.Format("ConnectionString({0})的ProviderName({1})该类型不是DbAccessor的实现类!", connectionString, providerName)); } object oProviderName = Activator.CreateInstance(tProviderName, connectionString); dba = oProviderName as DbAccessor; } return(dba); }
public static bool IsValidConfigFileName(string fileName) { bool result = true; if (!fileName.EndsWith(CONFIG_FILE_EXTENSION)) { result = false; } #region 如果配置文件的名字是以XXX.DbProviderName.config(如:XXX.sqlserver.config)形式出现的,则进行筛选处理,筛选出只能当前使用的Provider相同的配置文件 var fileNamePieces = fileName.Split('.'); if (fileNamePieces.Length > 2) { string configDbProviderName = fileNamePieces[fileNamePieces.Length - 2]; var lsDbProviderNames = new List <string>(); foreach (var field in typeof(DbProviderName).GetFields(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)) { lsDbProviderNames.Add(field.Name); } if (lsDbProviderNames.Exists(c => c.ToLower() == configDbProviderName.ToLower())) { string strDbAccessorHashCode = EvnValService.GetDefaultDbAccessorHashCode(); if (strDbAccessorHashCode != null) { string strDbProviderName = EvnValRepository.Instance.GetEvnVal(strDbAccessorHashCode).ToString(); if (configDbProviderName.ToLower() != strDbProviderName.ToString().ToLower()) { result = false; } } } } #endregion return(result); }