2009-07-13 22 views
20

Sto realizzando un'app che verrà installata ed eseguita su più computer, il mio obiettivo è quello di creare un file di database locale vuoto che viene installato con l'app e quando l'utente usa l'app il suo database da riempire con i dati dall'app. mi può offrire i seguenti esempi:Database locale, ho bisogno di alcuni esempi

  1. quello che devo fare così la mia app in grado di connettersi al suo database locale
  2. come eseguire una query con variabili dal app, ad esempio come ti aggiungere al database la seguente cosa

    String abc = "ABC"; 
    String BBB = "Something longer than abc"; 
    

ed ecc Modifica :: sto usando un "database locale" cr mangiato da "aggiungi> nuovo elemento> database locale", quindi come mi connetterei a quello? Scusate per la domanda stupida .. non ho mai usato i database in .NET

+0

Che tipo di database ti stai connettendo? – ddc0660

+0

Sto pensando di usare un file .sdf locale – Aviatrix

+0

Ho aggiornato la mia risposta in risposta a voi spesifying usando .sdf (Sql Ce/Sql Compact) –

risposta

22

A seconda delle esigenze è inoltre possibile considerare Sql CE. Sono sicuro che se specifichi il database che stai pensando di utilizzare, o le tue esigenze se stai usurando, otterrai esempi veri e propri di stringhe di connessione, ecc.

Modifica: Ecco il codice per SqlCe/Sql Compact

public void ConnectListAndSaveSQLCompactExample() 
    { 
     // Create a connection to the file datafile.sdf in the program folder 
     string dbfile = new System.IO.FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).DirectoryName + "\\datafile.sdf"; 
     SqlCeConnection connection = new SqlCeConnection("datasource=" + dbfile); 

     // Read all rows from the table test_table into a dataset (note, the adapter automatically opens the connection) 
     SqlCeDataAdapter adapter = new SqlCeDataAdapter("select * from test_table", connection); 
     DataSet data = new DataSet(); 
     adapter.Fill(data); 

     // Add a row to the test_table (assume that table consists of a text column) 
     data.Tables[0].Rows.Add(new object[] { "New row added by code" }); 

     // Save data back to the databasefile 
     adapter.Update(data); 

     // Close 
     connection.Close(); 
    } 

Ricordate di aggiungere un riferimento System.Data.SqlServerCe

+3

solo una FYI: SQL CE è SQL Compact è SQL Mobile - CE si riferisce alla versione leggermente obsoleta; l'ultima (2008 generazione) si chiama SQL Compact mentre SQL CE (Compact Edition) è di generazione 2005. – STW

+1

Sia la connessione che il dataadapter dovrebbero essere in "uso" dei blocchi. –

0

Per 1)

Il modo più semplice per fornire questa funzionalità è attraverso SQL Server Express User Instances. SQL Server Express è gratuito, quindi l'utente non deve pagare licenze aggiuntive per SQL Server e l'istanza utente è basata su file, in base alle proprie esigenze.

Per 2)

Questo è un grande argomento. Si consiglia di passare attraverso alcuni dei tutorials from Microsoft per avere la sensazione di come la connessione a DB, ecc

+6

Per 1): ** No! ** È molto raro che dovresti usare Express Edizione per un database desktop utente singolo. Invece, utilizzare un motore in-process come Sql Server Compact Edition, Sqlite o anche Access. –

+0

Il mio punto era, è il modo più semplice (potrebbe non essere il modo migliore). Personalmente non ho mai usato alcun motore DB in-proc. Se quei motori sono effettivamente facili da usare (e hanno lo stesso livello di supporto) di SQL Server, allora rimarrò corretto. –

+2

Generalmente sono più facili da implementare (supporto xcopy per una macchina nuova di zecca), quasi altrettanto facile da sviluppare (devi installare un sdk sulla tua casella di sviluppo, ma continueranno a seguire lo stesso modello di provider di dati di SQL Server) e hanno un'esperienza utente decisamente migliore, dal momento che non richiedono l'esecuzione di SQL Server in background anche quando l'app è spenta. –

6

Sembra come se fossi:

  • -Fare un'applicazione C# che verrà installata ed eseguita su più computer
  • -Che ha bisogno di un database locale (sto assumendo un RDBMS)
  • -È necessario generare un database vuoto al momento dell'installazione
  • -È quindi devono essere in grado di connettersi al database e popolarlo quando l'app viene eseguita.

In generale, sembra che sia necessario leggere l'utilizzo di un piccolo motore di database per le applicazioni. Vorrei iniziare verificando SQLite, soprattutto se hai bisogno di funzionalità multi-OS (ad esempio, il tuo programma C# verrà eseguito su Microsoft .NET Framework e Novell's Mono). Ci sono wrapper C# per accedere al database SQLite.

+1

@Lou Franco - Grazie per la grammatica ed. –

1

Cosa stai considerando come database? Da quel poco che hai fornito nella tua domanda, ti suggerirei SQLite.

È possibile ottenere il codice di esempio dal loro sito Sqlite.NET

1

Non sono sicuro Capisco perfettamente quello che stai chiedendo, ma SQLite è una buona opzione per il peso leggero, la persistenza di database distribuito a livello locale. Date un'occhiata qui:

http://www.sqlite.org/

e qui per un provider ADO.NET ..

http://sqlite.phxsoftware.com/

11

Non sto vedendo nessuno suggerendo SQL Compact; è simile a SQLite in quanto non richiede installazione e adattamento al database di fascia bassa. È nato da SQL Mobile e in quanto tale ha un ingombro ridotto e un set di funzionalità limitato, ma se hai familiarità con le offerte SQL di Microsoft dovrebbe avere una certa familiarità.

SQL Express è un'altra opzione, ma tenere presente che richiede un'installazione standalone ed è un po 'più complesso di quanto potrebbe essere necessario per la cache locale di una applciation. Detto questo, è anche un po 'più potente di SQL Compact o SQLite.

+0

Ecco il sito di SQL Compact; è davvero un piccolo Database piuttosto solido, specialmente per quanto sia leggero. http://www.microsoft.com/sqlserver/2008/en/us/compact.aspx – STW

4

credo che questa questione è di circa il modello "Database locale" voce in Visual Studio:

alt text

Problemi correlati