Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройств Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ .NET Compact FrameworkΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 139

Автор Иво Π‘Π°Π»ΠΌΡ€Π΅

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ DataSet ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ± эффСктивности ΠΊΠΎΠ΄Π°. ΠŸΠΎΡ‡Ρ‚ΠΈ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ эффСктивный ΠΊΠΎΠ΄, Ρ‚Π°ΠΊ ΠΈ ΠΊΠΎΠ΄, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΡ€Π°ΠΉΠ½Π΅ Π½ΠΈΠ·ΠΊΠ°. РаспространСнной ошибкой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², приводящСй ΠΊ Π½ΠΈΠ·ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠ΄Π°, являСтся поиск Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ столбцов ΠΏΠΎ ΠΈΡ… строковым ΠΈΠΌΠ΅Π½Π°ΠΌ, Π° Π½Π΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π±ΠΎΠ»Π΅Π΅ эффСктивных ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² индСксирования. Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅Ρ‚ Π΅Ρ‰Π΅ большСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ доступС ΠΊ полям строк Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эта опСрация часто выполняСтся Π² ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π°Ρ…, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ количСство строк. ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ элСмСнтам ΠΏΡ€ΠΈ осущСствлСнии Ρ‚Π°ΠΊΠΎΠ³ΠΎ доступа ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ трСмя способами, пСрСчислСнными Π½ΠΈΠΆΠ΅ Π² порядкС, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

1. Поиск ΠΏΠΎΠ»Π΅ΠΉ с использованиСм строковых ΠΈΠΌΠ΅Π½. НапримСр: myRow["myColumnName"]; этот способ являСтся самым ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для нахоТдСния Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ поля строка ΠΈΠΌΠ΅Π½ΠΈ искомого столбца Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ со всСми ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈΡΡ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ столбцов.

2. Поиск ΠΏΠΎΠ»Π΅ΠΉ с использованиСм цСлочислСнных индСксов. НапримСр: myRow[2]; Π’Π²ΠΈΠ΄Ρƒ использования Ρ†Π΅Π»Ρ‹Ρ… чисСл этот способ прСдставляСт собой ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с поиском ΠΏΠΎ строковым ΠΈΠΌΠ΅Π½Π°ΠΌ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ваш ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ просмотр ΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ цСлочислСнных индСксов столбцов

3. Поиск ΠΏΠΎΠ»Π΅ΠΉ, с использованиСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² столбцов. НапримСр: myRow[myColumnObject], Π³Π΄Π΅ myColumnObject прСдставляСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° System.Data.DataColumn. Π­Ρ‚ΠΎΡ‚ способ обСспСчиваСт Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΠ±ΠΎΠΈΠΌΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ваш ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ столбца (column object), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅Π΅ вас ΠΏΠΎΠ»Π΅.

Π’ листингС 14.3 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚Ρ€Π΅Ρ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ², описанных Π²Ρ‹ΡˆΠ΅. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΈΠΏΠΈΡ‡Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΡƒΡŽ поиск ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ записСй.

ВычислСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ описанному Π½ΠΈΠΆΠ΅ ΡΡ†Π΅Π½Π°Ρ€ΠΈΡŽ.

АгСнты транспортной ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π½Π° Π²Ρ‹Π΅Π·Π΄Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ устройства для внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π΅ слСдования ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ². Π’ силу Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎΠ³ΠΎ измСнСния ΠΏΠΎΠ³ΠΎΠ΄Π½Ρ‹Ρ… условий, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ·-Π·Π° снСгопада, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π²ΠΎ внСсСнии ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ слСдования Π³Ρ€ΡƒΠΏΠΏΡ‹ пассаТиров, Π΄ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π½Π° Π²ΠΎΠΊΠ·Π°Π»Π΅ ΠΈΠ»ΠΈ Π² аэропортС ΠΈΠ»ΠΈ находящихся Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² двиТущСмся ΠΏΠΎΠ΅Π·Π΄Π΅ ΠΈΠ»ΠΈ Π½Π° Π±ΠΎΡ€Ρ‚Ρƒ самолСта. ВрСбуСтся ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π°Ρ… пСрСсадки пассаТиров ΠΈ ΠΏΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ слСдования. ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ способ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΠΎΡ€ΡƒΠΆΠΈΡ‚ΡŒ сотрудников транспортной ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ устройствами, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТится информация ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°Ρ… двиТСния транспортных срСдств. ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ мобильного прилоТСния нСсколько Π°Π³Π΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ ΠΈ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, избавляя ΠΈΡ… ΠΎΡ‚ нСобходимости ΡΡ‚ΠΎΡΡ‚ΡŒ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΠΏΠ΅Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ„ΠΎΡ€ΠΌΠΈΡ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ΅Π·Π΄Π½Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π΅Ρ‰Π΅ Π΄ΠΎ окончания Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ рСйса ΠΏΠΎΠ΅Π·Π΄Π° ΠΈΠ»ΠΈ самолСта. Π’ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройствах содСрТится Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ список ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ подробная информация ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°Ρ… ΠΈΡ… слСдования. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ процСсс поиска ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… записСй ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ошибок, ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ устройства ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½Ρ‹ устройствами для считывания Π½ΠΎΠΌΠ΅Ρ€Π° ΠΊΡ€Π΅Π΄ΠΈΡ‚Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ пассаТира, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС ΠΊΠ»ΡŽΡ‡Π° для провСдСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ поиска. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ запись ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½Π°, свСдСния ΠΎ Π΅Π³ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Π’ нашСм тСстовом ΠΊΠΎΠ΄Π΅ примСняСтся упрощСнная вСрсия этого сцСнария, ΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π΄Π°Ρ‚Π° рСйса ΠΈ Π½ΠΎΠΌΠ΅Ρ€ ΠΊΡ€Π΅Π΄ΠΈΡ‚Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ. РазумССтся, Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ приходится ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ доступ ΠΊ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ многочислСнным Π΄Π°Π½Π½Ρ‹ΠΌ, Π½ΠΎ Π² нашСм ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ всС основныС ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΡƒΡ‡Ρ‚Π΅Π½Ρ‹, Π΅ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, хранящиСся Π½Π° устройствС, ΠΈ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ срСди Π½ΠΈΡ… поиск ΠΈ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… сцСнариСв Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ большСго числа ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ поиска, ΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ†Π΅Π½Π΅Π½Π° ΠΏΡƒΡ‚Π΅ΠΌ экстраполяции Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² выполнСния нашСго тСстового прилоТСния.

Π’ Ρ‚Π°Π±Π». 14 1 прСдставлСны Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния тСста Π½Π° физичСском устройствС Pocket PC. Как ΠΈ слСдовало ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, поиск ΠΏΠΎ тСкстовому содСрТимому (столбСц А) оказался самым ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π» 32,82 сСкунды. Поиск с использованиСм цСлочислСнного индСкса (столбСц Π‘) ΠΏΡ€ΠΈΠ²Π΅Π» ΠΊ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΠΎΠΌΡƒ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡŽ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π½Π° 8% ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π» 30,28 сСкунд. Поиск с использованиСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² DataColumn (столбСц Π’) принСс 28%-Π½ΠΎΠ΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с тСкстовым поиском. Π’Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ довольно Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ явно ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΠ΅Ρ‚ Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² DataColumn ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ цикличСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ поиска Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ….


Π’Π°Π±Π»ΠΈΡ†Π° 14.1 ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ тСстового прилоТСния ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ 500 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ с использованиСм 201 строки Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° физичСском устройствС Pocket PC

НомСр тСста (А) ВСкстовый индСкс, с (Π‘) ЦСлочислСнный индСкс, с (Π’) Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ DataColumn, с 1 32,538 30,09 23,554 2 33,063 30,387 23,491 3 32,87 30,372 23,582 Π‘Ρ€Π΅Π΄Π½Π΅Π΅ 32,82 30,28 23,54 ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ 100% 92% 72% 

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² листингС 14.3 ΠΊΠΎΠ΄ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² Ρ„ΠΎΡ€ΠΌΡƒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Pocket PC. Для создания ΠΈ выполнСния прилоТСния потрСбуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия.

1. ЗапуститС Visual Studio .NET (2003 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ позднюю Π²Π΅Ρ€ΡΠΈΡŽ) ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π² качСствС Ρ‚ΠΈΠΏΠ° прилоТСния C# Smart Device Application.

2. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π² качСствС Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Pocket PC. (Для вас Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски создан ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΈ Π½Π° экранС появится ΠΎΠΊΠ½ΠΎ конструктора Ρ„ΠΎΡ€ΠΌ Pocket PC.)

3. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Ρ„ΠΎΡ€ΠΌΡƒ элСмСнт управлСния Button. ΠŸΡ€ΠΈΡΠ²ΠΎΠΉΡ‚Π΅ Π΅ΠΌΡƒ имя buttonRunTest. 

4. Π”Π²Π°ΠΆΠ΄Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° элСмСнтС управлСния Button Π² ΠΎΠΊΠ½Π΅ конструктора Ρ„ΠΎΡ€ΠΌ. Π’ автоматичСски сгСнСрированной ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° событий Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ buttonRunTest_Click() ΠΈΠ· листинга 14.3.

5. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ вСсь ΠΎΡΡ‚Π°Π²ΡˆΠΈΠΉΡΡ ΠΊΠΎΠ΄ Π² Ρ‚ΠΎΡ‚ ΠΆΠ΅ класс.

6. УстановитС для свойства MinimizeBox Ρ„ΠΎΡ€ΠΌΡ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false. Благодаря этому Π²ΠΎ врСмя выполнСния Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ ΠΏΡ€Π°Π²ΠΎΠΉ части Ρ„ΠΎΡ€ΠΌΡ‹ появится ΠΊΠ½ΠΎΠΏΠΊΠ° OK, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Π»Π΅Π³ΠΊΠΎ смоТСтС Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ ΠΈ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· прилоТСния. Π­Ρ‚Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ оказываСтся ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΏΡ€ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠΌ тСстировании прилоТСния.

7. ЗапуститС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΆΠ°Π² ΠΊΠ»Π°Π²ΠΈΡˆΡƒ <F5>. Для запуска всСх Ρ‚Ρ€Π΅Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² тСстирования Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ слСдуСт Ρ‰Π΅Π»ΠΊΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅. ПослС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³ΠΎΠ½Π° прилоТСния Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΎΠΊΠ½ΠΎ сообщСний, содСрТащСС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ тСстирования.

Листинг 14.3. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ с использованиСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² DataSet

System.Data.DataSet m_myDataSet; //ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Dataset для тСста


//Π˜Π½Π΄Π΅ΠΊΡΡ‹ столбцов ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ

private bool m_indexesLookedUp = false;

private const int INVALID_INDEX = -1;

private int m_IndexOfTestColumn_CreditCard = INVALID_INDEX;

private int m_IndexOfTestColumn_TravelDate = INVALID_INDEX;

private int m_IndexOfTestTable = INVALID_INDEX;


//Π‘Ρ‚ΠΎΠ»Π±Ρ†Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°, ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ

System.Data.DataColumn m_TestColumn_CreditCard;

System.Data.DataColumn m_TestColumn_TravelDate;

private System.Data.DataTable m_TableCustomerInfo;


//3 Π²ΠΈΠ΄Π° тСстов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ

public enum testType {

 textColumnLookup, cachedIndexLookup, cachedColumnObject

}


//Π­Ρ‚ΠΈ константы ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½Ρ‹Π΅ характСристики тСстов

const int DUMMY_ROWS_OF_DATA = 100;

const int NUMBER_TEST_ITERATIONS = 500;


//Вабличная информация

const string TABLE_NAME_PASSENGERINFO = "CustomerTravelInfo";

const string COLUMN_NAME_DATE_OF_TRAVEL = "DateOfTravel";

const string COLUMN_NAME_PASSENGER_NAME = "PassengerName";

const string COLUMN_NAME_PASSENGER_CREDIT_CARD = "PassengerCreditCard";

const string TEST_CREDIT_CARD = "IvoCard-987-654-321-000";


//--------------------

//Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…

//--------------------

private void createDataSet() {

 //1. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ DataSet