Exemple #1
0
        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);
        }
Exemple #4
0
        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);
        }