Ejemplo n.º 1
0
        protected override IEnumerable <Column> GetColumns(IDatabase database, RestrictionDictionary restrictionValues)
        {
            var parameters = new ParameterCollection();

            var columns = new List <Column>();

            //如果指定使用表名查询
            if (restrictionValues.TryGetValue(nameof(Column.TableName), out string tableName))
            {
                SqlCommand sql = $@"
PRAGMA main.TABLE_INFO('{tableName}')";

                columns.AddRange(GetColumns(database, tableName));
            }
            else
            {
                //循环所有表,对每个表进行查询
                foreach (var tb in GetTables(database, RestrictionDictionary.Empty))
                {
                    SqlCommand sql = $@"
PRAGMA main.TABLE_INFO('{tb.Name}')";

                    columns.AddRange(GetColumns(database, tb.Name));
                }
            }

            //如果使用列名进行查询
            if (restrictionValues.TryGetValue(nameof(Column.Name), out string columnName))
            {
                columns = columns.Where(s => s.Name == columnName).ToList();
            }

            return(columns);
        }
Ejemplo n.º 2
0
        protected override IEnumerable <Database> GetDatabases(IDatabase database, RestrictionDictionary restrictionValues)
        {
            var sql = "SHOW DATABASES";

            if (restrictionValues.TryGetValue(nameof(Database.Name), out string dbName))
            {
                sql += $" LIKE '{dbName}'";
            }

            return(ExecuteAndParseMetadata(database, sql, null, (wrapper, reader) => new Database
            {
                Name = wrapper.GetString(reader, 0)
            }));
        }
Ejemplo n.º 3
0
        protected override IEnumerable <ForeignKey> GetForeignKeys(IDatabase database, RestrictionDictionary restrictionValues)
        {
            var parameters = new ParameterCollection();

            //如果指定使用表名查询
            if (restrictionValues.TryGetValue(nameof(ForeignKey.TableName), out string tbName))
            {
                SqlCommand sql = $@"
PRAGMA main.FOREIGN_KEY_LIST('{tbName}')";

                return(ExecuteAndParseMetadata(database, sql, parameters, (wrapper, reader) => new ForeignKey
                {
                    TableName = tbName,
                    ColumnName = wrapper.GetString(reader, 4),
                    PKTable = wrapper.GetString(reader, 2),
                    PKColumn = wrapper.GetString(reader, 3)
                }));
            }
            else
            {
                var columns = new List <ForeignKey>();

                //循环所有表,对每个表进行查询
                foreach (var tb in GetTables(database, RestrictionDictionary.Empty))
                {
                    SqlCommand sql = $@"
PRAGMA main.FOREIGN_KEY_LIST('{tb.Name}')";

                    columns.AddRange(ExecuteAndParseMetadata(database, sql, parameters, (wrapper, reader) => new ForeignKey
                    {
                        TableName  = tb.Name,
                        ColumnName = wrapper.GetString(reader, 4),
                        PKTable    = wrapper.GetString(reader, 2),
                        PKColumn   = wrapper.GetString(reader, 3)
                    }));
                }

                return(columns);
            }
        }