Овај туториал је други у низу о програмирање СКЛите ин Ц.
СКЛите чува збирку табела у једној датотеци база података, обично завршава у .дб. Свака табела је попут прорачунске таблице, састоји се од броја ступаца и сваки ред има вриједности.
Ако вам то помогне, сматрајте да је сваки ред а струцт, са колона у табели одговара пољима у структури.
Табела може имати онолико редова колико ће стати на диску. Постоји горња граница, али њених огромних 18,446,744,073,709,551,616 да будемо прецизни.
Табела може имати до 2.000 колона или ако прекомполирате извор, можете да га повећате на страшних 32.767 колона.
СКЛите АПИ
Да бисмо користили СКЛите, морамо упућивати позиве према АПИ-ју. Увод у овај АПИ можете пронаћи на званичном званичнику Увод у СКЛите Ц / Ц ++ интерфејс веб страна. То је колекција функција и једноставна за употребу.
Прво, треба нам рукохват базе података. Ово је типа склите3 и враћа се позивом на склите3_опен (име датотеке, ** ппДБ). Након тога извршавамо СКЛ.
Прво ћемо имати малу дигресију и створити употребљиву базу података и неке табеле помоћу СКЛитеСпи. (Погледајте претходни водич за везе до тог прегледача и прегледача базе података СКЛите).
Догађаји и места
База података о. ДБ ће држати три табеле за управљање догађајима на неколико места. Ови догађаји биће забаве, дискотеке и концерти и одвијаће се на пет локација (алфа, бета, чарли, делта и одјек). Када моделирате овако нешто, често помаже да започнете с прорачунском таблицом. Ради једноставности, сачуваћу датум, а не време.
Табела садржи три ступца: датуме, место одржавања, врсту догађаја и десетак оваквих догађаја. Термини трају од 21. до 30. јуна 2013. године.
Сада СКЛите нема изричит тип датума, па га је лакше и брже чувати као инт и на исти начин на који Екцел користи датуме (дани од 1. јануара 1900.) имају инт вредности 41446 до 41455. Ако датуме ставите у прорачунску табелу, а затим ступац датума форматирате као број са децималним бројем децималних места, изгледа отприлике овако:
Сада бисмо могли да похранимо ове податке у једну табелу и за тако једноставан пример, то би вероватно било прихватљиво. Међутим, добре праксе дизајнирања база података то захтевају нормализација.
Јединствене ставке података, као што су врста места, треба да буду у сопственој табели, а врсте догађаја (парти итд) такође треба да буду у једној. На крају, како можемо имати више врста догађаја на више места, (однос многих према многима) потребна нам је трећа табела која их држи.
Три табеле су:
- места - садржи свих пет места
- евенттипес - садржи сва три типа догађаја
- догађаји - садржи датум плус ИД места плус ИД врсте догађаја. Такође сам додао поље за опис овог догађаја, нпр. „Јимов рођендан“.
Прве две табеле садрже типове података тако да места имају имена алфа до одјека. Додао сам и цели ид и створио индекс за то. Са малим бројем места (5) и врста догађаја (3), то би се могло обавити без индекса, али са већим таблицама, то ће се одвијати врло споро. Тако да сваком ступцу који се вероватно претражује додајте индекс, по могућности цео број
СКЛ који то ствара је:
Индекс у табели догађаја има датум, ид-догађај, врсту догађаја и место одржавања. То значи да можемо да упитамо табелу догађаја за „све догађаје на датуму“, „све догађаје на месту“, „све забаве“ итд. И комбинације оних као што су „све странке на месту“ итд.
Након покретања СКЛ креирања упита табеле, креирају се три табеле. Напомена Сву ту скл ставио сам у текстуалну датотеку цреате.скл и укључује податке за попуњавање неких од три табеле.
Ако ставите; на крају редака, као што сам то урадио у цреате.скл, онда можете командовати и извршавати све наредбе у једном потезу. Без; сваки морате покренути сам. У СКЛитеСпи, само кликните Ф9 да бисте покренули све.
Такође сам укључио скл да испустим све три табеле унутар вишередних коментара користећи / *.. * / исто као у Ц. Само одаберите три ретка и урадите цтрл + Ф9 да бисте извршили одабрани текст.
Ове команде убацују пет места:
Опет сам коментарисао текст у празне табеле, са избриши из линије. Нема поништења, зато будите пажљиви са овим!
Невероватно, са свим учитаним подацима (додуше није много), целокупна датотека базе података на диску износи само 7КБ.
Подаци о догађајима
Уместо да саставим гомилу од десет уметања изјава, Екцел сам користио за креирање .цсв датотеке за податке догађаја а затим употријебите услужни програм СКЛите3 наредбене линије (који долази са СКЛите) и сљедеће наредбе за увоз то.
Напомена: Свака линија са префиксом (()) је наредба. Користите .хелп да бисте видели све команде. Да бисте покренули СКЛ, само га унесите без префикса периода.
Морате користити двоструке црне црте \\ на путу увоза за сваку мапу. Последњи ред извршите тек након што је .порт успео. Када се СКЛите3 покрене, подразумевани сепаратор је: па га морате превести у зарез пре увоза.
Назад на шифру
Сада имамо потпуно насељену базу података, ајмо написати Ц код да бисте покренули овај СКЛ упит који враћа листу страна, са описом, датумима и мјестима.
- Ново у СКЛ-у? Прочитајте шта је СКЛ?
Ово чини спајање користећи колону идвенуе између табеле догађаја и места, тако да добијамо име места, а не његову вредност инт идвенуе.
СКЛите Ц АПИ функције
Постоји много функција, али треба нам само неколико. Редослед обраде је:
- Отворите базу података са склите3_опен (), изађите ако имате грешке приликом отварања.
- Припремите СКЛ помоћу склите3_препаре ()
- Петљајте помоћу слките3_степ () док нема више записа
- (У петљи) обрадите сваки ступац склите3_цолумн ...
- Коначно назовите склите3_цлосе (дб)
Постоји додатни корак након позивања склите3_преприпремите се тамо где су везани било који параметри, али то ћемо сачувати за будући туториал.
Дакле, у програму који је наведен испод псеудо кода за главне кораке су:
Скл враћа три вредности, па ако је склите3.степ () == СКЛИТЕ_РОВ, тада се вредности копирају из одговарајућих типова ступаца. Користио сам инт и текст. Датум приказујем као број, али слободно га претварам у датум.
Списак примера кода