Written by xinyiman Luglio 04, 2014, 07:35:00 pm22583 ViewsRating: 0 (0 Rates)Print
Quando si lavora con i database su Lazarus è bene capire che bisogna passare attraverso un connettore DB, ovvero un oggetto che si prende l'incarico di collegare l'applicazione che state scrivendo con il DBMS (database management system). Nell'esempio che andremo a vedere prenderemo in considerazione SQLite come DBMS. La struttura SQL che useremo per il nostro esempio è la seguente.
Lazarus possiede molti package per poter lavorare con i DB, i due sicuramente più usati, mantenuti e testati sono: i componenti standard rilasciati con Lazarus stesso e ZeosLib. Questo articolo prende in considerazione i primi, ma vanno spese due parole anche per ZeosLib, che è un ottimo strumento il quale permette un altissimo grado di astrazione del DBMS, cosa estremamente utile per non vincolare l'applicazione al DBMS. L'esempio che andremo a vedere vi permetterà di acquisire i rudimenti per impadronirvi dell'argomento.
Per prima cosa, creiamo una nuova applicazione con:
File → Nuovo... → Applicazione
Ci si presenterà una form vuota sulla quale andiamo a disporre i seguenti oggetti (tra parentesi trovate i nomi delle tab che contengono tale oggetto nell'IDE).
TSQLite3Connection è un connettore per db, nel caso specifico per SQLite, avessimo dovuto collegarci con Firebird avremmo usato TIBConnection e via discorrendo. In caso avessimo usato le ZeosLib avremmo astratto questo discorso in quanto il passaggio da un DBMS ad un altro sarebbe stato un parametro del TZConnection ottenendo così l'astrazione che ha reso famoso questo tool. Tali oggetti devono essere parametrizzati con alcuni dati che elencherò qui sotto:
Ovviamente questi dati vanno bene sul mio pc, in quanto il database file si trova nel percorso da me menzionato, con 127.0.0.1 diciamo che il database si trova sul pc locale, in caso contrario avremmo dovuto mettere l'indirizzo IP del DB server remoto. Il file non possiede dati d'autentificazione, in caso contrario avremmo dovuto inserire il nome utente e la password per accedervi.
TSQLTransaction è un oggetto che permette tra transazione dei dati dal DB all'applicazione che fa riferimento al connettore, infatti lo abbiamo passato per parametro poco sopra. A tutti gli effetti è un oggetto che non esiste nelle ZeosLib visto che è inglobato automaticamente nel TZConnection per semplificare la vita del programmatore. Ora impostiamo il parametro:
Active: True;
TSQLQuery è un oggetto che permette di elaborare i dati del DBMS attraverso il linguaggio SQL, i parametri che vanno valorizzati sono i seguenti
DataBase: SQLite3Connection1 SQL: select * from utenti; Active: True;
TdataSource è un oggetto che si occupa di essere il contenitore della sorgente dei dati appena ottenuti attraverso la query SQL sopra realizzata. I parametri da visualizzare sono:
DataSet: SQLQuery1
Ora siamo pronti per parametrizzare gli oggetti con cui andremo ad interfacciarci per modificare i dati presenti nel database relazionale su cui operiamo, nel caso specifico una griglia e un navigatore di record, con la prima vediamo/modifichiamo/inseriamo/cancelliamo i singoli record, con il secondo ci spostiamo di record in record. Sia per gli oggetti TDBGrid che per i TDBNavigator bisogna impostare il seguente parametro:
DataSource: DataSource1
Fatto questo compilate il vostro progetto e noterete che avrete una griglia che vi permeterà di lavorare con i dati del database da voi scelti.
xinyiman registered at Italian community of Lazarus and Free Pascal on Ottobre 14, 2011, 10:56:28 pm and has posted 3263 posts in the boards since then. Last visit was Oggi alle 09:12:20 am.
1) Re: DB concetti fondamentali e connessioni standard
Written by AndreaM
il Giugno 07, 2015, 11:42:48 am
Come da tutorial ho realizzato il progetto, tutto funziona, ma quando vado ad apportare modifiche alla tabella e poi chiudo la app, i dati non vengono fisicamente salvati/modificati nel database su file. Se provo con SQLTransaction1.Commit neanche!!!! Un grazie per l'aiuto!
2) Re: DB concetti fondamentali e connessioni standard
Ciao, ho provato il codice, ma quando arrivo a settare il parametro Active a true ottengo questo messaggio di errore: "Can not load SQLite client library "libsqlite3.so"" Che significa?
3) Re: DB concetti fondamentali e connessioni standard
Ciao a tutti. Forse ho risolto, almeno su Windows, copiando direttamente il file sqlite3.dll, che ho trovato in una sottodirectory di Lazarus, nella directory C:\Windows\System32. A questo punto mi domando, in Linux (Xubuntu) dove dovrei copiarlo?
Commenting option has been turned off for this article.
Questo blog non rappresenta una testata giornalistica poiché viene
aggiornato senza alcuna periodicità. Non può pertanto considerarsi un
prodotto editoriale ai sensi della legge n. 62/2001.
Questo sito utilizza cookie, anche di terze parti, per offriti servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina, cliccando su un link o proseguendo la navigazione in altra maniera, acconsenti all’uso dei cookie.
Se provo con SQLTransaction1.Commit neanche!!!!
Un grazie per l'aiuto!