Programmi gratuiti per lo sviluppo e l'amministrazione di database. Programmi per la gestione e l'utilizzo dei database Programmi per la progettazione di database

introduzione

Banca dati (DB) - si tratta di una raccolta denominata di dati che riflette lo stato degli oggetti e le loro relazioni nell'area tematica.

DBMS –è un programma per computer responsabile della creazione, modifica, eliminazione e in generale dell'archiviazione di database (DB) o raccolte di record di dati.

Funzioni del DBMS:

1. Determinazione della struttura del database da creare, sua inizializzazione e caricamento iniziale.

2. Fornire agli utenti la possibilità di manipolare i dati (selezione dei dati necessari, esecuzione di calcoli, sviluppo di un'interfaccia di input/output, visualizzazione).

3. Garantire l'indipendenza logica e fisica dei dati.

4. Proteggere l'integrità logica del database.

5. Tutela dell'integrità fisica.

6. Gestione delle autorizzazioni utente per accedere al database.

7. Sincronizzazione del lavoro di diversi utenti.

8. Gestione delle risorse dell'ambiente di storage.

9. Supporto alle attività del personale di sistema.

Capitolo 1

1.1.Tipi di DBMS:

Relazionale

I DBMS relazionali sono il tipo più comune di sistemi di gestione di database al momento. Sono davvero facili da usare. I DBMS relazionali hanno questo nome perché... memorizzano i dati ordinati in tabelle. Il modello relazionale si basa sulla memorizzazione di dati ordinati in colonne e righe. I dati possono essere collegati all'interno della stessa tabella o su tabelle diverse. Tipologie relazionaliDBMS potrebbero avere prestazioni inferiori rispetto ad altri tipi di sistemi di gestione di database, ma non hanno la potenza di elaborazione e i problemi di ricerca della memoria dei PC moderni. I dati in questo tipo di DBMS vengono archiviati in una forma definita con precisione e vengono generalmente gestiti utilizzando il linguaggio di programmazione SQL (Structured Query Language). Puoi anche specificare i tipi più popolari di DBMS: Oracle, MSSqlServer, IBMDB2, PostgreSQL e molti altri.

Sistemi di gestione di database di file flat

I DBMS FlatFile sono forse i più semplici di tutti. A volte sono anche chiamati modello piatto. L'idea è quella di avviare un'unica applicazione che contenga le impostazioni del programma e il formato del modello di archiviazione originale. I file flat in righe e colonne formattate presuppongono che ogni elemento in un particolare modello contenga le stesse informazioni. Un esempio ben noto di questo tipo di DBMS è CSV (Comma Separated Values) e un altro sono tabelle come MS Excel.

Gerarchico

I DBMS gerarchici si basano sul modello dell'albero genealogico. Qui gli elementi solitamente hanno una relazione uno-a-molti ed è bene memorizzare informazioni con una descrizione degli elementi, caratteristiche, ecc. Qui puoi memorizzare un libro con capitoli e versetti. Tipi gerarchiciDBMS può essere utilizzato per archiviare database con brani, ricette, modelli di telefono e in generale tutto ciò che può essere archiviato in un formato annidato. I tipi gerarchici di sistemi di gestione di database possono avere un'efficienza inferiore quando si lavora con vari oggetti reali. Un esempio di tipi DBMS gerarchici è un documento XML.

Rete

I sistemi di gestione dei database di rete utilizzano un modello di dati simile a quello gerarchico. La differenza principale è che la struttura di un DBMS di rete consente a molti genitori di avere molti figli. Tipi di rete di DBMS si basano su record e insiemi e utilizzano SQL per il loro lavoro. I sistemi di gestione di database basati su rete tendono ad essere altamente flessibili, ma sono stati utilizzati raramente dopo gli anni '60 e '70. Nella ricerca dell'elemento richiesto, il programma richiedente esamina tutti gli elementi installati, il che può risultare troppo complicato. Questo tipo di sistemi di gestione di database è stato praticamente sostituito da quelli relazionali.

Scegliere un programma per scrivere un database

Nel mio lavoro del corso, ho utilizzato un database relazionale utilizzando Microsoft Access.

accesso Microsoft– uno dei DBMS più diffusi per il sistema operativo Microsoft Windows. Inoltre, Access DBMS è una potente piattaforma di sviluppo con un ambiente integrato flessibile e funzionale. Microsoft Access può essere utilizzato come strumento per lo sviluppo e la distribuzione di sistemi informativi aziendali su vasta scala.

Access utilizza quanto segue tipi di campo principali:

testo: destinato a informazioni di testo e numeri quando non è necessario eseguire operazioni matematiche con essi;

numerico: destinato ai numeri quando utilizzato nei calcoli matematici;

PROMEMORIA: progettato per memorizzare testo o commenti arbitrari (lunghezza fino a 64.000 caratteri);

monetario: progettato per memorizzare numeri che rappresentano importi monetari;

appuntamento: progettato per memorizzare informazioni su data e ora;

contatore: uno speciale campo numerico progettato per aggiungere automaticamente un numero univoco per il record corrente nella tabella dati.

logico: progettato per memorizzare solo due valori “True” e “False”;

Campo oggetto OLE: destinato alla memorizzazione di oggetti creati da altre applicazioni (disegni, grafici, diagrammi).

In Microsoft Access esistono diversi modi per selezionare solo i dati necessari durante la ricerca di un valore specifico, un singolo record o un gruppo di record.

Utilizzando la finestra di dialogo CercaÈ facile trovare record specifici o valori specifici nei campi. Quando viene trovata ciascuna occorrenza dell'elemento richiesto, viene spostata tra i record. Se è necessario sostituire valori specifici trovati durante la ricerca, è necessario utilizzare la finestra di dialogo Sostituisci.

Richieste consentire di lavorare con un insieme specifico di record che soddisfano le condizioni specificate per una o più tabelle di database. Quando si esegue una query, diventa possibile lavorare in modo indipendente con questo insieme di record in un modulo o oggetto specifico in modalità tabella.

Ordinamento rende possibile organizzare le righe in una tabella in base al contenuto di una o più colonne. Per ordinare, selezionare il campo in base al quale verrà effettuato l'ordinamento e fare clic sul pulsante “Ordinamento crescente” o “Ordinamento decrescente” sulla barra degli strumenti.

Filtrazione consente di isolare e visualizzare temporaneamente un insieme specifico di record che soddisfano determinate condizioni. Per filtrare, seleziona i dati in base ai quali desideri filtrare e fai clic sul pulsante "Filtra per selezionati" sulla barra degli strumenti. Per modificare il filtro utilizzare il pulsante “Cambia filtro”. Per impostare condizioni più dettagliate per il filtraggio nel menu “Registra”, utilizzare il comando “Filtro” e il sottocomando “Filtro avanzato”. Per applicare un filtro normale o avanzato, utilizza il pulsante "Applica filtro" sulla barra degli strumenti.

capitolo 2

Formulazione del problema

Lo scopo del database dell'hotel è automatizzare il processo di contabilità e analisi dei dati dell'hotel.

Attività risolte durante l'utilizzo del database:

Archiviazione e recupero di dati sui dipendenti dell'hotel;

Archiviazione e recupero di informazioni sui clienti dell'hotel;

Memorizzazione e recupero di informazioni sui numeri;

Memorizzazione dei dati sulle prenotazioni, check-in, check-out dei clienti e calcolo del pagamento per l'alloggio

Calcolo e analisi delle informazioni sulla ricezione del pagamento per l'alloggio da parte dei clienti della società;

Cerca informazioni sulle voci principali: camere prenotate, check-in del periodo, check-out del periodo.

Creazione della banca dati

Per creare un database MS Access è stato utilizzato il Designer tabella, che consente di determinare la struttura della tabella richiesta.

Per visualizzare informazioni complete sullo stato dell'hotel, sulle aree delle sue attività e sulla rendicontazione del lavoro svolto, sono state create le seguenti tabelle:

1. "Dipendenti"

La tabella ha i seguenti campi: codice dipendente(campo chiave) - tipo di dati: contatore; Nome e cognome– tipo di dati: testo, dimensione – 50, facoltativo, nessuna corrispondenza consentita; Data di nascita–tipo di dati: data\ora, facoltativo; formazione scolastica– tipo di dati: master di sostituzione – set di dati fisso (superiore, secondario); titolo di lavoro–maestro delle sostituzioni (elenco dei posti disponibili); indirizzo– tipo di dati: testo, dimensione-50, facoltativo; telefono– tipo di dati: numerico, campo facoltativo; stipendio– tipo di dati: monetario, formato campo – rubli, facoltativo. La tabella in modalità progettazione è simile alla seguente:

2. "Posizioni"

Questa tabella ha i seguenti campi: codice lavoro– contatore (campo chiave); titolo di lavoro– tipo di dato: testo (insieme di posizioni principali).

3. "Numeri"

Questa tabella ha i seguenti campi: codice numerico– contatore del tipo di dati (campo chiave); categoria– tipologia dati: anagrafica ambienti (singola, doppia, junior suite, lusso)

Campi: codice categoria– tipo di dati: contatore (campo chiave), numero- testo; categoria– maestro delle sostituzioni (numeri); Numero di posti– tipo di dato: intero numerico lungo, facoltativo; numero di stanze- simile; Informazioni aggiuntive– tipo di dati: MEMO; costo al giorno– tipo di dati: monetario, formato – rubli, facoltativo.

5. “Stato del numero”

Campi: codice numerico– contatore, campo chiave; numero- materiale di sostituzione del tipo di dati (un campo simile dalla tabella "Categorie di stanze"); dipendente(cameriera) - responsabile delle sostituzioni (da una query sulla tabella “dipendenti”, con la condizione di selezione “cameriera”), campi - prenotazione, check-in, check-out– tipo di dato: data\ora, campo facoltativo; cliente – master di sostituzione (dalla tabella “Clienti”).

6. "Clienti"

Campi: Codice cliente Nome e cognome– tipo di dati: testo, dimensione del campo - 50, obbligatorio; Data di nascita- tipo dati: data\ora, obbligatorio; pavimento- capo produzione (marito, mogli); tipo di documento– master di produzione (passaporto, licenza militare, carta d'identità), obbligatorio; serie- testo, obbligatorio; numero– numerico, obbligatorio; rilasciato da– testo, dimensione del campo – 50, obbligatorio, data di rilascio– data/ora, obbligatorio.

Campi: codice figlio– tipo di dato: contatore (campo chiave); Codice cliente– tipo di dati: procedura guidata di sostituzione (un campo simile dalla tabella “clienti”); Nome e cognome– tipo di dati: testo, dimensione del campo – 50; Data di nascita– tipo di dati: data\ora.

Lo schema dei dati è simile a:

Le tabelle Stato Camera e Dipendenti sono collegate tramite una richiesta di Dipendenti, con la condizione di selezione “cameriera”.

Per facilità d'uso, sono state create query per il database Hotel.

Richiesta n.1 – “Prenotazione”

Nella riga Condizione di selezione viene inserita la seguente condizione:

>=[s] E<=[по]

Cioè la selezione dei campi per un certo periodo di tempo.

Le query 2 e 3 sono state create in modo simile.

Richiesta n.2 - “Check in nelle camere”

Richiesta n.3 – “Check-out camere”

Richiesta n. 4 – “Clienti con figli”.

La query in modalità progettazione è simile alla seguente:

Questa richiesta sistematizza le informazioni sulla presenza di figli nei clienti, necessaria per determinati sconti, vantaggi, ecc.

Richiesta n. 5 – “Pagamento per l’alloggio”.

La richiesta contiene un'espressione che riflette il calcolo del costo della vita per ciascun cliente.

Richiesta n. 6 – “Pagato il mese”.

La richiesta contiene un'espressione che riflette il calcolo del costo della vita per ciascun cliente:

Pagamento per l'alloggio: (Camera_stato. Check-out - Camera_stato. Check-in + 1)*Camera_categorie [Costo al giorno].

Oltre a selezionare i campi per il periodo.

Richiesta n. 7 – “Pagamento del palinsesto”.

Simile alla richiesta 6, tranne che per la scelta del periodo per la selezione dei campi. Sulla base dei dati di questa query, vengono creati grafici per l'analisi e tabelle pivot.

Richiesta n. 8 – “Richiesta Posizioni”.

Richiesta con condizione di selezione per dipendenti “cameriera”. Utilizzato per sostituire i dati nella tabella Stato numero.

La creazione di queste query semplifica notevolmente le attività di reporting dell'hotel, sistematizza comodamente le informazioni e consente di utilizzarle rapidamente e apportare modifiche. Di seguito l'elenco delle richieste:

I rapporti sono i seguenti:

Il lavoro con il database inizia aprendo il modulo Hotel:

A sinistra sono presenti i pulsanti per l'apertura dei report, a destra per l'inserimento e la visualizzazione dei dati sulle principali posizioni.

Ad esempio, il modulo Informazioni sulla camera ha il seguente aspetto:

Qui puoi vedere tutte le informazioni sulla camera d'albergo, nonché un elenco di tutte le camere. Quando seleziono una posizione, possiamo immediatamente vedere tutte le informazioni sulla camera. Nell'angolo in basso a sinistra sono presenti pulsanti per facilitare il lavoro con i record. In alto a destra c'è un pulsante per aprire il modulo Inserisci la categoria della camera.

Utilizzando il pulsante Prenotazione Check-in Check-out, apriremo il form:

Che ha tre schede:

Informazioni sulle camere – informazioni complete sulle camere disponibili;

Dinamica degli incassi – dinamica degli incassi per numero:

Riepilogo del pagamento – riepilogo del pagamento per camera:

Il pulsante Dipendenti dell'hotel apre il seguente modulo:

Qui è possibile visualizzare le informazioni sui dipendenti e inserire le informazioni necessarie.

Con l'aiuto della visualizzazione dei report, vengono risolti i compiti di ricerca di informazioni sullo stato delle camere: prenotazione, check-in, check-out, oltre a riflettere le informazioni di pagamento e visualizzare una ricevuta per il cliente.

Pertanto, questo database risolve i problemi assegnati.

Conclusione

Durante i lavori del corso è stato creato il database “Hotel”. Questo database è destinato ai dipendenti in quanto semplifica il processo del servizio clienti.

Questo database include: tabelle, query, moduli e report, nonché una finestra di esecuzione automatica per facilità d'uso.

Letteratura:

1. Data, K., J. Introduzione ai sistemi di database. 6a ed. - A.; M., San Pietroburgo: “Williams”, 2000. – 848 p.

2. Khomonenko A.D., Tsygankov V.M., Maltsev M.G. Banche dati: libro di testo per istituti di istruzione superiore/Ed. prof. INFERNO. Khomonenko. – San Pietroburgo: stampa CORONA, 2002. – 672 p.

3. V.V. Korneev, A.F. Gareev, S.V. Vasyutin, V.V. Banche dati del Reich. Elaborazione intelligente delle informazioni. – M.: Conoscenza, 2001.- 496 p.

4. Prag K., Irwin M., “Access User Bible for Windows 2000”, K.: Dialectics, 2001 – 576 pp..

5. Garnaev A.S., “VBA Self-Teacher”, San Pietroburgo, 1999. – 104 p.

6. Microsoft Access 2010. Sviluppo di applicazioni utilizzando un esempio reale - G. Gurvits - 496p.

7. Progettazione della banca dati. DBMS di Microsoft Access. Libro di testo - N. N. Grinchenko, E. V. Gusev, N. P. Makarov - 240 p.

8. Accesso 2007. Uso efficace - V. E. Koshelev - 590 p.

EMS Database Management Solutions offre una suite completa di software gratuito per la gestione di database, che ti consentirà di aumentare la produttività del lavoro con i dati e l'efficienza dell'amministrazione del database. Questi programmi gratuiti di gestione di database possono aiutarti a risolvere la maggior parte delle attività amministrative fornendo funzionalità essenziali per gli sviluppatori di database e applicazioni dati senza dover fare affidamento su molteplici utilità SQL dalle molteplici sfaccettature.

EMS SQL Manager Freeware è adatto sia ai principianti che agli sviluppatori esperti; renderà facile il controllo dell'infrastruttura dei dati grazie alla disponibilità di tutti gli strumenti necessari per organizzare l'efficace funzionamento dei sistemi di database. I nostri strumenti gratuiti ti danno la possibilità di eseguire l'amministrazione del server e lo sviluppo di database, gestire utenti e sicurezza, visualizzare e modificare dati e altro ancora, il tutto da un'unica potente applicazione con una GUI intuitiva.

Utilizzando EMS SQL Manager Freeware, puoi lavorare con server, database e schemi, visualizzare, modificare, cercare, raggruppare, ordinare e filtrare dati, creare ed eseguire query SQL utilizzando un potente editor SQL, lavorare con più oggetti selezionati contemporaneamente e molto altro ancora.

Offriamo una vasta gamma di programmi gratuiti di amministrazione di database per i server più popolari. EMS SQL Manager Freeware supporta tutti gli oggetti server, database e tabelle, nonché le versioni server più recenti e le relative funzionalità RDBMS.

  • Sviluppo per Android,
  • SQLite
    • Esercitazione
    • Modalità di recupero

    Ciao a tutti! Mi chiamo Oleg e sono un programmatore Android amatoriale. Un dilettante perché al momento sto guadagnando soldi programmando in una direzione completamente diversa. E questo è un hobby al quale dedico il mio tempo libero. Purtroppo non conosco nessun programmatore Android e traggo tutte le mie conoscenze di base dai libri o da Internet. In tutti i libri e gli articoli su Internet che ho letto, la creazione di un database per un'applicazione dedica pochissimo spazio e, infatti, l'intera descrizione si riduce alla creazione di una classe che sia un'erede SQLiteOpenHelper e successiva implementazione del codice SQL nel codice Java. A parte il fatto che otteniamo codice scarsamente leggibile (e se nella nostra applicazione compaiono più di 10 tabelle, ricordare tutte queste relazioni tra le tabelle è un inferno), allora in linea di principio possiamo vivere, ovviamente, ma in qualche modo non vogliamo A.
    Ho dimenticato di dire la cosa più importante, si può dire che questo è il mio primo tentativo di scrivere qui. E quindi andiamo.

    Sulla eterna domanda: perché?

    Ad essere sincero, sinceramente non so perché libri e articoli sulla programmazione per Android non descrivano gli strumenti per progettare l'architettura dei database e alcuni modelli per lavorare con i database nella fase della loro creazione. Sembrerebbe facile aggiungere solo un paio di pagine a un libro o scrivere un articolo separato (come sto facendo ora), ma no. In questo articolo esaminerò brevemente gli strumenti che utilizzo nel mio lavoro e più in dettaglio il codice responsabile della creazione iniziale del database, che dal mio punto di vista sembra più leggibile e conveniente.


    Se la nostra applicazione ha più di 5 tabelle, allora sarebbe una buona idea utilizzare qualche strumento per la progettazione visiva dell'architettura del database. Dato che per me questo è un hobby, utilizzo uno strumento completamente gratuito chiamato Oracle SQL Developer Data Modeler (puoi scaricarlo).

    Questo programma ti consente di disegnare visivamente tabelle e costruire relazioni con esse. Molti errori di progettazione dell’architettura del database possono essere evitati con questo approccio progettuale (te lo sto già dicendo come programmatore di database professionista). Sembra qualcosa del genere:

    Dopo aver progettato l'architettura vera e propria, si procede alla parte più noiosa, che consiste nel creare il codice SQL per creare le tabelle. Per risolvere questo problema, utilizzo già uno strumento chiamato SQLiteStudio (che a sua volta può essere scaricato qui).

    Questo strumento è un analogo di prodotti noti come SQL Naviagator, Toad ecc. Ma come suggerisce il nome, è progettato per funzionare con SQLite. Ti consente di creare visivamente un database e ottenere il codice DDL delle tabelle create. A proposito, ti consente anche di creare visualizzazioni, che puoi utilizzare anche nella tua applicazione, se lo desideri. Non so quanto sia corretto utilizzare le visualizzazioni nei programmi Android, ma le ho utilizzate in una delle mie applicazioni.

    È un dato di fatto, non utilizzo più strumenti di terze parti e poi la magia inizia con Android Studio. Come ho già scritto sopra, se iniziamo a implementare il codice SQL in codice Java, l'output che otterremo sarà un codice scarsamente leggibile e quindi scarsamente estensibile. Pertanto, inserisco tutte le istruzioni SQL in file esterni che si trovano nella mia directory risorse. In Android Studio assomiglia a questo:


    Informazioni sulle directory db e dati

    All'interno della directory risorse Ho creato due directory db_01 E dati_01. I numeri nei nomi delle directory corrispondono al numero di versione del mio database con cui lavoro. Nella directory db Memorizzo gli script SQL per creare tabelle stesse. E nella directory dati Vengono memorizzati i dati necessari per il riempimento iniziale delle tabelle.


    Ora diamo un'occhiata al codice all'interno di my DBHelper che utilizzo nei miei progetti. Innanzitutto, le variabili di classe e il costruttore (nessuna sorpresa qui):

    TAG finale statico privato String = "RoadMap4.DBHelper"; String mDb = "db_"; String mData = "dati_"; Contesto mContesto; int mVersione; public DBHelper(Contesto contesto, Nome stringa, versione int) ( super(contesto, nome, null, versione); mContext = contesto; mVersion = versione; )
    Ora il metodo onCreate e qui diventa più interessante:

    @Override public void onCreate(SQLiteDatabase db) ( ArrayList tabelle = getSQLTables(); for (Tabella String: tabelle)( db.execSQL(tabella); ) ArrayList > dataSQL = getSQLDatas(); per (HashMap hm: dataSQL)( for (String table: hm.keySet())( Log.d(TAG, "insert into " + table + " " + hm.get(table)); long rowId = db.insert(table, null, hm.get(tabella));
    Logicamente è diviso in due cicli, nel primo ciclo ricevo un elenco di istruzioni SQL per creare un database e poi le eseguo, nel secondo ciclo riempio già con i dati iniziali le tabelle precedentemente create. Quindi, primo passo:

    ArrayList privato getSQLTables() (ArrayList tabelle = nuovo ArrayList<>(); Lista di array files = nuovo ArrayList<>(); AssetManager assetManager = mContext.getAssets(); Stringa dir = mDb + mVersion; try ( String listFiles = assetManager.list(dir); for (String file: listFiles)( files.add(file); ) Collections.sort(files, new QueryFilesComparator()); BufferedReader bufferedReader; String query; String line; for (String file: files)( Log.d(TAG, "file db is " + file); bufferedReader = new BufferedReader(new InputStreamReader(assetManager.open(dir + "/" + file))); query = ""; while ((line = bufferedReader.readLine()) != null)( query = query + line; ) bufferedReader.close(); tables.add(query) ) catch (IOException e) ( e.printStackTrace(); ) return tavoli; )
    Qui tutto è abbastanza semplice, leggiamo semplicemente il contenuto dei file e concateniamo il contenuto di ciascun file in un elemento dell'array. Tieni presente che sto ordinando l'elenco dei file, poiché le tabelle possono avere chiavi esterne, il che significa che le tabelle devono essere create in un determinato ordine. Utilizzo la numerazione nei nomi dei file e con l'aiuto di essa li ordinamento.

    La classe privata QueryFilesComparator implementa Comparator ( @Override public int compare(String file1, String file2) ( Integer f2 = Integer.parseInt(file1.substring(0, 2)); Integer f1 = Integer.parseInt(file2.substring(0, 2)); return f2 .confronta(f1);
    Compilare le tabelle diventa sempre più divertente. Le mie tabelle sono piene non solo di valori codificati, ma anche di valori provenienti da risorse e chiavi UUID (spero di arrivare un giorno a una versione di rete del mio programma in modo che i miei utenti possano lavorare con dati condivisi). La struttura dei file con i dati iniziali è simile alla seguente:


    Nonostante i miei file abbiano l'estensione sql, non c'è codice sql all'interno, ma qualcosa del genere:

    Priorità
    pri_id:UUID:UUID

    pri_name:string:normal
    pri_color:colore:colorVerde
    pri_default:int:1
    priorità
    pri_id:UUID:UUID
    pri_object:string:object_task
    pri_name:string:hold
    pri_color:colore:colorBlu
    pri_default:int:0
    priorità
    pri_id:UUID:UUID
    pri_object:string:object_task
    pri_name:string:importante
    pri_color:colore:colorRosso
    pri_default:int:0
    priorità
    pri_id:UUID:UUID

    pri_name:string:normal
    pri_color:colore:colorVerde
    pri_default:int:1
    priorità
    pri_id:UUID:UUID
    pri_oggetto:string:oggetto_progetto
    pri_name:string:hold
    pri_color:colore:colorBlu
    pri_default:int:0
    priorità
    pri_id:UUID:UUID
    pri_oggetto:string:oggetto_progetto
    pri_name:string:importante
    pri_color:colore:colorRosso
    pri_default:int:0

    La struttura del file è così: faccio una chiamata di funzione diviso(":") in relazione ad una riga e se ottengo che la sua dimensione è 1, significa il nome della tabella in cui devono essere scritti i dati. Altrimenti sono i dati stessi. Il primo campo è il nome del campo nella tabella. Il secondo campo è il tipo in base al quale determino cosa devo scrivere proprio in questo campo. Se si tratta di un UUID, significa che devo generare un valore UUID univoco. Se stringa significa che devo estrarre un valore stringa dalle risorse. Se è a colori, ancora una volta, è necessario estrarre il codice colore dalle risorse. Se int o text, converto semplicemente questo valore in int o String senza alcun movimento fisico. Il codice stesso è simile al seguente:

    ArrayList privato > getSQLDatas() (ArrayList > dati = nuovo ArrayList<>(); Lista di array files = nuovo ArrayList<>(); AssetManager assetManager = mContext.getAssets(); Stringa dir = mData + mVersion; try ( String listFiles = assetManager.list(dir); for (String file: listFiles)( files.add(file); ) Collections.sort(files, new QueryFilesComparator()); BufferedReader bufferedReader; String line; int separator = 0 ; ContentValues ​​cv = null; String nameTable = null; String packageName = mContext.getPackageName(); ehm; for (Stringa file: file)( Log.d(TAG, "file db is " + file); bufferedReader = new BufferedReader(new InputStreamReader(assetManager.open(dir + "/" + file))); while ((riga = bufferedReader.readLine()) != null)( campi = line.trim().split(:"); if (fields.length == 1)( if (flag == true)( hm = new HashMap<>(); hm.put(nomeTabella, cv); dati.add(hm); ) // nome della tabella nomeTabella = line.trim(); cv = new ContentValues(); Continua;

    ) else ( if (fields.equals("UUID"))( cv.put(fields, UUID.randomUUID().toString()); ) else if (fields.equals("color") || campi.equals( "string"))( int resId = mContext.getResources().getIdentifier(fields, campi, packageName); Log.d(TAG, campi + " " + resId); switch (campi)( case "color": cv. put(campi, resId); break; case "stringa": cv.put(campi, mContext.getString(resId)); altrimenti if (campi.equals("testo")) .put(campi, campi); ) else if (fields.equals("int"))( cv.put(fields, Integer.parseInt(fields)); ) ) flag = true; ) bufferedReader.close(); ) ) catch (IOException e) ( e.printStackTrace(); ) restituisce i dati; )

    Creiamo una semplice applicazione di database che visualizzi le informazioni della tabella "Turisti" e il record della tabella "Informazioni turistiche" dal database Microsoft Access associato al record corrente della tabella "Turisti".

    Per fare ciò, creiamo un'applicazione Windows vuota. Aspetto dell'ambiente

    lo sviluppo è mostrato nella Figura 39.

    Riso. 39. Domanda in bianco

    La Figura 39 evidenzia il gruppo di componenti “Dati”, che contiene componenti per l'accesso e la manipolazione dei dati.

    L'associazione dei dati del database al modulo viene effettuata dal componente “Binding Source”. Trasferiamolo nel modulo. Dopo averlo inserito nel form, l'ambiente di sviluppo assume la seguente forma (Fig. 40).

    Riso. 40. Associazione del componente Origine sul modulo

    Il componente non è visivo, quindi viene visualizzato in un pannello aggiuntivo. La proprietà principale del componente è la proprietà DataSource, che punta all'origine dati. Per impostazione predefinita, la proprietà è vuota, quindi è necessario configurarne il valore. Quando si seleziona questa proprietà nella finestra delle proprietà, appare la seguente finestra (Fig. 41).

    Riso. 41. Elenco delle fonti dati

    L'elenco è attualmente vuoto, quindi è necessario creare una nuova origine dati selezionando il comando Aggiungi origine dati progetto per creare una nuova origine dati e connettersi ad essa. Viene visualizzata la seguente finestra di dialogo (Fig. 42).

    Riso. 42. Elenco delle fonti dei dati

    Questa finestra di dialogo fornisce la seguente scelta di origini dati:

    Banca dati - Banca dati;

    Servizio: un servizio è un servizio che fornisce dati. Nella maggior parte dei casi si tratta di un servizio Web;

    Nel nostro caso è necessario selezionare la voce “Database”. Appare una finestra per la selezione di una connessione dati (Fig. 43).

    Riso. 43. Selezione di una connessione dati

    Lo scopo di questa finestra di dialogo è creare una stringa di connessione che descriverà i parametri di connessione per il motore ADO, come il tipo di database, la sua posizione, i nomi utente, le funzionalità di sicurezza, ecc.

    L'elenco a discesa della finestra di dialogo contiene tutte le connessioni create in precedenza. Se la connessione richiesta non è nell'elenco, è necessario utilizzare il pulsante "Nuova connessione". Premendo il pulsante viene visualizzata la seguente finestra di dialogo (Fig. 44).

    In questa finestra di dialogo si seleziona il tipo di origine dati (in questo caso, Microsoft Access), il nome del database (in questo caso, il nome e il percorso del file del database) e il nome utente e la password utilizzati per connettersi al database. Il pulsante "Avanzate" consente di impostare un gran numero di parametri relativi a varie parti del motore ADO. L'utilizzo del pulsante "Verifica connessione" garantirà che i parametri immessi siano corretti e che la connessione funzioni.

    Riso. 44. Creazione di una nuova connessione

    L'ultimo passaggio della finestra di dialogo consiste nel selezionare le tabelle o altri oggetti del database necessari in questa origine dati. La finestra di selezione è mostrata in Figura 45.

    Riso. 45. Selezione delle tabelle necessarie

    In questa finestra sono selezionate le tabelle “Turisti” e “Informazioni turistiche”. Poiché nel database non sono stati creati oggetti diversi dalle tabelle, nella Figura 45 vengono visualizzate solo le tabelle. Ciò completa la creazione dell'origine dati. Dopo aver fatto clic sul pulsante "Fine", nel modulo viene visualizzato un componente DataSet accanto al componente BindingSource.

    Ora i dati collegati sopra devono essere visualizzati nel modulo. Il modo più semplice per visualizzare i dati consiste nell'utilizzare il componente DataGridView dal gruppo dei componenti Dati. Il componente è visivo e si presenta così sul modulo (Fig. 46).

    Riso. 46. ​​Componente DataGridView

    Appare immediatamente la finestra delle impostazioni del componente, che ne determina le capacità di modifica dei dati: “Abilita aggiunta”, “Abilita modifica”, “Abilita eliminazione”; la possibilità di modificare la sequenza delle colonne: "Abilita la possibilità di modificare l'ordine delle colonne" ("Abilita riordino delle colonne"); così come la possibilità di essere collegato al contenitore principale.

    Affinché il componente possa visualizzare i dati, è necessario selezionare un'origine dati nell'elenco a discesa. Selezionando l'elenco a discesa viene visualizzata la seguente finestra di dialogo (Fig. 47).

    Riso. 47. Selezione di un'origine dati per DataGridView

    In questo caso, abbiamo scelto la tabella "Turisti" come origine dati. Questa selezione modifica la maschera della schermata come segue (Fig. 48).

    Riso. 48. Il componente DataGridView visualizza la struttura della tabella

    La figura mostra che è apparso un altro componente BindingSource e un componente TableAdapter che funziona con la tabella "Tourists". Tieni presente che in fase di progettazione o durante il processo di sviluppo, i dati della tabella non vengono visualizzati.

    Ora è necessario visualizzare i dati della tabella collegata “Informazioni turistiche”. Per fare ciò, posizionare un altro componente DataGridView nel modulo e selezionare quanto segue come origine dati (Fig. 49).

    Riso. 49. Selezione di un'origine dati per il secondo DataGridView

    In questo caso, l'origine dati non è la tabella "Informazioni turistiche" stessa, ma la connessione (origine vincolante) tra le tabelle "Turisti" e "Informazioni turistiche". Questa selezione garantisce che vengano selezionate solo le righe della tabella Informazioni turistiche associate alla riga corrente nella tabella Turisti. Questa scelta garantisce inoltre che i dati associati vengano aggiornati e cancellati correttamente. Il funzionamento dell'applicazione risultante è mostrato nella Figura 50.

    Riso. 50. Applicazione del database al lavoro

    Navigare tra i dati utilizzando i tasti freccia è scomodo. Per semplificare la navigazione dei dati, è disponibile un componente BindingNavigator. Posizioniamolo sul modulo (Fig. 51).

    Riso. 51. Componente BindingNavigator sul modulo

    Questo componente ti consente di navigare tra i record della tabella, aggiungere ed eliminare righe della tabella. La funzionalità e l'aspetto del componente possono essere personalizzati poiché si tratta di una striscia di menu ToolStripContainer.

    La proprietà che determina la tabella attraverso la quale viene eseguita la navigazione è la proprietà BindingSource. Impostiamo il valore di questa proprietà su "touristsBindingSource". Durante il funzionamento il componente si presenta così (Fig. 52).

    Riso. 52. Componente BindingNavigator al lavoro

    È possibile modificare i dati nelle celle del componente DataGridView con le impostazioni appropriate, ma è scomodo e non razionale. In particolare, è difficile verificare la presenza di errori nei valori immessi. Pertanto per la tabella “Turisti” realizzeremo una maschera che permetterà di visualizzare i dati nei componenti TextBox e di modificarli. Per fare ciò, posizionare sul form un contenitore del tipo Panel e su di esso tre componenti TextBox come segue (Fig. 53).

    Riso. 53. Pannello video per la modifica delle voci della tabella “Turisti”.

    Ora devi associare i componenti TextBox ai campi corrispondenti della tabella “Tourists”. Per fare ciò, utilizziamo la proprietà del gruppo DataBindings - Advanced, mostrato in Figura 54.

    Riso. 54. Proprietà “DataBindings - Avanzate”

    La selezione di questa proprietà porta alla comparsa della finestra di dialogo mostrata nella Figura 55. Questa finestra di dialogo consente non solo di associare i dati, ma anche di impostare un evento all'interno del quale i dati verranno aggiornati, nonché di formattare i dati durante l'output.

    Per il componente TextBox superiore, nell'elenco a discesa Associazione, seleziona "touristsBmdmgSource" come origine dati e il campo origine come "Cognome". Per i componenti TextBox centrale e inferiore, seleziona rispettivamente la stessa origine dati e i campi "Nome" e "Patronimico".

    L'applicazione sviluppata in funzione assomiglia a questa (Fig. 56).

    Riso. 55. Finestra di dialogo per la proprietà “DataBindings - Avanzate”.

    Riso. 56. Associazione dei dati a componenti visive

    Tuttavia, quando vengono apportate modifiche, tutti i nuovi dati rimangono solo nel modulo. Non vengono salvati nel database e, quando l'applicazione verrà richiamata, ovviamente, mancheranno. Ciò si verifica perché i dati sono stati caricati in un oggetto DataSet, che è una copia in memoria della tabella. Tutte le azioni vengono eseguite su questa copia. Affinché le modifiche si riflettano nel database, è necessario eseguire il metodo Update della classe TableAdapter. Pertanto, nell'applicazione in fase di sviluppo, è necessario posizionare il pulsante "Aggiorna" e scrivere il seguente codice di programma nel gestore dell'evento Click:

    turistiTableAdapterUpdate(bDTur_firmDataSet); information_about_touristsTableAdapter.Update(bDTur_firmDataSet);

    Questo codice aggiorna le informazioni nelle tabelle Turisti e Informazioni turistiche fornite dall'origine dati. Tieni presente che questo metodo è sovraccarico e le sue varianti consentono di aggiornare sia una singola riga della tabella che un gruppo di righe.

    I database in Delphi sono scritti per automatizzare il lavoro in varie aree di attività aziendale, ad esempio per organizzare informazioni e sistemi di riferimento. Nell'industria, i programmi Delphi consentono di allontanarsi dal lavoro di routine con i supporti cartacei. E, come sai, quando le informazioni vengono archiviate su carta, ci vorrà molto tempo per l'ordinamento, la ricerca o qualsiasi altra operazione, poiché dovrai rivedere tutto manualmente.

    Quando disponi di un database già pronto in Delphi, non è necessario dedicare il tuo tempo a studiare e scrivere il codice di programma per un corso o una tesi sulla programmazione di database. Sono disponibili molti progetti di database completati che ti consentono di scrivere il tuo lavoro ottenendo un buon voto. Un'ampia selezione di progetti sul database Access in Delphi 7 ti consentirà di scegliere il progetto più adatto per la protezione, come fonti come contabilità del prodotto, contabilità del programma, ecc. Esistono anche progetti con database MySQL e InterBase.

    Aree in cui vengono utilizzati i database

    • Istituzioni educative statali;
    • Censimento della popolazione. Un database di questo tipo consente alle autorità speciali di calcolare rapidamente le statistiche sulla popolazione del paese. Ad esempio, puoi effettuare un confronto in base al numero di residenti nei diversi anni della città selezionata. Mantenere un database di dipendenti che eseguono giri agli indirizzi assegnati.
    • Organizzazioni commerciali. Tra queste figurano le imprese municipali (unitarie), le cooperative di produzione, le società commerciali e le aziende agricole.
    • Imprese commerciali;
    • Agenzia immobiliare;
    • Agenzie di viaggio;
    • e altre imprese.


    
    Superiore