コード例 #1
0
        private static FkDicts GetForeignKeysFromBase()
        {
            var fkDicts = new FkDicts();

            fkDicts.keyDict      = new Dictionary <string, Key>();
            fkDicts.relationDict = new Dictionary <string, List <Relation> >();
            fkDicts.columnDict   = new Dictionary <string, List <string> >();
            string query   = @"SELECT
	(detail_relation_constraints.rdb$relation_name) AS table_name,
    (detail_index_segments.rdb$field_name) AS field_name,
    (master_relation_constraints.rdb$relation_name) AS reference_table,
    (master_index_segments.rdb$field_name) AS fk_field
FROM
    rdb$relation_constraints detail_relation_constraints
    JOIN rdb$index_segments detail_index_segments ON detail_relation_constraints.rdb$index_name = detail_index_segments.rdb$index_name 
    JOIN rdb$ref_constraints ON detail_relation_constraints.rdb$constraint_name = rdb$ref_constraints.rdb$constraint_name -- Master indeksas
    JOIN rdb$relation_constraints master_relation_constraints ON rdb$ref_constraints.rdb$const_name_uq = master_relation_constraints.rdb$constraint_name
    JOIN rdb$index_segments master_index_segments ON master_relation_constraints.rdb$index_name = master_index_segments.rdb$index_name 
WHERE
    detail_relation_constraints.rdb$constraint_type = 'FOREIGN KEY'";
            var    fkTable = DataBaseConnector.GetTableByQuery(query);

            foreach (DataRow row in fkTable.Rows)
            {
                string table     = row[0].ToString().Replace(" ", "");
                string column    = row[1].ToString().Replace(" ", "");
                string refTable  = row[2].ToString().Replace(" ", "");
                string refColumn = row[3].ToString().Replace(" ", "");
                AddValuesToFkDics(table, column, refTable, refColumn, fkDicts);
            }
            return(fkDicts);
        }
コード例 #2
0
        static Dictionary <string, List <string> > LoadTableColumnsKeyDict(string query)
        {
            var       dict  = new Dictionary <string, List <string> >();
            DataTable table = DataBaseConnector.GetTableByQuery(query);

            foreach (DataRow row in table.Rows)
            {
                string tableName  = row[0].ToString().Replace(" ", "");
                string columnName = row[1].ToString().Replace(" ", "");
                AddValueToDict(tableName, columnName, dict);
            }
            return(dict);
        }
コード例 #3
0
 public static DataTable GetTableFromBase(string name, string orderCol = null)
 {
     if (string.IsNullOrWhiteSpace(name) == false)
     {
         string query = string.Format("select * from {0}", name);
         if (orderCol != null)
         {
             query += string.Format(" order by {0} asc", orderCol);
         }
         var result = DataBaseConnector.GetTableByQuery(query);
         result.TableName = name;
         return(result);
     }
     return(new DataTable());
 }
コード例 #4
0
        private static Dictionary <string, Dictionary <string, object> > GetCommentsFromBase()
        {
            string    query = @"select
            rf.rdb$relation_name,
            rf.rdb$field_name,
            rf.rdb$description
            from rdb$relation_fields rf
            where (coalesce(rf.rdb$system_flag, 0) = 0) and rf.rdb$description is not null";
            var       dict  = new Dictionary <string, Dictionary <string, object> >();
            DataTable table = DataBaseConnector.GetTableByQuery(query);

            foreach (DataRow row in table.Rows)
            {
                var tableName  = row[0].ToString().Replace(" ", "");
                var columnName = row[1].ToString().Replace(" ", "");
                var comment    = row[2].ToString();
                AddValueToDict(tableName, columnName, comment, dict);
            }
            return(dict);
        }
コード例 #5
0
        private static Dictionary <string, Dictionary <string, object> > GetMaxLendthFromBase()
        {
            string    query = @"select
            rf.rdb$relation_name,
            rf.rdb$field_name,
            case f.rdb$field_type
                    when 8 then 9
                    else f.rdb$field_length / 4
                    end
            from rdb$relation_fields rf
            join rdb$fields f on (f.rdb$field_name = rf.rdb$field_source)
            where (coalesce(rf.rdb$system_flag, 0) = 0)";
            var       dict  = new Dictionary <string, Dictionary <string, object> >();
            DataTable table = DataBaseConnector.GetTableByQuery(query);

            foreach (DataRow row in table.Rows)
            {
                var tableName  = row[0].ToString().Replace(" ", "");
                var columnName = row[1].ToString().Replace(" ", "");
                var length     = Convert.ToInt32(row[2]);
                AddValueToDict(tableName, columnName, length, dict);
            }
            return(dict);
        }