Archive for the ‘bazy danych’ Category

ROWNUM w MySQL

Posted on luty 19th, 2008 in bazy danych, programowanie | No Comments »

Ostatnio, z powodu zmiany w kodzie pewnego CMSa, musiałem dopisać do bazy danych (MySQL) kilkadziesiąt bardzo podobnych do siebie rekordów. Największym problemem było to, że każdy wiersz musiał dostać swój kolejny numer (powiększony o stałą). Ponieważ w MySQL nie ma odpowiednika Oracle'owego ROWNUM musiałem ten problem obejść.

Numer wiersza można obliczyć tworząc sobie zmienną.

MySQL:
  1. SELECT @rownum := @rownum + 1 rownum, i.*
  2. FROM (SELECT @rownum := 0) r, informacja i

Po skorzystaniu z dobrodziejstw INSERT ... SELECT moje ostateczne zapytanie dodające operacje do modułów CMSa, które tej operacji jeszcze nie mają, wyglądało tak.

MySQL:
  1. INSERT INTO operacja(priorytet, id_modul, nazwa, kod)
  2. SELECT @rownum := @rownum + 1 priorytet, m.id_modul, 'lista', 'lista'
  3. FROM (
  4.     SELECT @rownum := (
  5.         SELECT max(id_operacja) FROM operacja
  6.     )
  7. ) r, ecms_modul m
  8. WHERE id_modul NOT IN (
  9.     SELECT id_modul FROM operacja WHERE kod = 'lista'
  10. );

DBDesigner4 i Ubuntu 7.04

Posted on sierpień 1st, 2007 in bazy danych, ubuntu | 1 Comment »

DBDesigner 4 to aplikacja (dostępna na licencji GPL) umożliwiająca stworzenie modelu fizycznego bazy danych. Aplikacja pozwala na proste tworzenie tabel oraz relacji między nimi. Dodatkowo program sam, na podstawie relacji, tworzy odpowiednie klucze obce. Potrafi także połączyć się z wieloma bazami danych, na przykład MySQL lub Oracle i wyeksportować tam dane lub zsynchronizować model z istniejącą już bazą. Oczywiście można także wygenerować zwykły skrypt tworzący bazę.

Program jest prosty, ale do małych projektów wystarczający. I co najważniejsze, jest darmowy.

DBDesigner 4

Dzięki temu, że została napisana w Kyliksie, działa zarówno pod Windowsem, jak i GNU/Linuksem. Niestety z tego samego powodu nie zawsze działa jak należy. Pod Ubuntu 7.04 i386 nie ma większych problemów. Wystarczy doinstalować dwa pakiety.

CODE:
  1. sudo apt-get install libstdc++2.10-glibc2.2 libxft1

Niestety pod 64-bitowym Ubuntu jest więcej zabawy (ale do tego wszyscy posiadacze 64-bitowych Linuksów dawno się przyzwyczaili, prawda?). Jednak jest dosyć proste rozwiązanie. Wystarczy do katalogu DBDesigner4/Linuxlib dorzucić brakujące biblioteki. Same biblioteki możemy na przykład wyciągnąć z pakietów dla 32-bitowego Ubuntu. Aby oszczędzić Wam przyjemności szukania odpowiednich paczek i wypakowywania z nich plików, po prostu umieszczam tutaj DBDesignera z odpowiednimi bibliotekami. :)

Na koniec jeszcze dwie sprawy. Po pierwsze, po uruchomieniu prawdopodobnie trzeba będzie zmienić domyślną czcionkę (w menu Options/DBDesigner Options). Polecam Bitstream Vera Sans. Po drugie, ciągle mam problem z bibliotekami łączącymi się z bazą MySQL (u siebie mam wersję 5). Jeżeli ktoś zna rozwiązanie, proszę żeby umieścił je w komentarzu. :)

Bardzo prosta witryna w Oracle.

Posted on październik 28th, 2006 in bazy danych, oracle, programowanie | 11 Comments »

W porównaniu do poprzedniego wpisu, cofnę się troszkę w edukacji. :) Pokażę, jak od początku do końca zrobić bardzo prostą aplikację webową w Oracle'u. Zakładam oczywiście, że sam serwer jest odpowiednio skonfigurowany, a my posiadamy swój login i hasło do bazy oraz możliwość tworzenia aplikacji sieciowych.

Strona, którą stworzę będzie wyświetlała zawartość tabeli (i tylko tyle). Opiszę po kolei kolejne fazy tworzenia tej stronki. A wszystko to będzie wyglądać tak. Read the rest of this entry »

Oracle na słodko

Posted on październik 18th, 2006 in bazy danych, internet, oracle, programowanie | 4 Comments »

Do obsługi ciasteczek w Oracle'u służy pakiet OWA_COOKIE. Typy danych, funkcje i procedury zdefiniowane w tym pakiecie można znaleźć w dokumentacji Oracle'a.

Jak wiadomo, ciasteczka wysyłamy do przeglądarki w nagłówku HTTP. Na przykład w następujący sposób.

OWA_UTIL.MIME_HEADER('text/html',FALSE);
OWA_COOKIE.SEND(vNazwaCookie, vWartoscCookie);
OWA_UTIL.HTTP_HEADER_CLOSE; 

Procedura MIME_HEADER z pakietu OWA_UTIL wysyła niestandardowy nagłówek HTTP. Wysyłamy do przeglądarki dokument text/html, ale nagłówka jeszcze nie zamykamy (decyduje o tym drugi parametr). Następnie wysyłamy ciasteczko o nazwie vNazwaCookie i wartości vWartoscCookie (obie zmienne są typu VARCHAR2).

Proste, prawda? Wyciąganie zawartości ciasteczka wcale nie jest trudniejsze. Żeby odczytać ciasteczko wystarczy użyć funkcji GET. Read the rest of this entry »