Il posto migliore per scrivere query SQL

0

Ho lavorato a questo progetto per la mia azienda. Attualmente sto incorporando le mie istruzioni SQL all'interno del programma stesso come e quando sono necessarie. Ho due classi separate -

  1. Classe QueryBuilder (contiene tutte le query)
  2. Classe DbConnection (Esegue le query sul database, si occupa della connettività e così via)

    Ciò che fa, è ogni volta che ho bisogno di fare la più piccola regolazione nella query, devo ricostruire l'intera applicazione.

Spero ci siano modi migliori per affrontarlo. Da qualche parte posso memorizzare queste query, ottenerle, passare i parametri come parametri di comando , quindi eseguirli e, se necessario, cambiarli senza dover ricostruire la mia applicazione.

Ci sono un paio di idee nella mia testa.

  1. File di risorse.
  2. File DLL / Classe separati - Lo svantaggio è che, dovrò ricostruire quella classe se apporto una modifica a quel codice. Ma la separazione ha il suo vantaggio.
  3. File di testo, potrebbero non essere gestibili quando le query aumentano.

Mi piacerebbe sapere se esiste un modo migliore per affrontare questo problema e se altri hanno un modo per aggirare questo problema.

    
posta Abijeet Patro 12.05.2013 - 20:06
fonte

2 risposte

7

File di risorse , nonché un semplice file App.config potrebbero fare il lavoro.

Avere le query in una libreria separata è un buon modo, specialmente se lo si utilizza come plug-in (e quindi non è necessario ricompilare l'applicazione stessa, né riavviare se è attualmente in esecuzione). Poiché la libreria contiene solo costanti, la compilazione richiederebbe al massimo alcuni millisecondi.

Come per file di testo , non vedo alcun vantaggio, dato che lo svantaggio è che devi reinventare la ruota, cioè inventare il tuo formato, mentre i file di risorse o App.config già forniscilo.

Nota: sii molto, molto attento. Cambiare le query è qualcosa che dovrebbe essere preso sul serio, dal momento che può cambiare radicalmente il comportamento dell'applicazione (e, perché no, cancellare l'intero database o tabella a causa di un errore come un where dimenticato in un delete from ). Consiglio vivamente non solo di ricompilare l'applicazione, ma anche di rieseguire i test di integrazione (e test di unità, se ci sono test di unità che trattano direttamente il database).

La sicurezza è un'altra preoccupazione. Devi assicurarti che solo le persone autorizzate siano in grado di modificare le query . Ad esempio, sarebbe un disastro mettere le query SQL in modo che un normale utente di un'applicazione desktop possa modificarle: gli utenti potrebbero immaginare di essere esperti in SQL, modificare le query in modo da cancellare il loro database, e una volta che si verifica un disastro, incolperanno il tuo prodotto invece della loro stupidità.

    
risposta data 12.05.2013 - 20:34
fonte
0

Perché non creare stored procedure e utilizzare la libreria di query? Se hai un insieme definito di parametri che non cambi, e leggi dai campi di output con nome e non da quelli di colonna, dovresti essere d'oro se devi modificare l'SQL nelle query.

    
risposta data 17.05.2017 - 10:46
fonte

Leggi altre domande sui tag