zoukankan      html  css  js  c++  java
  • MySqlSchema

       internal class MySqlSchema
        {
            public bool GetSchema(Database database)
            {
                string str;
                string connectionString = database.ConnectionString;
                Match match = Regex.Match(connectionString, @"Database=(?<Database>[^\;]*);");
                if (match.Success)
                {
                    str = match.Groups["Database"].Value;
                    connectionString = connectionString.Replace(string.Format("Database={0};", str), "Database=information_schema;");
                }
                else
                {
                    return false;
                }
                DBHelper helper = new DBHelper(DBHelper.DatabaseTypes.MySql, connectionString);
                try
                {
                    DataSet set = helper.ExecuteQuery(CommandType.Text, string.Format("select distinct TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA='{0}' and TABLE_TYPE='BASE TABLE'", str), null);
                    foreach (DataRow row in set.Tables[0].Rows)
                    {
                        string str3 = row[0].ToString();
                        Table table = new Table();
                        table.Name = str3;
                        DataSet set2 = helper.ExecuteQuery(CommandType.Text, string.Format("select * from COLUMNS where TABLE_SCHEMA='{0}' and TABLE_NAME='{1}'", str, str3), null);
                        foreach (DataRow row2 in set2.Tables[0].Rows)
                        {
                            Field field = new Field();
                            field.AllowNull = row2["IS_NULLABLE"].ToString().ToLower() == "yes";
                            field.MySqlTypeString = ObjectHelper.GetString(row2["DATA_TYPE"]);
                            field.DefaultValue = ObjectHelper.GetString(row2["COLUMN_DEFAULT"]);
                            field.FieldDescn = ObjectHelper.GetString(row2["COLUMN_COMMENT"]);
                            field.FieldLength = ObjectHelper.GetLong(row2["CHARACTER_MAXIMUM_LENGTH"]);
                            field.FieldName = ObjectHelper.GetString(row2["COLUMN_NAME"]);
                            field.FieldNumber = ObjectHelper.GetInt(row2["ORDINAL_POSITION"]);
                            table.Fields.Add(field);
                        }
                        database.Tables.Add(table);
                    }
                    DataSet set3 = helper.ExecuteQuery(CommandType.Text, string.Format("select distinct TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA='{0}' and TABLE_TYPE='VIEW'", str), null);
                    foreach (DataRow row3 in set3.Tables[0].Rows)
                    {
                        database.Views.Add(row3[0].ToString());
                    }
                    DataSet set4 = helper.ExecuteQuery(CommandType.Text, string.Format("select distinct SPECIFIC_NAME from ROUTINES where ROUTINE_SCHEMA='{0}'", str), null);
                    foreach (DataRow row3 in set4.Tables[0].Rows)
                    {
                        database.StoreProcedures.Add(row3[0].ToString());
                    }
                    return true;
                }
                catch
                {
                    return false;
                }
            }
        }
  • 相关阅读:
    Apache Solrj EmbeddedSolrServer使用
    Apache Solr实现竞价排名
    【Lucene词汇解释】positionIncrement用法
    Zoie:基于Lucene实时的搜索引擎系统
    Solr的创建者介绍Apache Solr : 基于Lucene的可扩展集群搜索服务器
    Solr的自动完成实现方式(第三部分:Suggester方式续)
    Solr的自动完成实现方式(第二部分:Suggester方式)
    【JAVA基础】HashSet、LinkedHashSet、TreeSet使用区别
    Katta:基于Lucene可伸缩分布式实时搜索方案
    老罗Android开发视频教程(Android入门介绍)九集集合
  • 原文地址:https://www.cnblogs.com/TNTZWC/p/2053243.html
Copyright © 2011-2022 走看看