Exemple #1
0
    /// <summary>
    /// 获取列的信息
    /// </summary>
    /// <returns></returns>
    public static void InitColumn(Data_Source item, bool IsLoad, string tableName)
    {
        var key = string.Format(AppEtl.CacheKey.Column, item.Host, tableName);

        if (RedisInfo.Exists(key, AppEtl.CacheDb) && IsLoad)
        {
            return;
        }

        var list = new List <CacheColumn>();
        var dt   = new DataTable();

        using (var conn = DbProviderFactories.GetFactory(item.Type).CreateConnection())
        {
            conn.ConnectionString = AppCommon.GetConnStr(item);
            conn.Open();
            var cmd = conn.CreateCommand();
            cmd.CommandText = ColumnSql(item, tableName);

            if (cmd.CommandText == "")
            {
                return;
            }

            var rd = cmd.ExecuteReader();
            dt.Load(rd);
            rd.Close();
        }

        foreach (DataRow row in dt.Rows)
        {
            var column = new CacheColumn();
            column.Name      = (row.ItemArray[0] == DBNull.Value ? "" : row.ItemArray[0].ToString());
            column.Type      = row.ItemArray[1] == DBNull.Value ? "" : row.ItemArray[1].ToString();
            column.Length    = row.ItemArray[2] == DBNull.Value ? 0 : int.Parse(row.ItemArray[2].ToString());
            column.Comments  = row.ItemArray[3] == DBNull.Value ? "" : row.ItemArray[3].ToString();
            column.IsKey     = row.ItemArray[4].ToString() != "0" ? true : false;
            column.Precision = row.ItemArray[7] == DBNull.Value ? 0 : int.Parse(row.ItemArray[7].ToString());
            column.ShowName  = string.Format("{0}({1})", column.Name, column.Comments);

            list.Add(column);
        }

        RedisInfo.Set <List <CacheColumn> >(key, list, 8640, AppEtl.CacheDb);
    }
Exemple #2
0
    /// <summary>
    /// 表说明
    /// </summary>
    /// <returns></returns>
    public static void InitTable(Data_Source item, bool IsLoad)
    {
        var key = string.Format(AppEtl.CacheKey.Table, item.Host);

        if (RedisInfo.Exists(key, AppEtl.CacheDb) && IsLoad)
        {
            return;
        }

        var list = new List <CacheTable>();
        var dt   = new DataTable();

        using (var conn = DbProviderFactories.GetFactory(item.Type).CreateConnection())
        {
            conn.ConnectionString = AppCommon.GetConnStr(item);
            conn.Open();
            var cmd = conn.CreateCommand();
            cmd.CommandText = TableSql(item);

            if (cmd.CommandText == "")
            {
                return;
            }

            var rd = cmd.ExecuteReader();
            dt.Load(rd);
            rd.Close();
        }

        foreach (DataRow row in dt.Rows)
        {
            var table = new CacheTable();
            table.Comments = row.ItemArray[1] == DBNull.Value ? "" : row.ItemArray[1].ToString();
            table.Name     = row.ItemArray[0] == DBNull.Value ? "" : row.ItemArray[0].ToString();
            list.Add(table);
            Parallel.Invoke(() => {
                InitColumn(item, IsLoad, table.Name);
            });
        }

        RedisInfo.Set <List <CacheTable> >(key, list, 8640, AppEtl.CacheDb);
    }