Database

mercoledì 04 luglio 2007 - 10.00

alan80 Profilo | Newbie

Salve a tutti,
sto creando un progetto utilizzando i vari bindingsource e tableadapter per gestire la connessione e l modifica dei dati di un database. Ho visto che la stringa di connessione viene automaticamente salvata all'interno del file Settings. Io vorrei rendere dinamica la stringa di connessione del database. Siccome il settings non é possibile modificarlo (SCOPE = Application) volevo sapere se qualcuno avesse un'idea alternativa per utilizzare la connessione al database.

Grazie mille Jimmy

Cteniza Profilo | Guru

Puoi sempre impostare la connessione nel file "myexe.exe.config" prima di eseguire la tua applicazione
Puoi reimostare la connessine nell'evento load o in un altro qualsiasi momento prima dell'apertura del database.

alan80 Profilo | Newbie

GRAZIE Mille per la risposta!!
Infatti sapevo che tramite i il file di configurazione si potesse cambiare la connessione al database.
Potresti spiegarmi a codice come é possibile cambiare la connessione??

Grazie mille!!

Cteniza Profilo | Guru

Se hai usato il wizard per disegnare il dataset tipizzato dovresti provare a fare una estensione della classe.
Piccolo esempio di estensione:
Namespace dbprovaDataSetTableAdapters
Partial Public Class tableprovaTableAdapter
Public Sub GeneraCommands()
Me.InitCommandCollection()
Dim cn As New MySql.Data.MySqlClient.MySqlConnection(My.Settings.dbprovaConnectionString)
Dim cm As New MySql.Data.MySqlClient.MySqlCommand("SELECT codice, descrizione, valore FROM tableprova", cn)
cn.Open()
Dim da As New MySql.Data.MySqlClient.MySqlDataAdapter(cm)
Dim cmd As New MySql.Data.MySqlClient.MySqlCommandBuilder(da)
Me._adapter = da

Me._commandCollection(0) = cm
Me._connection = cn
Me._commandCollection(1) = cmd.GetDeleteCommand()
Me._commandCollection(2) = cmd.GetInsertCommand()
Me._commandCollection(3) = cmd.GetUpdateCommand()

cn.Close()
End Sub
Public ReadOnly Property MostraCommandCollection() As MySql.Data.MySqlClient.MySqlCommand()
Get
If (Me._commandCollection Is Nothing) Then
Me.InitCommandCollection()
End If
Return Me._commandCollection
End Get
End Property
End Class
End Namespace
Questo ti consente di operare nell'evento load della form
Private Sub MainForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'ho introdotto una frazione della classe helper per poter rigenerare i comandi
'con il commandbuilder, le cazzate introdotte erano già fin troppe
Me.TableprovaTableAdapter.GeneraCommands()
Me.TableprovaTableAdapter.Fill(Me.DbprovaDataSet.tableprova)
AddHandler Me.TableprovaTableAdapter.Adapter.RowUpdated, AddressOf Adapter_RowUpdated
' aggiunto questo per debug
'Dim s As String = String.Empty
'For i As Integer = 0 To 3
' s &= Me.TableprovaTableAdapter.MostraCommandCollection(i).CommandText & Environment.NewLine
'Next
'MessageBox.Show(s)

End Sub

alan80 Profilo | Newbie

Ciao Cteniza,
forse non capisco io la tua risposta o forse non hai capito tu la mia richiesta
Io ho creato un progetto, ho creato i miei dataset con il wizard, e visual studio 2005 mi ha generato lui la connessione
al mio database ACCESS
(Es.: "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\TestDB\test.mdb")
Se vado ad'installare l'applicativo su di un'altra macchina, e non volgio per forza posizionare il database in C:\TestDB\, ma in
un'altra directory (Es.: C:\Programmi\Applicativo\) come faccio a specificare all'applicativo la nuova posizione, e di conseguenza cambiare la stringa di connessione e salvarla definitivamente?
Quello che vorrei é poter rendere dinamica la stringa di connessione, soprattutto poi se mi connetto a database SQL!!

Spero di essere stato chiaro

Ciaoooo e grazie!!

Cteniza Profilo | Guru

Io ti ho solo indicato un esempio di come intervenire lasciando la parte fatta dal wizard senza modifiche.
La mia doveva rigenerare un comando e mi sono fatto un metodo privato per questo.
Tu devi cambiare la connessione ma è analogo.
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