Cтектер

Стек (stac k) – кезекке ұқсас контейнер.Элементтерге қолжетімділік үшін басқа әдістер қолданылады.Стекке соңғы қосылған элемент бірінші болып саналады. Стек – бұл «соңғы кірді,бірінші шықты» позициясымен жұмыс істейді.

Push () әдісімен стекке үш элементті орналастыру. Foreach операторымен IEnumerable интерфейсін қолданатын итерация орындалады.

Var alphabet = new Stack <char> ();

Alphabet.Push(‘A’);

Alphabet.Push(‘B’);

Alphabet.Push(‘C’);

Foreach (string item in alphabet)

{

Console.Write(item);

}

Console.WriteLine ();

Кезекте элементтер соңғы қосылған элементтен бірінші ретке қарай оқылады, мынадай нәтиже алынады:

СВА


27. Сортталған және жүйелі тізімдермен жұмыс. Жиындар мен сөздікті пайдалану.

Сұрыпталған тізім

Егер кілттер бойынша сұрыпталған коллекция қажет болса, онда SortedList<TKey, TValue> қолдануға болады. Бұл класс элементтерді кілттік белгілер негізінде сұрыптайды. Белгілердің кез келген түрін ғана емес, сонымен қатар, кілттердің де кез келген түрін қолдануға болады. Төменде келтірілген мысалда сұрыпталған тізім кілт ретінде құрылады және белгілері string түрін қабылдайды. Конструктор үнсіз келісім бойынша бос тізім құрады, оған Add () тәсілінің көмегімен екі кітап енгізіледі. Қолданыстағы конструкторды қолдана отырып, тізімнің сыйымдылығын көрсетуге болады, сонымен қатар, IComparer<TKey> интерфейсін орындайтын, тізімдегі элементтерді сұрыптау үшін қолданылатын объектлерді жіберуге болады.

Add () тәсілінің бірінші параметрі – кілт (кітаптың басы); екінші парметрі – белгілер (ISBN нөмірі). Элементтерді тізімге Add () тәсілімен бірге енгізу үшін индексаторды қолдануға болады. Индексатор индекстің параметрі ретінде кілт талап етеді. Егер мұндай кілт бар болатын болса, Add () тәсілі ArgumentException шығарады. Егер кілттің осы белгісі индексатормен қолданылса, онда жаңа белгі ескі белгіні алмастырады. Keys және Values қасиеттері барлық кілттер мен белгілерге бірден қол жеткізуге мүмкіндік береді. Values қасиеті IList<TValue> қайтарады, ал Keys қасиеті — IList<TKey> қайтады, сондықтан бұл қасиеттерді foreach бірге қолдануға болады:

foreach (string isbn in books.Values)

{ Console.WriteLine(isbn); }

foreach (string title in books.Keys)

{ Console.WriteLine(title); }

Жүйелі тізімдер

.NET Framework динамикалық тізімдері үшін жалпыланған List<T> класы қарастырылған. Бұл класс IList, ICollection, IEnumerable, IList<T>, ICollection<T> және IEnumerable<T> интерфейстерін жүзеге асырады.

Жүйелі тізімнің ерекшелігі ортасына қою операциясы кезінде тез орындалу болып табылады. Бұл жағдайда тек Next(келесі) нұсқау ғана алдыңғы және келесі элементтің Previos(алдыңғы) өзгеруі тиіс болатын элементі жаңа элементті нұсқау үшін List<T>класссында жаңа элементті қою кезінде барлық кейінгі элементтер жылжуы керек.

Арине, жүйелі тізімдердіңде өз кемшіліктері бар. Мысалы, барлық жүйелі тізімінің барлық элементтері тек бір-бірінен кейін ғана қолжетімді. Сондықтан ортасында немесе тізімнің соңында тұрған элементті табу үшін едәуір көп уақыт өтеді.

Жүйелі тізім өзінің ішінде элементтерді жай ғана сақтай алмайды. Онымен бірге әрбір келесі және алдыңғы элементтер ақпараттары болу керек. Міне неге Linkedlist LinkedListNode<T> элемент типін ұсынады. LinkedListNode<T> класының көмегімен алдыңғы және келесі тізімнің элементтеріне қарауға мүмкіншілік пайда болады. LinkedListNode<T> класы List, Next, Previous және Value құрамын анықтайды. List құрамы LinkedList<T> қауымдастырылған түйін объектін қайтарады. Next, Previous құрамдары тізім бойынша итерацияны белгілейді, келесі және алдыңғы элементтерге мүмкіндік ашады.

Жүйелі тізім құжаттарды ішінде ұстайды, мысалы кезекті, бірақ бұл жолы қауымдастырылған, онымен бірге қосымша артықшылықтарды иеленеді. Жүйелі тізімнің ішінде құжаттар өзінің басымдылықтарымен іріктеледі.

LinkedListNode<T> класы Next және Previous құрамдарын қосады, бір түйіннің келесісіне араласуына себеп болады. List<T> элементіне қарау үшін LinkedListNode<Document> анықталған. Соңғы құжатқа кез-келген басымдылықпен ену үшін List<LinkedListNode> 10 элементке дейін сақтайды, әрбір соңғы құжат өзінің әртүрлі басымдылығымен сілтеме жасайды. Келесі талқылауда соңғы құжаттың басымдылық сілтемесі басымдылық түйіні деп аталады.

PriorityDocumentManager класы орталық бөлігінің шешімі болады. Бұл класты пайдалану өте оңай. Бұл кластың қолжетімді интерфейстің көмегімен жүйелі тізімге Document-тің жаңа элементтерін қосуға болады. Сонымен қатар алғашқы құжатты шығаруға болады. Тестілеу мақсатында коллекцияның барлық элементтері көрсетілетін амалдарының тізімде қалай байланысқаны қарастырылады.

Сөздіктер

Сөздік (dictionary) элементке кілт бойынша қолжетімділікті қамтамасыз етуді іске асыратын, мәліметтердің қиын құрылымын қамтиды. Сөздіктердің негізгі қасиеті – кілт негізінде тез іздестіру. Сонымен қатар, элементтерді енгізу мен жоюға болады, бірақ өнімділіктің шығынынсыз, соңғы элементті жадыға қалдыру қажеттілігіне байланысты оны List<T> жүзеге асырады.

10.5 суретте сөздіктің ықшамдалған түрі көрсетілген. Мұнда сөздіктің кілті ретінде қызметкерлердің идентификаторлары алынған, мысалы, В4711. Кілт хешке тасымалданады. Хеште индекстерді белгілерімен ассоциациялау үшін сандар құрылады. Содан соң индекс белгіге сілтеме жасайды. Суреттегі модель ықшамдалған болып табылады, себебі индексті енгізудің жалғыз мүмкіндігі бірнеше белгілерді ассациациялау болуы мүмкін, және индекс тал түрінде сақталуы мүмкін.

.NET Framework-та сөздіктердің бірнеше түрі ұсынылады. Соның ішіндегі қолдануға болатын негізгі класы -Diсtionary<TKey, TValue>.


28. Интегралданған сұраныс тілі. List <T> -ті пайдатанушы объектілерге арналған дәстүрлі сұраныстар.

List<T> типімен қолданған конструкторды кезекті құру барысында колдануға болады. Конструктор үндеместік бойынша бос кезек құрады, бірақ конструкторды бастапқы сыйымдылықты нұсқау ретінде қолдануға болады. Кезекке элементті қосу шамасы бойынша егер сыйымдылық анықталмаған болса алдымен 4, содан соң 6, 16 және 32 элемент орналастыруға мүмкіндік бере отырып сыйымдылық артады. List<T> класына ұқсас кезектің сыйымдылығы керек жағдайда екі еселенеді. Жалпыланбаған Queue класының конструкторы үндеместік бойынша 32 бос элементтерден бастапқы жиымды құруымен ерекшеленеді.

Осы дайын мәндер мен тізімдер үшін List<T>классы FindAll () Soft () қолданылған.

private static void LinqQuery ()

{

var query = from r in Formula1.GetChampions ()

where r.Country == “Brazil”

orderby r.Wins descending

select r;

foreach (Racer r in query)

{

Console.WriteLine (“{0:A}”, r);

}

}

Жауабы: барлық сұраныстардың Бразилияда өткен чемпионатқа қатысушылардың тізімі белгіленген.

Төменде көрсетілген оператор LINQ сұранысы болып келеді:

from r in Formula1.GetChampions ()

where r.Country == “Brazil”

orderby r.Wins descending

select r;

From, where, orderby, descending, select конструкциялары – берілген сұраныстағы алдын - ала анықталған кілттік сөздер.

Сұраныстың көрінісі from конструкциясынан басталып, select немесе group конструкциясынан аяқталуы керек. Олардың арасына қосымша түрде where, orderby, join, let, from конструкцияларын қолдануға болады.


29. Қателер және ерекшеліктер. Ерекшеліктерді өңдеу.

Қателер әрқашан да қосымшаны кодтайтын программисттің қателігінен болмайды. Кейде қосымша соңғы пайдаланушының іс-әрекетінен қате шығарады н/е код орындалатын ортаның шақыруымен болады. Бірақ кез келген жағдайда сіз өзініздің қосымшаныздың қате шығаруы мүмкін екенін есте сақтау керек ж/е соған байл-ты шаралар қолдану керек.

.NETFramework – те қателерді жою жүйесі қарастырылған. C# тілінің қателерді жою механизмі қателерді туындататын кодтан бөлек жазуға мүмкіндік береді. Сіздің жазған кодыңыздың қаншалықты жақсы жазылғанына қарамастан құрылған программалар қатенің кез келген түрін жоя білуі керек. Мысалы, кейбір қиын процессті жасау барысында код өзінің файлды оқуға құқығы жоқ екенін біледі, н/е жіберу барысында байланыс үзіледі. Мұндай жағдайда метод тек қана қате болғаны жайында код шығарғаны жеткіліксіз. Тіпті кейде қате шыққанға дейін 15-20 ішкі методтар шақырылған болуы мүмкін. Қате шығармай шығу үшін осы 15-20 шақырулардан “аттап” шығуымызға тура келеді. С# тілінде осындай жағдайларды болдырмау үшін өте пайдалы құрал бар, яғни дербес жағдайлар механизмі.

Ерекше жағдайды генерацияламастан бұрын оның типі дұрыс таңдалуы керек.System. Exseption класы әрқашан қол жетімді,оның мақсаты – базалық кластарға жұмыс істеу: берілген кластың данасын ерекше жағдай ретінде құру программалауда қателік болып табылады,себебі ол қате жағдай туралы еш мәлімет алып жүрмейді. Оның орнына.Net Framework ортасы System.Exception –нан мұраланған кластың көптеген басқа ерекше жағдайларына ие.Оның әрқайсысы арнайы анықталған жағдайға сай, және де жеке класты еркін анықтасақ болады. Бұның идеясы,берілген жағдайға нақтырақ келетін, ерекше жағдай класының данасын активтілей отыра ерекше жағдайға көбірек мәлімет беру.

Біздің қолданулышылық ерекшеліктерімізді алатын SolicitColdCall мысалының Main() әдісінен бастаймыз. Назар аударыңыз, бізге System.IO атаулар кеңістігінің файлдармен жұмыс істейтін классатарымен жұмыс істеуге тура келеді және де System атаулар кеңістігінің жалпы класстарымен де жұмыс істейміз.

Using System

using System.IO

namespaceWrox.ProCSharp.AdvancedCSharp

{ classMainEntryPoint

{ static void Main()

{ Console.Write(“Файл атын еңгізіңіз,”+ “шақыруға қажетті тұлғалар тізімін>”);

string filename =Console.Readline();

ColdCallFileReaderpeopleToRing=new ColdCallFileReader();

try

{ peopleToRing.Open(fileName);

for(inti=0;i<peopleToRing.NPeopleToRing;i++)

{ peopleToRing.ProcessNextPerson(); }

Console.WriteLine(“ Барлық абонеттер дұрыс өңделді”)

}

catch(FileNotFoundException ex)

{ Console.WriteLine(“ {0} ондай файл жоқ”,fileName); }

catch(ColdCallFileFormatException ex)

{ Console.WriteLine(“{0} файлы бүлінген”, fileName);

ConsoleWriteLine(“ақаудың себебі:{0}”, ex.Message);

if (ex.InnerException!=null)

{ Colnsole.WriteLine(“ішкі ерекшелік: {0}”, ex inner Exception.Message); }

}

catch(Exception ex)

{ Console.WriteLine(“ерешелік орын алды:\n”+ex.Message); }

finally

{ peopleToRing.Dispose(); }

Console.ReadLine();

}

}

Бұл код қарапайым файлдан аттарды өңдегеннен қарағанда көбірек пайда әкеледі. Барлығы қолданушыға файл аты жайлы сұраныс жібеуден басталады. Содан кейін файлды оқуды басқаратын ColdCallFileReader класының көшірмесі құрылады. Назар аударыңыз, бұл әрекет try блогынан сыртта жасалады, себебі мұнда айнымалылар catch және finally блоктарында қажет болады және егер оларды try блогының ішінде жариаласа қисық жақшаны жабу кезінде айнымалылырдың әрекет ету облысы тоқтап қалады.

Try блогында файл ашылады да осы файлда сақталған адамдардың тізімі негізінде цикл орындалады. ColdCallFileReader.ProcessnextPerson() келесі абонеттің атын оқиды және көрсетеді, ал ColdCallFileReader.NPeopleToRing файлда қанша та сақталуға тиістігін хабарлайды. Кодта 3 блок бар: catch- біреуіFileNotFoundException үшін, екіншісі ColdCallFileFormatException үшін және барлық қалған ерекшеліктерді алу үшін.NET.

FileNotFoundException ерекшелігі туындаған жағдайда хабларлама көрсетіледі. Назар аударыңыз бұл catch блогының өзінде ерекшелік көшірмесі(экземпляр) қолданылмайды. Бұл блок жай ғана біздің қолданбамыздың қолданушыға деген жолдастығын көрсетеді. Ерекшелік объектілері әдетте құрушыларға пайдасы тиетін техникалық ақпаратты сақтайды, бірақ бұны соңғы қолданушыға көрсетіп қажеті жоқ. Сондықтан осы жағдайда біз өзіміздің қарапайымдатылған хабарламамызды құрамыз.

ColdCallFileFormatException өңдегіші еңгізілген ерекшелік жайлы толық техникалық ақпаратты қалай беруге болатыны жайлы көрсетілімдерді береді.

Соңында барлық қалған бірыңғай ерекшеліктерді ала отырып біз қолданушыға жолдастық хабарлама көрсетеміз.

Finally блогы ресурстарды тазалайды. Бұл жағдайда ол дегеніміз ашылған файлды жабу ColdCallFileReader.Dispose() әдісімен орындалады.

Қолданушының ерекшеліктерін ояту

Енді файлды оқитын және қолданушының ерекшеліктерін генрациялайтын ColdCallFileReader класының анықталуына қарайық. Бұл класс сыртқы файлдармен байланысты қолдайтындықтан оның дұрыс түрде жабылуы қамтамасыз етілуі тиіс. Сондықтан бұл класты IDisposable интерфесінен мұралайық. Алғашында бірнеше айнымалы жариялайық:

Class ColdCallFileReader: IDisposable

{

FileStreamfs;

StreamReadersr;

uintnPeopleToRing;

boolisDisposed=false;

boolisOpen=false;

FileStreamжәне StreamReaderSystem.Ioатаулар кеңістігінде орналасады және базалық класстар болып табылады және файлды оқуға қолданылады. FileStream файлға алғашқы рет қосылуға рұқсат беретін қызмет істесе, StreamReader тексттік файлдарды оқуға арналған және ReadLine() әдісін орындайды, ал ReadLine() әдісі файлдағы жолды оқиды. Толығырақ StreamReader жайлы 29 бөлімде айтамыз.

isDisposal өрісі Dispose() әдісі шақырылғанын немесе шақырылмағанын көрсетеді. ColdCallFileReader класы Dispose() әдісі шақырылған жайғдайда жасалса онда оған екінші рет байланысты ашып объектіні қолдануға рұқсат берілмейді.

Файлды ашу процессі және оның бірінші жолын оқу процессі Open() әдісі арқылы жасалады.

public void Open(string file Name)

{

if(isDisposed)

{ throw new ObjectDisposedException(“peopleToRing”); }

fs= new FileStream(filename, fileMode.Open);

sr= new StreamReader(fs);

try

{ stringfirstLine=sr.ReadLine();

nPeopleToRing=uint.Parse(firstLine);

isOpen=true;

}

catch (FormatException ex)

{ throw new ColdCallFileFormatException(“алғашқы жолда сан жоқ”,ex); }

}

Бұл әдіс алдымен өзінің дұрыс жолмен шақырылғанын тексереді және егер ол олай болмаған жағдайда алдын-ала анықталып қойған ObjectDisposedException ерекшелігін шақырады.Open() әдісі isDisposedөрісін Dispose() бұған дейін шақырылмағанына тексереді. Dispose()-ді шақыру клиент жұмысты аяқтағанын білдіргендіктен одан кейін жаңа файлдық байланысты ашу қателік ретінде қабылданады.

Ары қарай әдісте қатысатын 2 try блогының біреуі ашылады. Оның біріншісінің қызметі – кез келген қателіктерді ұстау, нәтижесінде файлдың бірінші жолында бүтін сан болмайды. Егер мұндай проблема туындап жатса.NET орындаушы ортасы FormatException ерекшелігін шақырады. Бұл ерекшелікті біз аламыз да өңдейміз, нәтижесінде ол бізге қателік файдың фоматында екенін хабарлайды. Назар аударыңыз, бұл жерде System.FormatException мәліметтердің базалық типінің проблемасын білдіреді. Жаңадан генерацияланған ерекшелік try сыртқы блогымен алынады. Бұл жерде ешқандай тазалаудың керегі жоқ болғандықтан finally блогыныңда қажеті жоқ.

Егер барлық өрістер дұрыс болса, isOpen өрісінің мағынасы true болады, бұл дегеніміз дұрыс файлдық байланыс бар екендігін білдіреді. ProcessNextPerson() әдісінде де try блогы бар.

public void ProcessNextPerson()

{

if (isDisposed)

{ throw new ObjectDisposedException(“peopleToRing”); }

if(!isOpen)

{ throw new UnexpectedException(“ашылмаған файлға қатынау ”); }

try

{

string name;

name=sr.ReadLine ();

if(name==null)

{ throw new SalesSpy Found Exception (“Аттар саны жеткіліксіз”); }

if (name[0]==’B’)

{ throw new SalesSpyFoundException(name); }

Console.WriteLine(name);

}

catch(SalesSpyFoundException ex)

{ Console.WriteLine(ex.Message); }

finally

{

}

}

Бұл жерде файлмен 2 проблема туындауы мүмкін. Біріншісі – біз кезектегі бір атты оқып оның бәсекелестің тыңшысы екеніне көзіміз жетеді.Бұл жағдайда catch блогында өңделген ерекшелік шақырылады.Бұл ерекшелік циклдың ішінде орныдалып тұрғандықтан бұл әрекет Main() – да да орындала алатынын білдіреді және барлық келесі аттар өңделеді.

Және де проблема егер біз аттарды оқып отырып файлдың соңына жеткенімізді аңғарсақ туындайды. ReadLine() және StreamReader әдістерінің қызметі егер олар файлдың соңына жетсе ешқандай ерекшелік шақырмайды, тек null деген хабарама ғана қайтарады. Сондықтан егер біз null-жолды көрсек бұл файлдың форматы дұрыс емес екендігін білеміз. Егер осындай жағдай болса программа ColdCallFileFormatException ерекшелігін генерациялайды бірақ бұл ерекшелік сыртқы өңдеушімен тоқтатылады.


30..NET ядросы.Деректер базасына қосылу. Команданы орындау.

ADO(Active Data Object) - соңғы жылдардағы іске асырылып жатқан, COM кітапханасының компоненті. ADO ең алдымен Connection, Command, Recordset, Field сияқты объектілерден тұрады. ADO арқылы деректер қорына байланыс ашылады. Содан кейін кейбір деректер алынып ұяшықтардан тұратын жазбашаларға аударылады. Сонымен қатар ADO ұзақ уақытта ашылатын деректер қорына қосылу үшін де қолданылады.

ADO қанағаттандырмайтын бірнеше мәселе бар. Солардың ішінде ең байқалатыны – жазбашалар терудегі өшірілген арбиғандық. ADO –ның ADO.NET –ке өтуі қоп қиындық тудырмау керек, өйткені олар арасында ұқсастықтар бар. Егер сіз SQL Server-ді қолдансаңыз,тдеректер қорында барыншы тез жұмыс жасайтын жақсы әрі ыңғайлы терімдер бар. Тек осының өзі ADO.NET-ке өтуге жеткілікті.

ADO.NET деректер қорындағы үш түрлі клиент атауымен ұйымдастырылады: бірінші SQL Server,екінісі деректерге арналған Open Database Connectivity(ODBC) және үшіншісі кез келген OLE DB арқылы. Егерде SQL Server-ден айырмашылығы бар деректер қоры болса және ODBC-ден басқас болмаса OLE DB-ні қолданған дұрыс.

Бөлінетін класстар

ADO.NET-ке SQL Server немесе OLE DB жұмыс істенгеніне қарай көптеген класстардан құралады.

Класс Сипаттама
DataSet Бұл объект автономды режимде қолдану үшін және DataTables терімі бар кестелер арасындағы байланысты көрсету үшін жасалған
DataTable Бір немесе бірнеше DataColumn экземплярынан тұратын контейнер
DataRom Электронды таблицалардағы көптеген мәндермен жұмыс істеу үшін
DataColumn Атауы мен деректер секілді белгілі бағандардан тұратын объект
DataRelation DataTable мен DataSet арасындағы байланыс
Constraint Бұл класс DataColumn классындағы шартты анықтайды
DataColumnMapping DataTable ішіндегі деректер қоры атауының бағанын көрсетеді
DataTableMapping DataTable ішіндегі DataSet деректер қоры кесте атауларының атауын көрсетеді

Деректер қорына спецификалық класстар

ADO және.NET-гі бөлімдерде карастырылғын класстар ішінде көптеген спецификалық класстар бар. Бұл класстар System.Data. аймағындағы стандартты интерфейс терулерін жүзеге асырады. Мысалы: SqlConnection және OleDbConnection класстары- DbConnection класына қарайды да idbConnection интерфейсін жүзеге асырады.

Деректер қорына байланысу қолданылуы

Деректер қорына рұқсат алу үшін қосылу, машина атауы сияқты, параметрлер теру қажет. ADO жұмыс істегендерге.NET-ке қосылу класстары белгілі болады.

Қосылу класстары

Байланыс қатарларын басқару

.Net-тің бастапқы шығарылымында Деректер қорына қосылу қатарын басқару міндеті құрастырып шығаруға жүктелген болатын және бұл жиі жай қосылу қатарымен қосымшаның конфигурацияланған файлында жасалатын немесе одан жиірек-қосымшаның өзінде қатал кодталатын.

.Net 2.0 нұсқасымен бастай отырып,алдын-ала анықталған қосылу қатарының сақтау әдісі пайда болды,және іс-әрекет типтеріне тәуелсіз деректер қорына байланысты қолдану мүмкіндігі бар.

Байланысты әсерлі қолдану

Деректер қорымен байланысы секілді,жалпы жағдайда.Net-ті қолданғанда қиындықтар туындамайды,терезелер және графикалық обьектілер,ресурстық жабылуынан соң жақсы себеп боп табылады.Дегенмен,.Net проектіні жасаушылары қоқысты автоматтандырылған түрде жинауды іске асырды,ол не кеш болатын еді,ресурстарды мейлінше уақытынан бұрын босату керек.

Бірінші нұсқа:try…Catch…finally

Бірінші нұсқа ресурстарды тазалауды қамтамасыз ететін нұсқа, ол try…Catch…finally блоктарының қолданылуы және ол finally блогының ішінде кез-келген байланыстарды жабуға кепіл береді.

Екінші нұсқа: uising операторы

C#-та және басқа басқару тілдерінде –автоматты детерминирленетін деструкция консепциясы болмайды. Егерде деректер қорымен байланысты жабуды ұмытсақ, көмек көрсететін қол жетімді құрал бар. Төменде кодта uising конструкциясының қолданылуы көрсетілген, ол IDisposable іске асыратын интерфейсіндегі обьектілер блоктан шыққан соң жылдам тазартылуына кепілдеме береді:

string sourse= "server=(local);"+

"integrated security=SSPI;"+

"database=Northwind";

using (SqlConnection conn=new SqlConnection(sourse))

{//Открыть соединение

con/Open ();

//Сделать что-то полезное }

Команданың орындалуы

Команда анықталған соң,оны орындау қажет.Операторларды шығарудың көптеген әдістері бар,ол командадан қандай қайтарым күтеді(егер күтілсе) соған тәуелді.<provider>Command класы келесі әдістерді ұсынады:

Ø ExecuteNonQuery ()-команданы орындайды,бірақ тұжырымды қайтармайды;

Ø ExecuteReader ()-команданы орындайды және типтелген IDataReader-ді қайтарады;

Ø ExecuteScalar ()-команданы орындайды және бірінші бағандағы бірінші қатарда кез келген нәтижелік терімнің мағынасын қайтарады.

Осы әдістерге қосымша SqlCommand класы келесі әдісті ұсынады:

Ø ExecuteXmlReader ()-команданы орындайды, XmlReader обьектісін қайтарады,ол деректер қорынан оралған,XML үзіндісімен өту кезінде қолданылуы мүмкін.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: