Sql server veritabanı ve C# bağlantısı
Yazan: Levent | kATEGORi: .Net, Ado.net, C#, Database, XmlÖnceki yazımda Ado.net e kısa bir giriş yapmıştım. Bugün ise c# uygulamamızı, sql server a nasıl bağlayacağımızı öğrenelim. Aslında internette bu konuyla ilgili sayısız kaynak var ancak karmaşık olanlarının sayısı da çok. Ben çok daha basit bir dille anlatmaya çalışacağım. Sadece serverdaki bir veritabanıyla, bağlantıyı açıp tekrar kapatacağız. başka bir işlem yapmayacağız. Bunun için önce sql server ın açık olup olmadığını kontrol etmekte fayda var. Bilgisayarımdan yönete girerek servisler ve uygulamalar altındaki sql server configuration manager içindeki sql server 2005 servislerine giriyoruz. Burda SQL Server(SQLEXPRESS ) çalışır durumda olup olmadığını kontrol ediyoruz. kapalıysa açıyoruz ve visual studio ya dönüyoruz. Öncelikli işimiz sql server üzerinde bir veritabanı oluşturmak. Bunun için server explorerı açıyoruz . (View -> Server Explorer) Burda Data Connections a sağ tıklayıp Create new Sql Server Database diyoruz. Karşımıza aşağıdaki gibi bir pencere çıkıyor.
göründüğü gibi server name olarak “.\SQLEXPRESS” diyoruz. Buradaki nokta localhost umuzu temsil eder nokta yerine bilgisayarımızın ismini de yazabilirdik. Database imize bir isim de verdikten sonra işlem tamam. Dilersek data connections altında oluşturulan database imize tablolar vs ekleyebiliriz. ama ben şu anda gerekli görmüyorum. Şimdi geldi uygulamamızı yazmaya ve uygulamamız ile yarattığımız database arasında bağlantı oluşturmaya. Bunun için yeni bir windows forms app oluşturulım ve formumuzun üzerine 2 tane button koyalım isimleri aç ve kapat olsun. Sıra geldi kodlarımızı yazmaya.
Ado.NET , .Net framework kütüphanesinin bir alt kümesidir. Veritabanı işlemlerimizi daha kolay yapabilmek için bu kütüphanenin sınıflarını kullanırız. Önce projemize kullanacağımız bağlantı nesnelerini içerisinde tutan “using System.Data.SqlClient” uzayını dahil edelim. Şimdi bağlantı nesnemizi yaratacağız ve connection string imizi bu nesneye parametre olarak vereceğiz.
SqlConnection myCon = new SqlConnection(@”Data Source= .\SQLEXPRESS;
Initial Catalog=FILMS;Integrated Security= True”);
“@ “karakteri hatırlanacağı gibi string içerisindeki ‘ \’ gibi karakterlerden kaçınmak için kullanılıyordu. Data source, veritabanının bulunduğu yeri gösterir. Data source = dedikten sonra eğer kendi makinemize bağlanmak istiyorsak birçok seçeneğimiz var. Bunlar, “localhost” veya “bilgisayarımızın adı” veya “.” veya “bilgisayarımınz ip si” dir. Uzak bir bilgisayara bağlanmak istiyorsak o bilgisayarın ip sini yazabiliriz. SQLEXPRESS ise bilgisayardaki server ımızın adı. Initial Catalog; o bilgisayar içerisinde hangi database ile bağlantı kuracağımızı tutar. Integrated Security=True ise sql server a windows oturumu üzerinden bağlanmamızı sağlar. Artık myCon.Open(); dediğimizde bağlantımız açılacaktır.
Şimdi olaya bir başka açıdan bakalım. Diyelim ki bilgisayarımızın adını değiştirdik veya database in adı değiştirildi. Her değişim için uygulamamıza girip connection string imizi değiştirmemiz ve kodu yeniden derlememiz gerekecek. Bu sorunu aşmak için xml den yardım alabiliriz. Xml, bilgilerin kolay anlaşılabilir ve hızlı bir şekilde kullanılmasını sağlar.Böylece herangi bir değişiklikte Kullanıcı uygulamalarına haber verilerek sorun yaşanmasının önüne geçilir. Bunun için yapmamız gereken bir configuration dosyası oluşturmak. Projemizin solution explorer kısmından references a sağ tıklayıp add reference diyoruz ve karşımıza çıkan pencereden System.configuration ı reference lerimize ekliyoruz. Bu sayede artık uygulamamıza rahatça konfigürasyon dosyaları ekleyebiliriz.
Şimdi yapmamız gereken solution explorer kısmından projemize sağ tıklayıp add new item diyerek çıkan pencerden Application Configuration File ı bulmak ve eklemek. App.config dosyamızı aşağıdaki gibi düzenleyelim.
Burada yaptığımız işlem aslında bir değişken tanımlamak ve değişkenin değerine connection stringimizi vermek. Bu sayede uygulama içerisinde sadece bağlantı adımızı kullanarak uygulamadan connection string imizi gizlemiş olacağız. Ayrıca değişkenimizin sadece değerinde değişmeler olabileceğinden uygulamamız bundan dolaylı bir şekilde etkilenecektir. Artık yapmamız gereken şey uygulama kodlarımız içinde bağlantı nesnesini oluşturuken connection stringimizi app.config den okutmak olacak. Şu şekilde yapmalıyız.
SqlConnection myCon = new SqlConnection(System.Configuration.
ConfigurationManager.ConnectionStrings["FilmsConnectionString"].ToString());
Oluşturduğumuz nesnenin parametresini konfigürasyon dosyasından string olarak okuduk. Burada ConnectionStrings[] içerisinde connection string imizin ismini vererek çağırdık. Direk bir indeks numarısı da yazabilirdik. App.config içerinde birden fazla connection string imiz olduğunda ConnectionString[1].ToString() gibi bir çağırımla bu işlem gerçekleştirilebilir.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace DBbAĞLANTISI
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/* SqlConnection myCon = new SqlConnection(@"Data Source= .\SQLEXPRESS;
Initial Catalog=FILMS;Integrated Security= True");
*/
SqlConnection myCon = new SqlConnection(System.Configuration.
ConfigurationManager.ConnectionStrings["FilmsConnectionString"].ToString());
private void aç_Click(object sender, EventArgs e)
{
myCon.Open();
if (myCon.State == ConnectionState.Open)
MessageBox.Show("bağlantı açıldı");
}
private void kapat_Click(object sender, EventArgs e)
{
myCon.Close();
if (myCon.State == ConnectionState.Closed)
MessageBox.Show("Bağlantı sonlandırıldı");
}
}
}
mycon.State ; bağlantımızın o anda açık veya kapalı olduğunu tutan boolean bir değerdir.
Böylece c# uygulamamızı sql server daki database e bağlamış olduk.
Her türlü connection string için: http://www.connectionstrings.com/
Etiketler: Ado.net, app.config, C#, Database, sql server, sqlConnection, SQLEXPRESS










Yorumunu yaz..