Sql


Opis

Moduł Sql udostępnia zestaw funkcji do komunikacji z bazami danych. Możliwa jest komunikacja z dowolną bazą danych - warunkiem jest zdefiniowanie w pliku konfiguracyjnym instancji konektora do takiej bazy danych oraz istnienie w katalogu bibliotek JPALIO odpowiednich sterowników JDBC.

W związku z tym, że jednym z założeń koncepcji JALIO jest utrzymywanie, w miarę możliwości, danych w bazie, to moduł Sql jest jednym z ważniejszych i części używanych narzędzi podczas tworzenia aplikacji.

Przykłady

Metody odwołujące się do bazy danych posiadają wersję, gdzie pierwszym argumentem jest konektor, jeżeli jednak wywołamy przeciążoną metodę bez konektora, zostanie wybrany domyślny, zdefiniowany w konfiguracji serwera.

W celu odczytania danych z bazy stosujemy funkcje z rodziny read. Podstawowe wywołanie wygląda następująco

 

$=(@ListaTablic, $sql.read("select id, name from p_mime_types where name=?", ["image/gif"] as Object[]))

$for(@tablica, $ListaTablic, {
ID: $@talica[0]
Name: $@tablica[1]
})

Gdzie znaki zapytania w kodzie sql są zastępowane elementami z tablicy w ostatnim argumencie. Metoda read zwraca obiekt typu List<Object[]>, gdzie kolejne elementy listy stanowią rekordy, natomiast tablice zawierają atrybuty. Jeżeli chcemy uzyskać wyniki zapytania w postaci mapy, musimy skorzystać z metody readAsMaps.

Do wykonania poleceń typu edycji bazy danych i jej rekordów służą metody z rodziny write.

 

$sql.write("insert into p_mime_types name values (?)", ["audio/x-ms-wma"] as Object[])

Argumenty polecenia sql możemy również podawać wewnątrz samego polecenia, pomijając ostatni argument metody write.

 

Metody z execute służą do wywoływania poleceń PL/SQL. Jako jeden z argumentów można podać typy danych wyjściowych. Jeżeli chcemy wywołać funkcję PL/SQL powinniśmy skorzystać z metod executeFunction, bądź executeProcedure jeżeli ma to być procedura PL/SQL.

 

Moduł Sql daje również możliwość sterowania transakcjami. Wszystkie instrukcje wypisane w PalioCode wewnątrz metody transaction zostaną wykonane w specjalnym izolowanym połączeniu z bazą danych. Wszystkie zmodyfikowane dane zostaną zatwierdzone po wykonaniu wszystkich instrukcji.


$sql.transaction(["users", "customers"], {
  $sql.write("users", "...")
  $if((Boolean)$sql.exists("customers", "..."), {
    $sql.write("customers", "...")
  }, {
    $sql.write("customers", "...")
  })
})

 

 

$sql.transaction(["users", "customers"], {
$sql.write("users", "...")
$if((Boolean)$sql.exists("customers", "..."), {
$sql.write("customers", "...")
}, {
$sql.write("customers", "...")
})
})

Api

http://jpalio.torn.com.pl/modules/palio/modules/Sql.html