Exemplo n.º 1
0
 private DataTable GetPrimaryKeyIndexes(string tableName)
 {
     return(BdpMetaDataHelper.GetIndices());
 }
Exemplo n.º 2
0
 private DataTable GetUniqueIndexes(string tableName)
 {
     return(BdpMetaDataHelper.GetIndices());
 }
Exemplo n.º 3
0
        private DataTable GetNonUniqueIndexes(string tableName)
        {
            StringBuilder sql = new StringBuilder();

            StringBuilder   where = new StringBuilder();
            FbCommand  select     = new FbCommand(this.connection);
            ISQLCursor cursor     = null;
            DataTable  schema     = BdpMetaDataHelper.GetIndices();
            short      resultCols = 0;

            sql.Append(
                @"SELECT " +
                "idx.rdb$relation_name AS TableName, " +
                "idx.rdb$index_name AS IndexName, " +
                "seg.rdb$field_name AS ColumnName, " +
                "seg.rdb$field_position AS FieldPosition, " +
                "idx.rdb$index_type AS IndexType, " +
                "idx.rdb$index_inactive AS InactiveIndex, " +
                "idx.rdb$unique_flag AS IsUnique, " +
                "idx.rdb$description AS Description " +
                "FROM " +
                "rdb$indices idx " +
                "left join rdb$index_segments seg ON idx.rdb$index_name = seg.rdb$index_name ");

            if (tableName != null && tableName.Length > 0)
            {
                where.AppendFormat("rdb$relation_name = '{0}' AND idx.rdb$unique_flag IS NULL", tableName);
            }

            if (where.Length > 0)
            {
                sql.AppendFormat(" WHERE {0} ", where.ToString());
            }

            sql.Append(" ORDER BY idx.rdb$relation_name, idx.rdb$index_name, seg.rdb$field_position");

            /*
             * RecNo
             * CatalogName
             * SchemaName
             * TableName
             * IndexName
             * ColumnName
             * ColumnPosition
             * PKeyName
             * IndexType
             * SortOrder
             * Filter
             */

            // Prepare and execute the command
            select.Prepare(sql.ToString(), 0);
            select.Execute(out cursor, ref resultCols);

            int recno = 0;

            while (cursor.Next() != -1)
            {
                DataRow row = schema.NewRow();

                row["Recno"]          = recno++;
                row["CatalogName"]    = null;
                row["SchemaName"]     = null;
                row["TableName"]      = ((FbCursor)cursor).GetValue(0).ToString().Trim();
                row["IndexName"]      = ((FbCursor)cursor).GetValue(1).ToString().Trim();
                row["ColumnName"]     = ((FbCursor)cursor).GetValue(2).ToString().Trim();
                row["ColumnPosition"] = ((FbCursor)cursor).GetValue(3);
                row["PKeyName"]       = String.Empty;
                row["IndexType"]      = IndexType.NonUnique;
                row["SortOrder"]      = String.Empty;
                row["Filter"]         = String.Empty;

                schema.Rows.Add(row);
            }

            cursor.Release();
            select.Release();

            return(schema);
        }