Modifica struttura database

mercoledì 18 novembre 2009 - 15.47

fagall Profilo | Newbie

Ciao a tutti, sono nuovo del mondo.net e facendo alcuni esperimenti, mi sono bloccato davanti a questo problema....

Premetto che utilizzo vb 2005 e sql2005 in versione express.

Ho fatto un piccolo programma per la gestione di una rubrica telefonica, ho creato la form e il database e fin qui nessun problema tutto funziona alla perfezione.

Il mio problema è nato quando ho provato a modificare la struttura della tabella del database aggiungendo un nuovo campo.

In pratica ho fatto questa operazione:

1) da esplora database ho selezionato la tabella e aggiunto il nuovo campo e salvato la tabella
2) da esplora soluzioni ho aggiornato il file con estensione "xsd" verificando l'inserimento del nuovo campo

Una volta "lanciato" il progetto, i dati che avevo inserito sono stati cancellati...

Perchè accade questo? dove sbaglio?

Grazie

Brainkiller Profilo | Guru

>1) da esplora database ho selezionato la tabella e aggiunto il
>nuovo campo e salvato la tabella
>2) da esplora soluzioni ho aggiornato il file con estensione
>"xsd" verificando l'inserimento del nuovo campo

Ti do un primo consiglio immagino stai usando dataset tipizzati. A me non piacciono molto, ti invito magari a valutare nuove soluzioni tipo LINQ to SQL o l'Entity Framework.

>Una volta "lanciato" il progetto, i dati che avevo inserito sono
>stati cancellati...
>Perchè accade questo? dove sbaglio?

Bella domanda.... potrebbe venirmi in mente che cambiando struttura del database dopo il salvataggio lui abbia cancellato i dati ma di solito in SQL Server 2005 non fa così e li mantiene quindi dovrebbe farlo anche nel tuo caso.
Prova una seconda volta in modo da escludere questa casistica.

Se non fosse così da qualche parte nel tuo codice ci dovrebbe comunque essere una DELETE da qualche parte.

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

fagall Profilo | Newbie

Ciao, prima di tutto grazie per la risposta.

ho fatto le prove che mi hai chiesto in questo modo:

ho creato un form con le label "nome" e "telefono" e le rispettive textbox, successivamente ho creato un database con la relativa tabella.

fatto questo ho "portato" la tabella da esplora soluzioni sul form creando così i vari tableadapter, bindingnavigator ecc..

infine ho generato il progetto.

nella cartella "release" ho mandato in esecuzione il progetto e scritto alcuni record.

A questo punto ho fatto una modifica alla tabella inserendo un nuovo campo ad es. "fax". genero nuovamente il progetto e quando lo mando in esecuzione dalla cartella "release" il database è vuoto!!

Perchè?

Ho notato che su esplora soluzioni selezionando il file "rubrica.mdf" ci sono diverse impostazioni. che ci sia un errore in queste?
attualmente sono posizionate così: copia nella directory: copia sempre - nome file. rubrica.mdf - operazione di generazione: contenuto

allego immagine di ciò che è il progetto.

grazie per le risposte


1280x800 151Kb

Brainkiller Profilo | Guru

>Ho notato che su esplora soluzioni selezionando il file "rubrica.mdf"
>ci sono diverse impostazioni. che ci sia un errore in queste?
>attualmente sono posizionate così: copia nella directory: copia
>sempre - nome file. rubrica.mdf - operazione di generazione:
>contenuto

Non vorrei che magari quando fai la compilazione, viene ricopiato tutte le volte e te lo ritrovi sempre vuoto. prova a cambiare "Copia sempre" ad altra opzione.

Inoltre vedo che stai usando la modalità auto-attach. Cioè a runtime viene agganciato il file .mdf al database, cosa che reputo orribile. Piuttosto creati un Database con il SQL Management Studio Express e poi collegati con una SqlConnection e relativa connectionstring. Vedrai che così non li perdi i dati.
Ciao

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

fagall Profilo | Newbie

Ciao, grazie per la risposta....

>Non vorrei che magari quando fai la compilazione, viene ricopiato
>tutte le volte e te lo ritrovi sempre vuoto. prova a cambiare
>"Copia sempre" ad altra opzione.

ho provato tutte le soluzioni sia sul file "rubrica.mdf" che sul file "rubrica.xsd"

> Piuttosto creati un Database con il SQL Management
>Studio Express e poi collegati con una SqlConnection e relativa
>connectionstring. Vedrai che così non li perdi i dati.

ho creato il database così come hai detto, ma non riesco a collegarlo.

potresti spiegarmi come fare?

in tutte le guide che son riuscito a trovare, ci sono solo degli esempi tipo quello che ho fatto io.

grazie

Ciao

Brainkiller Profilo | Guru

>ho creato il database così come hai detto, ma non riesco a collegarlo.
>potresti spiegarmi come fare?

Dovresti già avere installato questo:
http://www.microsoft.com/downloads/details.aspx?FamilyId=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796&displaylang=en
se non ce l'hai ancora installalo.
Quando lo avvii vedrai una cosa di questo tipo:
http://seekdotnethosting.files.wordpress.com/2009/05/managementstudio.gif

All'interno di databases vedi i database presenti e ne puoi creare di nuovi.
Creane uno nuovo e crea le tue tabelle.

Poi puoi usare le classi tradizionali tipo SqlConnection per connetterti tipo in C#:

SqlConnection conn=new SqlConnection(stringa_di_connessione); conn.Open(); conn.Close();

Come stringa di connessione le trovi tutte raccolte qui:
http://www.connectionstrings.com/

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5