コード例 #1
0
ファイル: DataMasking.cs プロジェクト: dandraka/Zoro
        private DataTable ReadDataFromDb()
        {
            if (config.GetConnection() == null && (string.IsNullOrEmpty(config.ConnectionString) || string.IsNullOrEmpty(config.ConnectionType)))
            {
                throw new InvalidDataException("If no DbConnection is provided, ConnectionString and ConnectionType cannot be empty when using the database option");
            }
            if (string.IsNullOrEmpty(config.SqlSelect))
            {
                throw new InvalidDataException("SQL Select statement must be filled when using the database option");
            }

            DataTable dt = new DataTable("data");

            Action doDbSelect = new Action(() =>
            {
                bool wasOpen = EnsureOpenDbConnection();

                var dbCmd         = config.GetConnection().CreateCommand();
                dbCmd.CommandType = CommandType.Text;
                dbCmd.CommandText = config.SqlSelect;

                var behaviour = wasOpen ? CommandBehavior.Default : CommandBehavior.CloseConnection;
                using (var dbReader = dbCmd.ExecuteReader(behaviour))
                {
                    dt.Load(dbReader);
                    dbReader.Close();
                }

                foreach (DataColumn dataColumn in dt.Columns)
                {
                    dataColumn.ReadOnly = false;
                }
            });

            doDbSelect();

            return(dt);
        }