User Tag List

Ցույց են տրվում 1 համարից մինչև 10 համարի արդյունքները՝ ընդհանուր 10 հատից

Թեմա: BatutConnector - SQL աղյուսակների կառավարման framework

Ծառի տեսքով դիտում

Նախորդ գրառումը Նախորդ գրառումը   Հաջորդ գրառումը Հաջորդ գրառումը
  1. #2
    ^ ^ Արամ-ի ավատար
    Գրանցման ամսաթիվ
    29.10.2006
    Հասցե
    Երևան
    Գրառումներ
    4,986
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    Գրառում

    Նախ ծանոթանանք սկզբնական արխիտեկտուռայի հետ՝

    Հիշենք այս "դիագռամանմանը": Հետագա 1-2 պոստերի ընթացքում սա մեզ պետք կգա։
    Սկսենք sysInfSchema-ից։ Այս օբյեկտը նախատեսված է INFORMATION_SCHEMA-ից, որտեղ SQL Server-ում պահվում են ընդհանուր Database-ի մասին տեղեկությունները, կոնկրետ աղուսյակի, որը նշվել է sysMain-ը ժառանգած կլասի միջոցով(cMainTable փոփախական), սյուների արժեքները ստանալու համար։
    Ինչպե՞ս ենք մենք ստանում կոնկրետ աղյուսակիի սյուների անունները։
    Կոդը՝
    Կոդ:
     static public List<String> GetTableColumns(string tableName) {           
                List<String> retVal;
                String tmpTableName = tableName.ToUpper();
                if (!TableColumnsCache.ContainsKey(tmpTableName)) { // If table not found in cache
                    retVal = new List<String>();
                    string tmpQueryString = "SELECT name FROM sys.columns WHERE object_id = OBJECT_ID(@TableName)";
                    SqlCommand tmpSqlCommand = new SqlCommand(tmpQueryString, sysDataBaseConnect.SQLConnection);
                    tmpSqlCommand.Parameters.AddWithValue("@TableName", tableName);
                    SqlDataReader columnsReaded = sysDataBaseConnect.executeQuery(tmpSqlCommand);
                    if (columnsReaded.HasRows) {
                        while (columnsReaded.Read()) {
                            retVal.Add(columnsReaded["name"].ToString());
                        }
                        TableColumnsCache.Add(tmpTableName, retVal); // Add to columns catch
                    }
                    else {
                        LastErrorMsg = "Table Not Found";
                    }
                    columnsReaded.Close();
                }
                else {
                    retVal = TableColumnsCache[tmpTableName];
                }
                return retVal;
    Եթե 1 անգամ սեսիայի ընթացքում աղյուսակի սյուների անուները ստացել ենք, ապա էլ կարիք չկա նորից ստանալու, դրա համար ստանալուց հետ պահում ենք TableColumnsCache օբյեկտի մեջ, որը հայտարարված է այսպես՝ Dictionary<string, List<string>>, հետագայում, եթե ուրիշ օբյեկտ այդ թեյբլի աղյուսակները ուզի, իրեն միանգամից կվերադարձնենք Cache-ից, ոչ թե նորից հարցում կկազմենք դրանք ստանալու համար։ (sysInfSchema օբյեկտը static է)

    Այս ֆունկցաին կանչվում է sysMain-ի Init() - ֆունկցիաից, որի միջոցով էլ ստեղծվում են մեր հիմնական 2 dictionary-ների key-երը կոդը՝
    Կոդ:
              cTableColumnsList = sysInfSchema.GetTableColumns(this.cMainTable);
                    if (cTableColumnsList.Any()) {
                        foreach (string colName in cTableColumnsList) { // Loop through Columns list
                            this.cPhysicalRec.Add(colName, "");
                        }
                        this.cCurrentRec = new Dictionary<string, string>(this.cPhysicalRec);
                        retVal = true;
                    }
    Ինչպես երևում է Diagram—ից մեր sysMain օբյեկտը ունի 2 Dictionary օբյեկտներ՝
    Կոդ:
    protected Dictionary<string, string> cPhysicalRec; // Physical Rec ('column' => 'value' )
    protected Dictionary<string, string> cCurrentRec; // Current Record ('column' => 'value' )
    cPhysicalRec-ի մեջ, երբ կանչվում է SetId(string uniqueID) ֆունկցիան (որի մասին հետո կխոսենք) համապատասխանաբար լցվում են table-ի աղյուսակների արժեքները, հետո
    նույն արժեքները copy են լինում cCurrentRec-Ի մեջ, որի հետ էլ հետագայում աշխատում ենք՝
    SetValue, GetValue, SetRecord...սրանից մասին հետո։
    Վերջին խմբագրող՝ Արամ: 23.02.2015, 22:54:

Թեմայի մասին

Այս թեման նայող անդամներ

Այս պահին թեմայում են 1 հոգի. (0 անդամ և 1 հյուր)

Համանման թեմաներ

  1. Գրառումներ: 29
    Վերջինը: 10.07.2012, 13:26
  2. Երկաթուղին կտան օտարերկրյա կառավարման
    Հեղինակ՝ Marduk, բաժին` Քաղաքականություն
    Գրառումներ: 42
    Վերջինը: 18.06.2011, 10:25
  3. Սևանա լճի ջրային ռեսուրների կառավարման մոդել
    Հեղինակ՝ Adriano, բաժին` Մարդ և շրջակա միջավայր
    Գրառումներ: 7
    Վերջինը: 26.08.2010, 18:12
  4. Կառավարման, որ ձևն է ընդունելի Հայաստանի համար?
    Հեղինակ՝ Adriano, բաժին` Քաղաքականություն
    Գրառումներ: 1
    Վերջինը: 02.02.2010, 08:24

Էջանիշներ

Էջանիշներ

Ձեր իրավունքները բաժնում

  • Դուք չեք կարող նոր թեմաներ ստեղծել
  • Դուք չեք կարող պատասխանել
  • Դուք չեք կարող կցորդներ տեղադրել
  • Դուք չեք կարող խմբագրել ձեր գրառումները
  •