Bu yazımda Ado.Net 'de "connected" yada "disconnected" mimaride "connection string" oluşturmamızı sağlayan bir sınıftan bahsedeceğiz. "SqlConnectionStringBuilder" adından da anlaşılacağı üzere "System.Data.SqlClient" provider 'ının altındadır. "Builder" pattern 'i ile yazılmıştır. Geriye bir "connection string" döndürür. "Connection string" in tüm parametreleri bu sınıfa verilebilir(set), verildikten sonra bu sınıftan okunadabilir. İki çeşit kullanımı vardır. İstenirse parametreleri bu sınıfın nesnesine teker teker verilerek "connection string" oluşturulur. Biraz sonra bir arayüz tasarlayarak kullanıcıdan alınan connection string parametrelerinde bir connection string oluşturacağız. Bu kullanıma tüme varım denir. Ama bu kullanım öncesinde, diğer bir kullanıma örnek vermek gerekirse, aşağıda görüldüğü gibi, "SqlConnectionStringBuilder" sınıf nesnesinin parametre olarak "connection string" alan bir overload 'u vardır, bu overload kullanılarak "connection string" verilir. Daha sonra "connection string" 'in istenilen özelliği get edilir.
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder("Server=. ; Database=Northwind ; Uid=sa ; Pwd=1;
MultipleActiveResultSets=true");
MessageBox.Show(builder.MultipleActiveResultSets.ToString());
Daha sonra kodlarımızı yazalım. Dikkat edilmesi gerek nokta "Authentication" tipine göre "user id" ve "password" parametrelerinin "enable" durumlarıdır. Eğer "windows auth" ile bağlanıyorsam bu parametrelerin "enable" durumu "false" olacaktır. Aynı zamanda ilişkili kontrollerin de "enable" durumlarını false yapabiliriz.
SqlConnectionStringBuilder cb = new
SqlConnectionStringBuilder();
private void
btnConnect_Click(object sender, EventArgs e)
{
cb.DataSource = txtServerName.Text;
cb.InitialCatalog = txtDatabase.Text;
cb.IntegratedSecurity = !txtUserName.Enabled;
if (!cb.IntegratedSecurity)
{
cb.UserID = txtUserName.Text;
cb.Password = txtPassword.Text;
}
MessageBox.Show(cb.ConnectionString);
}
private void cmbAuthentication_SelectedIndexChanged(object sender, EventArgs
e)
{
if (cmbAuthentication.SelectedIndex == 0)
{
txtUserName.Enabled = txtPassword.Enabled = lblUserName.Enabled =
lblPassword.Enabled = false;
return;
}
txtUserName.Enabled = txtPassword.Enabled = lblUserName.Enabled = lblPassword.Enabled = true;
}
Şimdi bir de "sql auth" ile deneyelim.
Checked box larla connection string in MARS ve Pooling parametrelerini de kontrol edebilirdik. Umarım faydalı olabilmişimdir. Başka bir yazıda görüşmek dileğiyle, hoşçakalın...
Selam Hocam birden fazla veri tabanı için nasıl bir yol izlenmeli sql sunucumuzda 2 ayrı db var bunları nasıl çekebiliriz.
YanıtlaSil