[ Csharp @ 22.08.2006. 12:26 ] @
Pozdrav svima!


Da li netko zna kako da dinamički promijenim connectionstring u VS2005? Naime kada radim preko onog pametnog dataseta, on mi nafrlji connection string u settings, odnosno u app.config. E sada me zanima da li se to može dinamički promijeniti i ako može kako da to napravim! Pokušao sam staviti da je taj property na nivou user-a, ali mi ne dozvoljava.

Samo mi nemojte reći da ću se morati zezati sa xml-om, jer mi je to gnjavaža! :)
[ Shaggy @ 22.08.2006. 15:18 ] @
Za tako nesto ima mnogo nacina..ali recimo pokusaj ovako...

Izmeni U App configu ConnString npr ovako:
data source=(local);initial catalog=NorthWind;user id={0};password={1};persist security info=true

A u kodu:

string[] n = new string[2];
n[0] = "user";
n[1] = "Password";
Konecija.ConnectionString = string.Format(Konekcija.ConnectionString, n)

(Naravno uz pretpostvaku da je vec Ucitan ConnectionString iz AppConfig po default-u...)

Pozdrav,

Misa
[ Csharp @ 23.08.2006. 08:50 ] @
Ok je ovo što ti klažeš, ali problem je u novom studiju što on to postavi u settings-e i stavi mu da je na nivou aplikacije, a ne na user-a, pa se ne može promijeniti! Ja sam našao jedno alternativno rješenje, da kada radim dataset-ove i ostalo, tada radim na nivou aplikacije, a kada hoću bildat-i aplikaiju, odem u settings-e i stavim da parametar nije ConnectionString, već običan string i tada mu mogu postaviti da je na nivou user-a.

To mi je potrebno, recimo kada instaliram negdje nekakav program, da ne moram ručno mijenjati u app.onfig-u, već sam napravio u samom programu da sam odabereš instancu baze (sql), odabereš da li je windows authentication, ako nije, onda username i password i iz toga mogu dobiti popis svih baza u toj instanci, a onda iz tih parametara kreiram connectionstring i zapišem u settiungs-e.


U svakom slučaju hvala na odgovoru.
[ Csharp @ 23.08.2006. 10:46 ] @
Evo našao sam ono što tražim, pa koga zanima neka izvoli.


private static void WriteEncryptedConnectionStringSection(
string name, string constring, string provider)
{
// Get the configuration file for the current application. Specify
// the ConfigurationUserLevel.None argument so that we get the
// configuration settings that apply to all users.
Configuration config = ConfigurationManager.OpenExeConfiguration(
ConfigurationUserLevel.None);
// Get the connectionStrings section from the configuration file.
ConnectionStringsSection section = config.ConnectionStrings;
// If the connectionString section does not exist, create it.
if (section == null)
{
section = new ConnectionStringsSection();
config.Sections.Add("connectionSettings", section);
}
// If it is not already encrypted, configure the connectionStrings
// section to be encrypted using the standard RSA Proected
// Configuration Provider.
if (!section.SectionInformation.IsProtected)
{
// Remove this statement to write the connection string in clear
// text for the purpose of testing.
section.SectionInformation.ProtectSection(
"RsaProtectedConfigurationProvider");
}
// Create a new connection string element and add it to the
// connection string configuration section.
ConnectionStringSettings cs =
new ConnectionStringSettings(name, constring, provider);
section.ConnectionStrings.Add(cs);
// Force the connection string section to be saved.
section.SectionInformation.ForceSave = true;
// Save the updated configuration file.
config.Save(ConfigurationSaveMode.Full);
}
[ mmix @ 23.08.2006. 11:32 ] @
Samo mala napomena da ako hoces da menjas samo neke parametre connection stringa, mozes da imas bazicni connection string koji ces ucitati i modifikivati kroz ConnectionStringBuilder. To je novotarija koju su dodali u .NET 2.0