image Home       image Fowles,       image Fitzgerald,       image r04 06 (9)       image R 22MP (3)       image 45 (3)       

Linki

[ Pobierz całość w formacie PDF ]
Piotr Neil GawrońskiInterBase dla delfinówHelion 2001WstępCelem niniejszej ksišżki jest przybliżenie użytkownikom Delphi serwera bazy danych InterBase i biblioteki IBX. Publikacja ta nie jest podręcznikiem SQL-a, lecz zawiera opis obiektów po stronie serwera i sposobu dostępu do nich z Delphi za pomocš biblioteki IBX.Rozdział 1. Typy danychW niniejszym rozdziale zostanš przedstawione typy danych, z jakich można korzystać podczas tworzenia bazy danych. Znajomoć ich jest niezbędna w fazie projektowania i pisania oprogramowania. Omówiony także zostanie sposób korzystania z tych typów danychw Delphi.W InterBase występujš następujšce typy danych:* znakowe - CHAR i VARCHAR,* zmiennoprzecinkowe - FLOAT i DOUBLE PRECISSION,* całkowite - INTEGER i SMALLINT,* stałoprzecinkowe - NUMERIC i DECIMAL,* dotyczšce daty i czasu - DATE, TIME i TIMESTAMP,* binarne - BLOB.Wszystkie typy danych, z wyjštkiem BLOB, mogš tworzyć tablice (arrays) o wymiarachod l do 16.Tabela 1.1 zawiera krótkš charakterystykę ww. typów danych.Tabela 1.1.Typy danych w InterBaseNazwaRozmiarzakres dokładnociOpisBLOBZmienny(w definicji wiersza 8 bajtów)Rozmiar segmentu typu BLOBjest ograniczony do 64 kBRozmiar pól tego typu może się zmieniać dynamicznie w zależnoci od aktualnych potrzeb. Idealnie nadaje się do przechowywania grafiki, dwięku czy dokumentów (np. MS Office)CHAR(n)CHARACTER(n)n znakówn może przyjšć wartoć z zakresuod l do 32767, przy czym n pomnożone przez rozmiar znaku nie może przekroczyć 32767 (w niektórych zestawach rozmiar jest większy od 1)Odpowiednie do przechowywaniatekstów o stałej długociDATE8 bajtów (64 bity)od l stycznia 100r.n.e.do 29 lutego 32768 r.DECIMAL(precyzja, skala)2,4 lub 8 bajtów (l6, 32 lub 64 bity)Precyzja od l do 18; minimalna liczba cyfr do przechowania w polu Skala od O do 18; liczba cyfr do przechowania po przecinku. Wartoć ta musi być mniejsza lub równa precyzjiliczby stałoprzecinkowe DECIMAL(8.2) przechowuje liczby w formacie pppppp.ssDOUBLE PRECISION8 bajtów (64 bity1)Od 2,225x10-308 do 1,797x10308Liczba zmiennoprzecinkowa podwójnej precyzji - 15 cyfrFLOAT4 bajty (32 bity)Od 1,175x10-38 do 3,402x1038Liczba zmiennoprzecinkowapojedynczej precyzji - 7 cyfrINTEGER4 bajty (32 bity)0d 2147483648 do 2147483647Liczby całkowite ze znakiemNCHAR[VARYING](n)NATIONAL CHAR [VARYING]NATIONAL CHARACTER [VARYING]n znakówn może przyjšć wartoć z zakresu od ldo 327672, przy czym n pomnożone przez rozmiar znaku nie może przekroczyć 32767 (w niektórych zestawach rozmiar jest większy od 1)Teksty lub łańcuchy znaków o stałej (zmiennej dla VARYING) długoci. Różniš się od CHAR i VARCHAR jedynie zestawem znaków- ISO 8859-1NUMERIC(precyzja skala)2,4 lub 8 bajtów (16,32 lub 64 bity)Precyzja: 1 do 18; dokładnie liczba cyfr do przechowania w polu. Skala: 0 do 18; liczba cyfr do przechowania po przecinku. Wartoć ta musi być mniejsza lub równa precyzjiLiczby stałoprzecinkowe, NUMERIC(8,2) przechowuje liczby w formacie pppppp.ssSMALLINT2 bajty (16 bitów)od 32768 do 32767Krótka (short) liczba całkowitaze znakiemTIME8 bajtów (64 bity)Czas od godziny 0:00:00.000do 23:59:59.999TIMESTAMP8 bajtów (64 bity)1 stycznia 100r.n.e. do 29 lutego 32768r. wraz z godzinš z dokładnociš jakTIMEPrzechowuje zarówno datę, jaki godzinęVARCHAR(n)CHAR VARYINGCHARACTER VARYINGn znakówn może przyjšć wartoć z zakresu od 1 do 32765, przy czym n pomnożone przez rozmiar znaku nie może przekroczyć 32765 (w niektórych zestawach rozmiar jest większy od 1)Teksty lub łańcuchy znakówo zmiennej długociTypy znakoweW InterBase programista ma do dyspozycji następujšce typy znakowe:* typ znakowy o stałej długoci, nazywany CHAR(n)3 lub CHARACTER(n),* typ znakowy o zmiennej długoci, nazywany VARCHAR(n), CHAR VARYING(n)lub CHARACTER VARYING(n),* typ o stałej długoci wykorzystujšcy zestaw znaków ISO 8859-1 (CHARSET IS08859_1), o nazwie NCHAR(n), NATIONAL CHAR(n) lub NATIONAL CHARACTER(n),* typ będšcy połšczeniem typów z dwóch poprzednich punktów, nazywany* NCHAR VARYING(n), NATIONAL CHARACTER VARYING(n) lub NATIONAL CHAR VARYING(n).Typ CHARTen typ danych, podobnie jak NCHAR, służy do przechowywania tekstów o stałej długoci. Warto pamiętać o tym, że deklarujšc kolumnę CHAR(n), otrzymamy łańcuch znaków o długoci dokładnie n. Jeli do bazy zapisano krótszy tekst, w miejsce brakujšcych znaków zostanš wpisane spacje, które nie będš pakowane i przechowywane w tabeli. Pozwala to na pewnš oszczędnoć miejsca na dysku.W trakcie tworzenia kolumny tekstowej można zdefiniować zestaw znaków i sposób porównywania, z jakiego można korzystać w przypadku tej kolumny. Podajšc zestaw znaków, należy zwrócić uwagę na to, aby nie przekroczyć rozmiaru pola 32 767 bajtów - w niektórych wypadkach jeden znak może zajšć więcej niż jeden bajt4. Zagadnienie to zostanie omówione nieco dalej.Do utworzenia tabeli zawierajšcej kolumnę tekstowš można użyć następujšcej konstrukcji:CREATE TABLE TEST (TEKST CHAR(8O) CHARACTER SET WIN1250 COLLATE PXW_PLK)Jak można się domylić, do manipulacji takim polem w Delphi najodpowiedniejszy jest typ STRING. Aby pobrać dane z pola w celu dalszego ich przetwarzania, można użyć jednejz konstrukcji5:IBTablel.FieldByName(TEKST).AsString := 'Ala';If Length(IBQuery1.FieldByName('TEKST'.AsString) then ...Typ VARCHARTen typ przechowuje tekst o zmiennej długoci. W deklaracji VARCHAR(n) liczba n okrela maksymalny rozmiar łańcucha znaków. Ale w przeciwieństwie do CHAR, w miejsce brakujšcych znaków nie sš wpisywane spacje. Pomaga to zaoszczędzić miejsce na dysku. Ponieważ łańcuchy majš różnš długoć, na stronie bazy mieci się ich więcej, dzięki czemu dostęp do danych następuje przy mniejszej liczbie odczytów z dysku. Z drugiej jednak strony, aktualizacje mogš przebiegać wolniej niż w przypadku użycia typu znakowego o stałej długoci.Tak samo jak ma to miejsce w przypadku typu CHAR, definiuje się zestaw znaków i sposób porównywania. Jeli chodzi o VARCHAR, rozmiar pola nie może przekroczyć 32 765 bajtów.Aby dodać kolumnę tekstowš o zmiennej długoci do tabeli TEST, należy skorzystaćz konstrukcji:alter table test add ZMIENNY VRCHAR(120)Typ VARCHAR obsługiwany jest w Delphi tak samo jak CHAR.Typ BLOB stosowany do danych tekstowychNa ogół typ BLOB służy do przechowywania danych binarnych, ale równie dobrze można się nim posłużyć do przechowywania tekstu. Jego zaletš - w porównaniudo wymienionych wczeniej typów danych - jest brak ograniczenia rozmiaru do 32 kB tekstu. Można okrelić zestaw znaków, jaki będzie przechowywany, ale nie można okrelić sposobu porównywania dla kolumny BLOB. Definiujšc typ BLOB, można okrelić jego podtyp6- w przypadku danych tekstowych należy podać, że jest to typ 1.W Delphi do przetwarzania tekstowego pola BLOB wykorzystuje się string. Pola obsługuje typ TMemoField - można je połšczyć z TDBMemo lub TDBRichEdit. Należy pamiętać, że taka obsługa ma sens jedynie dla podtypu l.Zestawy znakówW przypadku typów znakowych można okrelić zestaw znaków, z jakiego będziekorzystać dana kolumna. Zdefiniowanie takiego zestawu podczas deklaracji kolumny powoduje nadpisanie standartowego zestawu znaków, jaki został okrelony w trakcie tworzenia tabeli. Można także okrelić sposób porównywania, jaki ma być wykorzystany, jeli jest on inny niż domylny - niektóre zestawy znaków mogš mieć ich kilka. A kiedy najczęciej wykorzystujemy porównywanie? Oczywicie podczas sortowania. Chcšc dodać powyższe informacje do deklaracji kolumny, użyjemy następujšcej składni:<NAZWA KOLUMNY> <TYP TEKSTOWY> [CHARACTER SET nazwa_zestawu] ... [COLLATE porzšdek]np.:ALTER TABLE TEST ADO POLSKI_EKST CHAR(40) CHARACTER SET WIN1250 NOT NULL COLLATE PXW_PLKW poniższej tabeli znajduje się lista dostępnych zestawów znaków.Tabela 1.2.Lista dostępnych zestawów znakówZestaw znakówMin/Max rozmiar znaku w bajtachSposoby porównywaniaASCIIBIG_5CYRLDOS437DOS852DOS850DOS857DOS860DOS861DOS863DOS865EUCJ_0208GB_2312ISO8859_1KSC_5601NEXTNONEOCTETSSJIS_0208UNICODE_FSSWIN1250WIN1251WIN1252WIN1253WIN12541/11/21/11/11/11/11/11/11/11/11/11 /21 /21/11 /21/11/11/11 /21 /31/11/11/11/11/1ASCIIBIG_5CYRLDB_RUSPDQX_CYRLDOS437DB_DEU437DB_ESP437DB_FIN437DB_FRA437DB_ITA437DB_NLD437DB_SVE437DB_UK437DB_US437PDOX_ASCIIPDOX_INTLPDOX_SWEDFINDOS852DB_CSYDB_PLKDB_SLOPDOX_CSYPDOX_HUNPOOX_PLKPDOX_SLODOS850DB_DEU850D8_ESP850DB_RA850DB_FRC850OB_ITA850DB_NLD850DB_PTB850DB_SVE850DB_UK850DB_US850DOS857DB_TRKDOS860DB_PTG860DOS861POOX_ISLDOS863DB_FRC863 :DOS865DB_DAN865DB_NOR865PDOX_NORDAN4EUCJ_0208GB_2312IS08859_1DA_DADE_DEDU_NLEN_UKEN_USES_ESFI_FIFR_CAFR_FRIS_ISIT_ITNO_NOPT_PTSV_SVKSC_5601KSC_DICTIONARYNEXTNXT_DEUNXT_FRANXT_ITANXT_ESPNXT_USNONEOCTETSSJIS_0208UNICODE_FSSWIN1250PXW_CSYPXW_HUNDCPXW_PLKPXW_SLOVWIN1251PXW_CYRLWIN1252PXW_INTLPXW_INTL850PXW_NORDAN4PXW_SPANPXW_SWEDFINWIN1253PXW_GREEK... [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zolka.keep.pl