A mio parere la soluzione migliore è quella di creare classe intermedia tra il db e di applicazione (un certo tipo di livello di dati), che un certo numero di metodi per gestire le query. descrizione sotto base su SQLite come analogia a SQLServer (connettore ADO)
classe oggetto possono da Singleton, e si può chiamare esempio dove vuoi nella vostra applicazione - per SQLite si può sembra che:
private static SQLite instance;
public static SQLite getInstance()
{
if(instance == null)
{
instance = new SQLite();
thread = Thread.CurrentThread.ManagedThreadId;
}
return instance;
}
È possibile ottenere l'istanza in questo modo:
SQLite db = SQLite.getInstance();
questa classe può contenere più metodi per la manipolazione dei dati, ad esempio:
public SQLiteCommand prepareQuery(string sql)
{
cmd = new SQLiteCommand(sql, conn);
return cmd;
}
public SQLiteDataReader executeReader()
{
return cmd.ExecuteReader();
}
public int executeInt()
{
object obj = cmd.ExecuteScalar();
return (int)obj;
}
ma anche metodi di gestione delle transazioni e di diagnostica. Quindi, ora puoi utilizzare questa classe simile nell'applicazione se disponi di altri sorgenti db o anche tipi db, puoi creare il prossimo livello dati (ad esempio per Oracle o MSSQL, MySQL ...) ognuno dei quali ha implementazioni la stessa interfaccia per esempio:
IDataBase
e ora, si ha una sorta di facciata, che è possibile sostituire, se necessario dynamicly. Da questo momento l'uso di db in application è concentrato in un punto, ed è un puro piacere per il programmatore utilizzarlo - questo è il mio suggerimento.
Quanta esperienza di programmazione hai? Hai usato i database prima? – Onkelborg
Ho alcune conoscenze di base in C# e so SQL, non ho avuto accesso ad un db in un programma C# prima. – user483267
Questa è una domanda aperta. Qualsiasi buona risposta dipenderà da ciò che si vuole fare, dal lasso di tempo con cui si deve lavorare e da ciò che si è già familiari/a proprio agio. – jac