Example #1
0
        private List <QuerySourceField> LoadFieldsFromTable(string connectionString, string schemaName = null, string tableName = null)
        {
            var result          = new List <QuerySourceField>();
            var dataTypeAdaptor = new DB2SupportDataType();

            using (var conn = new DB2Connection(connectionString))
            {
                conn.Open();

                var builder = new SchemaRestrictionsBuilder(true);
                if (!string.IsNullOrEmpty(schemaName))
                {
                    builder = builder.TableSchema(schemaName);
                }
                if (!string.IsNullOrEmpty(tableName))
                {
                    builder = builder.Table(tableName);
                }

                string[] restrictions = builder.Build();

                var columns = conn.GetSchema(DB2MetaDataCollectionNames.Columns, restrictions);

                //var columns = conn.GetSchema("Columns");

                foreach (var row in columns.Rows.OfType <DataRow>())
                {
                    var fieldDataType  = string.Empty + row["DATA_TYPE_NAME"];
                    var izendaDataType = dataTypeAdaptor.GetIzendaDataType(fieldDataType);

                    if (string.IsNullOrEmpty(izendaDataType))
                    {
                        continue;
                    }

                    result.Add(
                        new QuerySourceField
                    {
                        Name           = row["COLUMN_NAME"].ToString(),
                        DataType       = fieldDataType,
                        IzendaDataType = izendaDataType,
                        AllowDistinct  = dataTypeAdaptor.GetAllowDistinct(fieldDataType),
                        //ExtendedProperties = string.IsNullOrEmpty("" + row["column_key"]) ? "" : new FieldExtendedProperty { PrimaryKey = true }.ToJson(),//TODO FieldExtendedProperty ?
                        Position        = Convert.ToInt32(row["ORDINAL_POSITION"]),
                        QuerySourceName = row["TABLE_NAME"].ToString(),
                        CategoryName    = row["TABLE_SCHEMA"].ToString()
                    });
                }
            }

            return(result);
        }
Example #2
0
        private IEnumerable <QuerySource> GetProcedures(DB2Connection conn, string schemaName)
        {
            string[] restrictions = new SchemaRestrictionsBuilder()
                                    .TableSchema(schemaName)
                                    .Build();

            var tables = conn.GetSchema(DB2MetaDataCollectionNames.Procedures, restrictions);

            return(GetQuerySources(tables, SQLQuerySourceType.Procedure, "PROCEDURE_NAME"));

            //string sql = string.Format(@"SELECT PROCNAME FROM SYSCAT.PROCEDURES WHERE PROCSCHEMA = '{0}';", schemaName);

            //var result = conn.Query<dynamic>(sql)
            //    .Select(s => new QuerySource
            //    {
            //        Name = s.PROCNAME,
            //        Type = SQLQuerySourceType.Procedure
            //    }).ToList();

            //return result;
        }
Example #3
0
        private IEnumerable <QuerySource> GetViews(DB2Connection conn, string schemaName)
        {
            string[] restrictions = new SchemaRestrictionsBuilder()
                                    .TableSchema(schemaName)
                                    .TableType("View")
                                    .Build();
            var tables = conn.GetSchema(DB2MetaDataCollectionNames.Tables, restrictions);

            return(GetQuerySources(tables, SQLQuerySourceType.View, "TABLE_NAME"));

            //string sql = string.Format(@"SELECT NAME FROM SYSIBM.SYSTABLES WHERE TYPE = 'V' AND CREATOR = '{0}';", schemaName);

            //var result = conn.Query<dynamic>(sql)
            //    .Select(s => new QuerySource
            //    {
            //        Name = s.NAME,
            //        Type = SQLQuerySourceType.View
            //    }).ToList();

            //return result;
        }