problema c# e SQLServeCe

Discussioni circa le basi di dati (SQL Server, DB2, Oracle, MySQL, PostgreSQL, ecc...) e ADO.NET.

problema c# e SQLServeCe

Messaggioda panteraus » mer dic 22, 2010 2:31 pm

Ciao a tutti!! io ho un problema con c# e database SQL Server CE.
Praticamente io ho due db, uno locale del pc in un file sdf e quello del dispositivo.Il mio problema è: quando avvio l'applicazione, io inserisco nuovi record e mi fa tutto bene, modificandomi correttamente il db nel dispositivo, solo che quando chiudo l'applicazione, non mi viene aggiornato il database del pc!! invece il contrario, se eseguo un inserimento da visual studio, mi aggiorna la tabella nel pc e mi aggiorna anche il database del dispositivo quando riavvio l'applicazione.
C'è qualche accorgimento da adottare per caso per fare in modo che i due db siano sempre sincronizzati?

Grazie

Omar
panteraus
 
Messaggi: 3
Iscritto il: mer dic 22, 2010 2:29 pm

Re: problema c# e SQLServeCe

Messaggioda Sergio79 » gio dic 23, 2010 11:50 am

Ma di fatto se devi scrivere su due db devi anche duplicare le operazioni di scrittura.
Tu in che modo ottieni questo?
Sergio79
Sergio79
 
Messaggi: 1347
Iscritto il: dom gen 13, 2008 12:52 pm

Re: problema c# e SQLServeCe

Messaggioda panteraus » gio dic 23, 2010 1:08 pm

Io non duplico le operazioni di scrittura, perchè pensavo fosse automatico l'aggiornamento dei due visto che son collegati.
C'è un modo magari per sincronizzarli con qualche operazione, senza dover duplicare sempre le istruzioni? Qualche consiglio?

Grazie!
panteraus
 
Messaggi: 3
Iscritto il: mer dic 22, 2010 2:29 pm

Re: problema c# e SQLServeCe

Messaggioda Sergio79 » gio dic 23, 2010 5:23 pm

Ma il motore del db è unico?
Per operazioni di sincronizzazione esistono le replice in SQL Server..
http://technet.microsoft.com/it-it/libr ... 51198.aspx
Sergio79
Sergio79
 
Messaggi: 1347
Iscritto il: dom gen 13, 2008 12:52 pm

Re: problema c# e SQLServeCe

Messaggioda panteraus » ven dic 24, 2010 11:16 am

Ti elenco passo a passo le operazioni che ho fatto, così è più chiaro:

1) ho creato manualmente dal progetto un database .sdf inserendo manualmente sempre alcuni record nelle tabelle

nel codice, la connessione al database la imposto con la seguente stringa:

// Per trovare il path, dove salva l'eseguibile:
string appPath = System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase;
string DirPath = Path.GetDirectoryName(appPath);


stringaConnessione = string.Format("Data Source = {0}; Password = {1}; Persist Security Info = False", DirPath + @"\GpsNewsdb.sdf", "");
connessione = new SqlCeConnection(stringaConnessione);


In teoria con questa connessione lui prende il path all'interno del dispositivo

2) al primo avvio dell'applicazione, tale database viene creato anche nella memoria dell'emulatore e tutte le operazioni che faccio (lettura, scrittura, ecc.., usando sempre la stringa di connessione sopra) vengono fatte sul database dell'emulatore (penso per via del path che punta all'interno dell'emulatore e non al server) e nessuna modifica viene fatta in quello locale al progetto.
Se invece faccio una modifica in locale al db del progetto ed avvio l'applicazione, i dati vengono copiati correttamente nel db dell'emulatore! Io pensavo che anche il verso opposto (db emulatore --> db locale del progetto) avvenisse in automatico, ma se non è così, come faccio a fargli aggiornare anche il db locale del progetto? (nel caso debba replicare le istruzioni di inserimento o modifica, qual'è il path da dargli per il db del server e non per quello dell'emulatore?)

GRAZIE!!
panteraus
 
Messaggi: 3
Iscritto il: mer dic 22, 2010 2:29 pm

Re: problema c# e SQLServeCe

Messaggioda Sergio79 » ven dic 24, 2010 12:39 pm

Non ho mai creato db dall'ambiente VS, comunque quello di cui devi assicurarti è su quale file di db stai lavorando dai vari ambienti.
E' possibile che VS agganci il file di db che agganci nella tua applicazione, o magari ha semplicemente un processo automatizzato intrinseco e invisible agli occhi di chi sviluppa che permette l'update istantaneo tra db ed emulatore.

Tuttavia, poco importa perchà se i database da aggiornare sono 2, vuole dire che tu (la tua applicazione) deve scrivere su due file differenti e questo indipendentemente dal numero di istanze di SQL Server che utilizzi.
Sergio79
Sergio79
 
Messaggi: 1347
Iscritto il: dom gen 13, 2008 12:52 pm


Torna a ADO.NET e database

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron