/ / voglio verificare se esiste una tabella prima di effettuare una transazione: java, sqlite, jdbc

vuoi verificare se esiste una tabella prima di effettuare una transazione: java, sqlite, jdbc

Sto scrivendo un'applicazione usando il database java e sqlite. Sto facendo molti inserimenti in un database. Ogni volta prima di inserire ho usato la seguente istruzione sql e l'ho eseguita usando java

CREATE TABLE IF NOT EXISTS TABLE_NAME "
+ " (ID INT NOT NULL, "
+ " PERCENT INT NOT NULL, "
+ " TASK_DATA VARCHAR(1000) ,"
+ " CONSTRAINT pk_progressID PRIMARY KEY (ID))

Tuttavia questa non è una buona pratica per eseguire questa affermazione ogni volta. Qual è l'alternativa in modo tale che controlli anche che la tabella esista o meno e la crei anche se non lo fa?

risposte:

2 per risposta № 1

Questo problema è chiamato "migrazione del database". Su ogni connessione al database creata dall'app, è necessario conoscere la struttura del database e i dati sono in una condizione e configurazione previste.

Una soluzione è quella di etichettare internamente lo stato corrente del tuo database, una sorta di numero di versione. Ovviamente una tabella di database potrebbe essere il luogo perfetto per memorizzare queste informazioni sulla versione.

Potrei andare avanti e guidarti attraverso i generi diil versioning che potevi fare, come far funzionare la tua app con script SQL e codice Java necessari per aggiornare qualsiasi istanza del tuo database con le tue ultime aspettative attuali. Ma non c'è bisogno che io faccia questa spiegazione.

Sono già stati creati due ottimi progetti per eseguire questi compiti di migrazione dei database. Nessun codice da scrivere! Uno di questi progetti può essere inserito nella tua app.

Ogni volta che la tua app si connette al databasecontrolla le ultime informazioni sulla versione note memorizzate in una tabella aggiuntiva. Se l'istanza DB non è aggiornata, questi strumenti eseguono gli script SQL e / o il codice Java necessari per creare / modificare definizioni di tabelle, inserire / modificare / eliminare righe e così via.

Ovviamente è necessario scrivere, testare e archiviare accuratamente quegli script SQL e aggiornare il codice Java man mano che si sviluppa il progetto.


1 per risposta № 2

Questo è un problema comune degli aggiornamenti della versione del software e dei vecchi dati del database.

Meglio avere una voce del database con il proprio numero di versione.

Quindi all'avvio del programma è possibile controllare e aggiornare di conseguenza, anche su più versioni, in modo definito.

while (database.version() < software.version) {
software.updateToNextFrom(database.version());
}