Il termine dati locali si riferisce alla disponibilità di una connessione tra l'applicazione in uso e un file di database sul computer locale (invece di una connessione a un database su un server remoto). I file di database locale supportati attualmente sono i file di database di SQL Server Compact Edition (sdf), di SQL Server/SQL Server Express (mdf) e di Microsoft Access (mdb).
È possibile creare connessioni ai file di database tramite Configurazione guidata origine dati oppure Finestra di dialogo Aggiungi nuovo elemento.
Suggerimento: |
|---|
| Trascinare un file mdf oppure mdb da Windows a Esplora soluzioni per configurare in modo automatico la connessione e avviare la Configurazione guidata origine dati per la selezione degli oggetti da utilizzare nell'applicazione. |
Nella tabella riportata di seguito sono forniti i collegamenti alle pagine che descrivono la modalità di connessione dell'applicazione ai dati locali:
Una volta creata un'origine dati configurata per accedere a un file di dati locale, è possibile operare con i dati utilizzando le stesse tecnologie e oggetti utilizzati quando si opera con dati provenienti di un'altra origine. Per ulteriori informazioni, vedere Creazione di applicazioni dati client.
Il database è parte dell'applicazione
Utilizzando l'approccio dei dati locali, sarà possibile non solo connettersi a un file di database, ma anche integrarlo nell'applicazione in uso. Ad esempio, è possibile selezionare Aggiungi nuovo elemento dal menu Progetto, individuare un file mdf o mdb esistente e aggiungerlo al progetto.
Nota |
|---|
| Se si utilizza Configurazione guidata origine dati per creare l'origine dati per un file di dati locali, verrà richiesto se si desidera includere il file nel progetto. Se non si desidera includere il file nel progetto, nell'applicazione sarà contenuta soltanto la stringa di connessione puntata sul percorso a livello di codice e non il file di dati effettivo. Per ulteriori informazioni, vedere Procedura: gestire file di dati locali nel progetto. |
L'aggiunta di un file di dati locali consente la creazione di un dataset tipizzato e di una stringa di connessione dinamica che punta al file di database dell'applicazione. Quando si aggiunge un file di un database al progetto, per selezionare gli oggetti da includere nel dataset viene utilizzata la Configurazione guidata origine dati.
Dopo aver completato la configurazione guidata, il file di database e il dataset vengono visualizzati in Esplora soluzioni e gli oggetti database selezionati sono disponibili nella finestra Origini dati. È possibile trascinare gli elementi dalla finestra Origini dati al form per creare controlli associati ai dati sottostanti. Scegliere Mostra origini dati dal menu Dati per visualizzare la finestra Origini dati. Per ulteriori informazioni, vedere Visualizzazione di dati su form nelle applicazioni Windows.
In ciascun progetto sono presenti due copie del database
Per impostazione predefinita, quando si genera un progetto, il file di database viene copiato dalla cartella principale del progetto alla cartella di output (bin). Per visualizzare la cartella bin selezionare Mostra tutti i file in Esplora soluzioni. Tale comportamento dipende dalla proprietà Copia nella directory di output del file. L'impostazione predefinita della proprietà Copia nella directory di output è Copia sempre. Pertanto, il database presente nella cartella bin verrà copiato ogni volta che si genera, si effettua il debug o si esegue l'applicazione.
Nota |
|---|
| Il comportamento della proprietà Copia nella directory di output non si applica al Web o a progetti C++. |
Il file di database nella cartella principale del progetto viene modificato soltanto quando si modifica lo schema del database oppure i dati utilizzando Esplora server/Esplora database oppure altri Visual Database Tools.
Il comportamento del file di database dipende dalle impostazioni della proprietà Copia nella directory di output, descritta in dettaglio nella tabella riportata di seguito.
Durante lo sviluppo dell'applicazione, le modifiche apportate ai dati (in fase di esecuzione all'interno dell'applicazione) vengono effettuate anche nel database della cartella bin. Ad esempio, quando si preme F5 per eseguire il debug dell'applicazione, esiste una connessione al database nella cartella bin.
|
Impostazione Copia nella directory di output |
Comportamento
|
| Copia se più recente | Questa opzione non è consigliata. Il file di database viene copiato dalla directory di progetto alla directory bin quando il progetto viene generato per la prima volta. Nelle successive operazioni di creazione del progetto, verrà confrontata la proprietà Data ultima modifica dei file. Se il file contenuto nella cartella di progetto è il più recente, viene copiato nella cartella bin e sostituisce il file corrente. Se il file più recente è quello contenuto nella cartella bin non verrà copiato alcun file. Questa impostazione è valida per tutte le modifiche apportate ai dati in fase di esecuzione; pertanto, ogni volta che si esegue l'applicazione e si salvano le modifiche ai dati, queste modifiche saranno visualizzate nella successiva esecuzione dell'applicazione. Attenzione |
|---|
| Il file di database può essere modificato anche quando non si effettua alcuna modifica ai dati. La semplice apertura di una connessione (ad esempio, espandendo il nodo Tabelle in Esplora server) in un file di dati può contrassegnarlo come il più recente. L'utilizzo di questa opzione è sconsigliato dal momento che può comportare conseguenze impreviste. |
|
| Copia sempre (impostazione predefinita) | Il file di database viene copiato dalla directory di progetto alla directory bin ogni volta che viene generata l'applicazione. Tutte le volte che viene generata l'applicazione e si salvano le modifiche ai dati, queste modifiche vengono sovrascritte quando il file originale viene copiato nella directory bin sostituendo la copia appena modificata. Alla successiva esecuzione dell'applicazione i dati aggiornati non vengono visualizzati. Tutte le modifiche effettuate al file di dati nella cartella di output saranno sovrascritte durante la successiva esecuzione dell'applicazione. |
| Non copiare | Il file non sarà né copiato né sovrascritto dal sistema del progetto. Dal momento che nell'applicazione si crea una stringa di connessione dinamica che punta al file di database nella directory di output, sarà possibile eseguire questa impostazione per i file di database locali soltanto quando si effettua una copia del file manualmente. La copia del file deve essere copiata manualmente nella directory di output dopo l'impostazione su Non copiare. |
Problemi comuni dei dati locali
Nella tabella riportata di seguito sono fornite spiegazioni per i problemi comuni verificatisi in fase di utilizzo dei file di dati locali.
|
Problema
|
Descrizione
|
| Ogni volta che viene eseguito il test dell'applicazione e vengono modificati i dati, le modifiche vengono perse quando si esegue nuovamente l'applicazione. | La proprietà Copia nella directory di output è impostata su Copia se più recente oppure su Copia sempre. Mediante queste impostazioni il database della cartella di output verrà sovrascritto (il database è stato modificato durante il test dell'applicazione) tutte le volte che si crea un progetto. Per ulteriori informazioni, vedere Procedura: gestire file di dati locali nel progetto. |
| Si riceve un messaggio che indica che il file di dati è bloccato | Access ( file mdb): verificare che il file non sia aperto in un altro programma, ad esempio Access. SQL Server Express (file mdf): in SQL Express il file di dati viene bloccato se si tenta di copiare, spostare o rinominare il file di dati all'esterno dell'IDE di Visual Studio. |
| Accesso negato se il tentativo di accesso al database viene effettuato da due utenti contemporaneamente. | Visual Studio sfrutta la capacità di istanze utente, una funzionalità di SQL Server Express in cui viene creata un'istanza separata di un server SQL per ogni utente. Dal momento in cui un utente accede al file, nessun utente successivo sarà in grado di effettuare la connessione. Tale situazione può verificarsi se, ad esempio, si effettua il tentativo di eseguire un'applicazione Web in ASP.NET Development Server e IIS contemporaneamente, dal momento che IIS in genere viene eseguito con un diverso account. |
Vedere anche