Problema connessione database

domenica 16 gennaio 2011 - 11.18
Tag Elenco Tags  C#  |  .NET 3.5  |  Windows 7  |  Visual Studio 2008  |  MySQL 5.1  |  Office 2007  |  Firefox  |  Javascript

raul2 Profilo | Newbie

Ciao a tutti,

ho una pagina aspx (e code behind in c#) che deve connettersi a due diversi database

mysql. Il primo contiene una tabella le cui colonne sono:nome, descrizione,

active; la prima contiene una lista di nomi di database, la seconda l'argomento del

database e l'ultima un numero che può essere 0 o 1.

La mia pagina si connette a tale database e recupera il nome del database in cui la colonna

active vale 1. A questo punto dovrei fare in modo di connettermi al database il cui nome ho

recuperato nel modo apena esposto.

Vi posto il codice che ho usato per stabilire una connessione:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
La "db_connection1" che compare nel codice l'ho definita nel file web.config così:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
dopo la chiusura della prima

connessione per estrapolare il nome del database attivo (l'ho estrapolato come rdr["nome"]), apro una

seconda connessione così:
MySql.Data.MySqlClient.MySqlConnection conn1; string myConnectionString1 = "server=localhost;uid=usn;" + "pwd=psw;database=Torino1;"; conn1 = new MySql.Data.MySqlClient.MySqlConnection(myConnectionString1); conn1.Open(); string sql1 = " SELECT * FROM images ORDER BY RAND() limit 3"; MySqlCommand cmd1 = new MySqlCommand(sql1, conn1); MySqlDataReader rdr1 = cmd1.ExecuteReader(); while (rdr1.Read()) { Response.Write(rdr1["ImageName"]); }
Quello che vorrei fare è, alla voce database di

myConnectionString1, non mettere Torino1 bensì qualcosa di dinamico

(ad es rdr["nome"]), in modo che se il database attivo cambia, la

connessione si adatta a tale cambiamento. Però nella stringa se

metto qualcosa di diverso dal nome del database mi dà errore..

Come posso fare?

Grazie

alx_81 Profilo | Guru

>Ciao a tutti,
Ciao

>Come posso fare?
Come ti dà errore? In che senso? Quella è una stringa e se tu riesci a fare arrivare il valore del reader all'interno della stringa di connessione non c'è nessun problema nel farlo.
Hai provato a fare debug controllando che il valore che passi esista ancora? Dal codice che vedo, se fai la close del reader lo rendi inaccessibile. Salvati in una variabile visibile anche alla seconda parte (quella in cui fai la seconda connessione) il valore del reader (colonna del nome database) e poi riutilizza quella concatenando alla stringa successiva.

>Grazie
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

Gluck74 Profilo | Guru

Ciao,
per modificare una stringa al volo, puoi usare i marcatori per formattarla.
Ecco un esempio che fa al tuo caso:

Nel web.config metti intrambe le stringhe di connessione (fai attenzione a come ho scritto la seconda):
<connectionStrings> <add name="db_connection1" connectionString="Datasource=localhost;Database=kfdb;uid=usn;pwd=psw" providerName="MySql.Data.MySqlClient"/> <add name="db_connection2" connectionString="Datasource=localhost;Database={0};uid=usn;pwd=psw" providerName="MySql.Data.MySqlClient"/> </connectionStrings>

a questo punto da codice, prendi la seconda stringa di connessione nello stesso modo, poi prima di passarla al costruttore della connessione fai questo:

myConnectionString1 = string.Format(myConnectionString1, rdr["nome"].ToString());

Ciao

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5