//查看视图定义
        private void menuItemViewSql_Click(object sender, EventArgs e)
        {
            TreeNode tn = tvDatabase.SelectedNode;
            SOView   v  = tn.Tag as SOView;

            base.MainForm.NewDockDocument(v.Name, CodeType.TSQL, v.SqlText);
        }
Example #2
0
        //        /// <summary>
        //        /// 获取表所拥有的索引列表
        //        /// </summary>
        //        /// <param name="table"></param>
        //        /// <returns></returns>
        //        public override List<SOIndex> GetTableIndexList(SOTable table)
        //        {
        //            string cmdText = string.Format(@"SELECT *
        //                FROM INFORMATION_SCHEMA.`constraints`
        //                WHERE table_schema='{0}' AND table_name='{1}';", table.Database.Name, table.Name);

        //            List<SOIndex> indexList = new List<SOIndex>();
        //            List<SOColumn> columnList = GetTableColumnList(table);
        //            DataTable dt = this.DbProvider.ExecuteDataSet(System.Data.CommandType.Text, cmdText).Tables[0];

        //            foreach (DataRow row in dt.Rows)
        //            {
        //                SOIndex index = new SOIndex
        //                {
        //                    Parent = table,
        //                    Name = row["constraint_name"].ToString(),
        //                    Comment = row["constraint_name"].ToString(),
        //                    IsCluster = false,
        //                    IsFullText = row["constraint_type"].ToString() == "Full Text",
        //                    IsPrimaryKey = row["constraint_type"].ToString() == "PRIMARY KEY",
        //                    IsUnique = row["constraint_type"].ToString() == "UNIQUE"
        //                };
        //                indexList.Add(index);

        //                string cmdText2 = string.Format(@"SELECT column_name
        //                FROM INFORMATION_SCHEMA.`statistics`
        //                WHERE table_schema='{0}' AND table_name='{1}';", table.Database.Name, table.Name);

        //                DataTable dt2 = this.DbProvider.ExecuteDataSet(CommandType.Text, cmdText2).Tables[0];
        //                index.Columns = new List<SOColumn>();
        //                foreach (DataRow row2 in dt2.Rows)
        //                {
        //                    foreach (SOColumn column in columnList)
        //                    {
        //                        if (row2[0].ToString() == column.Name) index.Columns.Add(column);
        //                    }
        //                }
        //            }

        //            return indexList;
        //        }

        /// <summary>
        /// 获取视图列表
        /// </summary>
        /// <param name="db"></param>
        /// <returns></returns>
        public override List <SOView> GetViewList(SODatabase db)
        {
            string cmdText = string.Format("use [{0}];exec sp_tables;", db.Name);
            SortedDictionary <string, SOView> dic = new SortedDictionary <string, SOView>();
            DataTable dt = this.DbProvider.ExecuteDataSet(System.Data.CommandType.Text, cmdText).Tables[0];

            foreach (DataRow row in dt.Rows)
            {
                if (row["TABLE_TYPE"].ToString() != "VIEW")
                {
                    continue;
                }
                if (row["TABLE_OWNER"].ToString() == "sys" || row["TABLE_OWNER"].ToString() == "INFORMATION_SCHEMA")
                {
                    continue;
                }
                SOView view = new SOView {
                    Parent = db, Name = row["TABLE_NAME"].ToString(), Owner = row["TABLE_OWNER"].ToString()
                };
                view.SchemaName = view.Owner;
                dic.Add(view.Name, view);
            }

            return(dic.Values.ToList <SOView>());
        }
Example #3
0
        /// <summary>
        /// 获取视图所拥有的列列表
        /// </summary>
        /// <param name="view"></param>
        /// <returns></returns>
        public override List <SOColumn> GetViewColumnList(SOView view)
        {
            string cmdText = string.Format(@"SELECT *  
                FROM INFORMATION_SCHEMA.`COLUMNS` 
                WHERE table_schema='{0}' AND table_name='{1}' 
                ORDER BY ordinal_position;", view.Database.Name, view.Name);

            List <SOColumn> columnList = new List <SOColumn>();
            DataTable       dt         = this.DbProvider.ExecuteDataSet(System.Data.CommandType.Text, cmdText).Tables[0];

            foreach (DataRow row in dt.Rows)
            {
                SOColumn column = new SOColumn
                {
                    Parent       = view,
                    Name         = row["column_name"].ToString(),
                    DefaultValue = row["column_default"].ToString(),
                    Nullable     = row["is_nullable"].ToString().ToUpper() == "YES",
                    NativeType   = row["data_type"].ToString(),
                    Identify     = row["extra"].ToString().IndexOf("auto_increment") != -1,
                    //ForeignKey
                    Length     = ConvertUtil.ToInt32(row["character_maximum_length"], -1),
                    Precision  = ConvertUtil.ToInt32(row["numeric_precision"], -1),
                    PrimaryKey = row["column_key"].ToString() == "PRI",
                    Scale      = ConvertUtil.ToInt32(row["numeric_scale"], -1),
                    Comment    = row["column_comment"].ToString()
                };

                column.DataType = this.GetDbType(column.NativeType);
                columnList.Add(column);
            }

            return(columnList);
        }
Example #4
0
        ///// <summary>
        ///// 获取表的Sql脚本
        ///// </summary>
        ///// <param name="table"></param>
        ///// <returns></returns>
        //public override string GetTableSqlText(SOTable table)
        //{
        //    throw new NotImplementedException();
        //}

        /// <summary>
        /// 获取视图的Sql脚本
        /// </summary>
        /// <param name="view"></param>
        /// <returns></returns>
        public override string GetViewSqlText(SOView view)
        {
            string cmdText = string.Format("use [{0}];SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE table_schema='{1}' AND table_name='{2}';", view.Database.Name, view.Owner, view.Name);
            string text    = this.DbProvider.ExecuteScalar(System.Data.CommandType.Text, cmdText).ToString();

            return(text);
        }
        /// <summary>
        /// 获取视图所拥有的列列表
        /// </summary>
        /// <param name="view"></param>
        /// <returns></returns>
        public override List <SOColumn> GetViewColumnList(SOView view)
        {
            string cmdText = string.Format(@"use [{2}];exec sp_columns '{0}','{1}','{2}';", view.Name, view.Owner, view.Database.Name);

            List <SOColumn> columnList = new List <SOColumn>();
            DataTable       dt         = this.DbProvider.ExecuteDataSet(System.Data.CommandType.Text, cmdText).Tables[0];

            foreach (DataRow row in dt.Rows)
            {
                SOColumn column = new SOColumn
                {
                    Parent       = view,
                    Name         = row["column_name"].ToString(),
                    DefaultValue = row["column_def"].ToString(),
                    Nullable     = row["is_nullable"].ToString().ToUpper() == "YES",
                    NativeType   = row["type_name"].ToString().Replace(" identity", ""),
                    Identify     = row["type_name"].ToString().IndexOf("identity") != -1,
                    //ForeignKey
                    Length    = ConvertUtil.ToInt32(row["length"], -1),
                    Precision = ConvertUtil.ToInt32(row["precision"], -1),
                    Scale     = ConvertUtil.ToInt32(row["scale"], -1),
                };

                column.DataType = this.GetDbType(column.NativeType);
                column.Comment  = GetColumnComment(column);
                columnList.Add(column);
            }

            return(columnList);
        }
        private void BuildCodeByViewSchema(object item)
        {
            SOView          view       = item as SOView;
            List <SOColumn> columnList = DbSchemaHelper.Instance.CurrentSchema.GetViewColumnList(view);

            //生成代码文件
            ViewHost host = new ViewHost();

            host.View         = view;
            host.ColumnList   = columnList;
            host.TemplateFile = templateFile;

            foreach (object obj in listBox3.Items)
            {
                string[] ss = obj.ToString().Split('|');

                host.SetValue(ss[0], ss[1].Replace("[<->]", "|"));
            }

            Engine engine = new Engine();

            string fileName  = string.Empty;
            string separator = txtFileNamePrefix.Text.Trim();

            if (separator != "")
            {
                fileName = string.Format("{0}{1}", view.Name.RemovePrefix(separator, 10), host.FileExtention);
            }
            else
            {
                fileName = string.Format("{0}{1}", view.Name, host.FileExtention);
            }

            string outputContent = engine.ProcessTemplate(File.ReadAllText(templateFile), host);
            string outputFile    = Path.Combine(outputPath, fileName);

            StringBuilder sb = new StringBuilder();

            if (host.ErrorCollection.HasErrors)
            {
                foreach (CompilerError err in host.ErrorCollection)
                {
                    sb.AppendLine(err.ToString());
                }
                outputContent = outputContent + Environment.NewLine + sb.ToString();
                outputFile    = outputFile + ".error";
            }

            if (Directory.Exists(outputPath) == false)
            {
                Directory.CreateDirectory(outputPath);
            }
            File.WriteAllText(outputFile, outputContent, Encoding.UTF8);
        }
Example #7
0
        /// <summary>
        /// 获取视图列表
        /// </summary>
        /// <param name="db"></param>
        /// <returns></returns>
        public override List <SOView> GetViewList(SODatabase db)
        {
            string        cmdText  = string.Format("SELECT table_name,table_type,table_comment FROM INFORMATION_SCHEMA.`TABLES` WHERE table_schema='{0}' AND table_type='VIEW';", db.Name);
            List <SOView> viewList = new List <SOView>();
            DataTable     dt       = this.DbProvider.ExecuteDataSet(System.Data.CommandType.Text, cmdText).Tables[0];

            foreach (DataRow row in dt.Rows)
            {
                SOView view = new SOView {
                    Parent = db, Name = row["table_name"].ToString(), Comment = row["table_comment"].ToString()
                };
                viewList.Add(view);
            }

            return(viewList);
        }
Example #8
0
        /// <summary>
        /// 获取视图列表
        /// </summary>
        /// <param name="db"></param>
        /// <returns></returns>
        public override List <SOView> GetViewList(SODatabase db)
        {
            string cmdText = string.Format("select VIEW_NAME,TEXT from dba_views where owner='{0}'", db.Name);
            SortedDictionary <string, SOView> dic = new SortedDictionary <string, SOView>();
            DataTable dt = this.DbProvider.ExecuteDataSet(System.Data.CommandType.Text, cmdText).Tables[0];

            foreach (DataRow row in dt.Rows)
            {
                SOView view = new SOView {
                    Parent = db, Name = row["VIEW_NAME"].ToString(), SqlText = row["TEXT"].ToString(), Owner = db.Name
                };
                view.SchemaName = view.Owner;
                dic.Add(view.Name, view);
            }

            return(dic.Values.ToList <SOView>());
        }
Example #9
0
        /// <summary>
        /// 获取视图所拥有的索引列表
        /// </summary>
        /// <param name="view"></param>
        /// <returns></returns>
        public override List <SOIndex> GetViewIndexList(SOView view)
        {
            string cmdText = string.Format(@"SELECT *  
                FROM INFORMATION_SCHEMA.`constraints` 
                WHERE table_schema='{0}' AND table_name='{1}';", view.Database.Name, view.Name);

            List <SOIndex>  indexList  = new List <SOIndex>();
            List <SOColumn> columnList = GetViewColumnList(view);
            DataTable       dt         = this.DbProvider.ExecuteDataSet(System.Data.CommandType.Text, cmdText).Tables[0];

            foreach (DataRow row in dt.Rows)
            {
                SOIndex index = new SOIndex
                {
                    Parent       = view,
                    Name         = row["constraint_name"].ToString(),
                    Comment      = row["constraint_name"].ToString(),
                    IsCluster    = false,
                    IsFullText   = row["constraint_type"].ToString() == "Full Text",
                    IsPrimaryKey = row["constraint_type"].ToString() == "PRIMARY KEY",
                    IsUnique     = row["constraint_type"].ToString() == "UNIQUE"
                };
                indexList.Add(index);

                string cmdText2 = string.Format(@"SELECT column_name  
                FROM INFORMATION_SCHEMA.`statistics` 
                WHERE table_schema='{0}' AND table_name='{1}';", view.Database.Name, view.Name);

                DataTable dt2 = this.DbProvider.ExecuteDataSet(CommandType.Text, cmdText2).Tables[0];
                index.Columns = new List <SOColumn>();
                foreach (DataRow row2 in dt2.Rows)
                {
                    foreach (SOColumn column in columnList)
                    {
                        if (row2[0].ToString() == column.Name)
                        {
                            index.Columns.Add(column);
                        }
                    }
                }
            }

            return(indexList);
        }
Example #10
0
        /// <summary>
        /// 获取视图列表
        /// </summary>
        /// <param name="db"></param>
        /// <returns></returns>
        public virtual List <SOView> GetViewList(SODatabase db)
        {
            List <SOView> list = new List <SOView>();

            string[] restrictions = new string[3];
            restrictions[0] = db.Name;
            DataTable dt = GetSchema(MetaDataCollectionName_Views, restrictions);

            foreach (DataRow dr in dt.Rows)
            {
                SOView view = new SOView();
                view.Name    = dr["table_name"].ToString();
                view.Comment = view.Name;
                view.Parent  = db;

                list.Add(view);
            }

            return(list);
        }
Example #11
0
        /// <summary>
        /// 获取视图所拥有的列列表
        /// </summary>
        /// <param name="view"></param>
        /// <returns></returns>
        public override List <SOColumn> GetViewColumnList(SOView view)
        {
            string cmdText = string.Format(@"use [{2}];exec sp_columns '{0}','{1}','{2}';", view.Name, view.Owner, view.Database.Name);

            List <SOColumn> columnList = new List <SOColumn>();
            DataTable       dt         = this.DbProvider.ExecuteDataSet(System.Data.CommandType.Text, cmdText).Tables[0];


            string sql = string.Format(@"select  col.name from syscolumns col,sysforeignkeys f where f.fkeyid=col.id and f.fkey=col.colid
                                                 and OBJECT_NAME(f.fkeyid)  ='{0}'; ", view.Name);

            string fkcol = this.DbProvider.ExecuteScalar <string>(CommandType.Text, sql);

            foreach (DataRow row in dt.Rows)
            {
                SOColumn column = new SOColumn
                {
                    Parent       = view,
                    Name         = row["column_name"].ToString(),
                    DefaultValue = row["column_def"].ToString(),
                    Nullable     = row["is_nullable"].ToString().ToUpper() == "YES",
                    NativeType   = row["type_name"].ToString().Replace(" identity", ""),
                    Identify     = row["type_name"].ToString().IndexOf("identity") != -1,
                    Computed     = false,
                    ForeignKey   = row["column_name"].ToString() == fkcol,
                    Length       = ConvertUtil.ToInt32(row["length"], -1),
                    Precision    = ConvertUtil.ToInt32(row["precision"], -1),
                    Scale        = ConvertUtil.ToInt32(row["scale"], -1),
                };

                column.DataType = this.GetDbType(column.NativeType);
                column.Comment  = GetColumnComment(column);
                columnList.Add(column);
            }

            return(columnList);
        }
Example #12
0
 public DbViewViewer(SOView view)
 {
     InitializeComponent();
     currentView = view;
 }
Example #13
0
 /// <summary>
 /// 获取视图的Sql脚本
 /// </summary>
 /// <param name="view"></param>
 /// <returns></returns>
 public override string GetViewSqlText(SOView view)
 {
     return(view.SqlText);
 }
Example #14
0
 /// <summary>
 /// 获取视图所拥有的列列表
 /// </summary>
 /// <param name="view"></param>
 /// <returns></returns>
 public virtual List <SOColumn> GetViewColumnList(SOView view)
 {
     throw new NotImplementedException();
 }
Example #15
0
 /// <summary>
 /// 获取视图所拥有的索引列表
 /// </summary>
 /// <param name="view"></param>
 /// <returns></returns>
 public virtual List <SOIndex> GetViewIndexList(SOView view)
 {
     throw new NotImplementedException();
 }
Example #16
0
 /// <summary>
 /// 获取视图的Sql脚本
 /// </summary>
 /// <param name="view"></param>
 /// <returns></returns>
 public virtual string GetViewSqlText(SOView view)
 {
     return("该方法目前还没有实现");
 }
Example #17
0
 /// <summary>
 /// 获取视图的Sql脚本
 /// </summary>
 /// <param name="view"></param>
 /// <returns></returns>
 public override string GetViewSqlText(SOView view)
 {
     throw new NotImplementedException();
 }
Example #18
0
        public static SOView ToSOView(PDView view)
        {
            SOView v = new SOView();

            return(v);
        }