Пример #1
0
        public TreeNode[] GetObjectHierarchy()
        {
            TreeNode[] top = new TreeNode[]
            {
                new TreeNode("User Tables"),
                new TreeNode("User Views"),
            };

            DataSet ds = dbClient.ExecuteOnWorker("select TABLE_NAME from USER_TABLES order by TABLE_NAME", timeout);

            if (ds == null || ds.Tables.Count == 0)
            {
                return(null);
            }

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                OracleNode node = new OracleNode(row[0].ToString());
                node.type     = "T";
                node.dragText = node.Text;
                top[0].Nodes.Add(node);
                // Add a dummy sub-node to user tables and views so they'll have a clickable expand sign
                // allowing us to have GetSubObjectHierarchy called so the user can view the columns
                node.Nodes.Add(new TreeNode());
            }

            ds = dbClient.ExecuteOnWorker("select VIEW_NAME from USER_VIEWS order by VIEW_NAME", timeout);
            if (ds == null || ds.Tables.Count == 0)
            {
                return(top);
            }

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                OracleNode node = new OracleNode(row[0].ToString());
                node.type     = "V";
                node.dragText = node.Text;
                top[1].Nodes.Add(node);
                // Add a dummy sub-node to user tables and views so they'll have a clickable expand sign
                // allowing us to have GetSubObjectHierarchy called so the user can view the columns
                node.Nodes.Add(new TreeNode());
            }

            return(top);
        }
Пример #2
0
        public TreeNode[] GetObjectHierarchy()
        {
            TreeNode[] top = new TreeNode[]
            {
                new TreeNode("User Tables"),
                new TreeNode("System Tables"),
                new TreeNode("Views"),
                new TreeNode("User Stored Procs"),
                new TreeNode("MS Stored Procs"),
                new TreeNode("Functions")
            };

            string Query;

            //Query = "select type, ObjectProperty (id, N'IsMSShipped') shipped, object_name(id) object, user_name(uid) owner from sysobjects where type in (N'U', N'S', N'V', N'P', N'FN') order by object, owner";

            Query = "select table_type as type, table_name as object, table_schema as [schema] from INFORMATION_SCHEMA.TABLES"
                    + " UNION"
                    + " select routine_type, routine_name, routine_schema from INFORMATION_SCHEMA.ROUTINES";

            DataSet ds = dbClient.ExecuteOnWorker(Query, timeout);

            if (ds == null || ds.Tables.Count == 0)
            {
                return(null);
            }

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                string type = row["type"].ToString();
                int    position;
                switch (type)
                {
                case "BASE TABLE":
                    type = "U"; position = 0; break;

                case "VIEW":
                    type = "V"; position = 2; break;

                case "PROCEDURE":
                    type = "P"; position = 3; break;

                case "FUNCTION":
                    type = "FN"; position = 5; break;

                default:
                    type = "S"; position = 1; break;
                }

//                if (type == "U") position = 0;										// user table       - U
//                else if (type == "S") position = 1;								// system table         - S
//                else if (type == "V") position = 2;								// view                 - V
//                else if (type == "FN") position = 5;								// function         - FN
//                else if ((int)row["shipped"] == 0) position = 3;				// user stored proc
//                else position = 4;														// MS stored proc

                string  prefix = row["schema"].ToString();                                    // == "dbo" ? "" : row["owner"].ToString() + ".";
                SqlNode node   = new SqlNode(row["object"].ToString() + " (" + prefix + ")"); // new SqlNode(prefix + row["object"].ToString());
                node.type  = type;
                node.name  = row["object"].ToString();
                node.owner = row["schema"].ToString();

                // If the object name contains a space, wrap the "safe name" in square brackets.
                if (node.owner.IndexOf(' ') >= 0 || node.name.IndexOf(' ') >= 0)
                {
                    node.safeName = "[" + node.name + "]";
                    node.dragText = "[" + node.owner + "].[" + node.name + "]";
                }
                else
                {
                    node.safeName = node.name;
                    node.dragText = node.owner + "." + node.name;
                }
                top[position].Nodes.Add(node);

                // Add a dummy sub-node to user tables and views so they'll have a clickable expand sign
                // allowing us to have GetSubObjectHierarchy called so the user can view the columns
                if (type == "U" || type == "V")
                {
                    node.Nodes.Add(new TreeNode());
                }
            }
            return(top);
        }