PDA

View Full Version : [VB.NET] Aiuto su dataset


inggae
02-12-2014, 20:23
Salve.
Mi sono avventurato nella gestione di database Access via OleDB. In prima battuta (anche per familiarizzare con qualcosa che non sia un recordset) ho creato una connessione al db mediante procedura guidata e mi sono così creato con il wizard tutto il dataset, datatable e tableadapter con tanto di query personalizzate.
Ho un dubbio pressante adesso che tutto funziona a puntino (e dopo aver risparmiato centinaia di righe di codice). Prima io mi connettevo al db via codice. Avevo creato una stringa di connessione. Prima di procedere all'apertura del db richiamavo una routine per verificare l'esistenza del file access e, in caso negativo, andavo a selezionarmelo (molto utile quando cambiavo PC, in quanto il programmino ce l'avevo come portable su USB).
Adesso che ho fatto tutto col wizard, noto che la stringa di connessione contiene un percorso assoluto. Se volessi modificare questa stringa in fase di avvio del software come posso fare?
Grazie

Riordian
04-12-2014, 08:36
di solito si mette la stringa di connessione nel file app.config o web.config.
Al lancio del software vai a leggere la stringa di connessione da questi file.

Se invece devi modificare proprio dal form la stringa di connessione allora potresti usare una textbox in cui inserire la stringa di connessione e andare a modificare la ConnectionString del tuo oggetto di connessione programmaticamente e poi aprire la connessione al tuo db. Poi puoi adottare anche altre soluzioni di interfaccia più o meno eleganti ma il succo è questo.

Domanda: Come mai usi VB.NET come linguaggio?

inggae
04-12-2014, 09:05
lo so che la stringa c'è nell'app.config. Il punto è che essendo una variabile di tipo connectionstring in ambito applicazione, è di sola lettura!!! Mi sfugge proprio questo: se volessi modificarla prima di lanciare l'applicazione ma sempre a runtime (quindi diciamo così, al primo avvio dell'utente finale che sarei sempre io) come faccio?

PS: uso vb.net perchè lo trovo più familiare provenendo da vb6. Tu cosa mi consigli? Considera che non sono un programmatore. Sono un ing. civile che, da autodidatta, si dedica a crearsi dei piccoli software utili nel quotidiano!

Riordian
04-12-2014, 09:59
lo so che la stringa c'è nell'app.config. Il punto è che essendo una variabile di tipo connectionstring in ambito applicazione, è di sola lettura!!! Mi sfugge proprio questo: se volessi modificarla prima di lanciare l'applicazione ma sempre a runtime (quindi diciamo così, al primo avvio dell'utente finale che sarei sempre io) come faccio?

PS: uso vb.net perchè lo trovo più familiare provenendo da vb6. Tu cosa mi consigli? Considera che non sono un programmatore. Sono un ing. civile che, da autodidatta, si dedica a crearsi dei piccoli software utili nel quotidiano!
Tieni conto che puoi mettere più di una stringa di connessione sull'app config e poi allora scegliere quale utilizzare runtime.
Se invece è una scelta dell'utente che non puoi sapere a priori in qualche modo devi passare la connection string che vuoi quando ti serve.
Ora è già un po' che non uso ADO per l'accesso al db ma se non ricordo male c'è l'oggetto OleDBConnection che ha la proprietà ConnectionString che devi valorizzare con la stringa di connessione.
Per passare i dati di connessione bisogna vedere che tipo di app stai sviluppando, console application o form per esempio. Nel primo caso potresti passare la stringa di connessione tramite gli args del programma, nel secondo potresti passarla inserendola in una textbox.. a quel punto appena entri nel main del programma, o quando hai necessità della stringa di connessione aggiorni la proprietà connectionString della OleDBConnection e poi chiami il metodo Open.

Su msdn per esempio spiegano come usare i connection string builder

http://msdn.microsoft.com/en-us/library/vstudio/ms254978%28v=vs.110%29.aspx
(http://msdn.microsoft.com/en-us/library/vstudio/ms254978%28v=vs.110%29.aspx)

http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbconnectionstringbuilder%28v=vs.110%29.aspx

a questo punto la connection string dovresti passarla all'oggetto OleDbConnection e poi fare l'open.

http://msdn.microsoft.com/it-it/library/system.data.oledb.oledbconnection%28v=vs.110%29.aspx


Se vuoi farla più veloce salti l'utilizzo del connectionstringbuilder e passi direttamente una stringa creata da te alla oledbconnection.

Ma in ogni modo i dati li devi passare all'applicativo, anche se non vuoi usare il file di configurazione. In base a che tipo di applicazione hai decidi il modo di passare i dati per la connection string.

Per il linguaggio di programmazione io ti consiglierei di partire subito con il C# e lasciar perdere il VB.NET, anche se ne vieni da VB6, ma è un'opinione ;)