Anasayfa / Yazılım / ASP.NET / Database Bağlantısı Yapmak

Database Bağlantısı Yapmak

ASP.NET projelerimizi veritabanına nasıl bağlarız? Bu yazımda bundan bahsetmek istiyorum. .NET ortamında örneğin bir SQL server bağlantısı ile bir veritabanına bağlanmam için bir takım gereklilikler bulunmaktadır. Öncelikle bir Connection String yazmam gerekiyor. Nedir bu Connection String denen şey dediğinizi duyar gibiyim. Connection String benim projem için özel durumlara bağlı olarak veri tabanı için bağlantımı sağlayan komut bilgi dizisidir aslında. Bir Connection String yazmam için bir SqlConnection sınıfından bir instance almam gerekiyor. (Instance almak ne demek diyorsanız C# makalelerime göz atın derim.) Tipik bir Connection String kalıbı şu şekildedir :

Server= computer\SqlExpress;Database=databaseAdı;User ID=kullanıcıadı;Password=şifre

Kabaca mantık bu, ama tabi bu baştada belirttiğim gibi özel durumlara göre elbetteki değişecek. Bunlardan bahsedelim şimdi biraz.

Computer dediğimiz kısım bizim veritabanımızın local olarak bulunduğu fiziksel adres aslında. Bu bizim örneklerimiz için SQL Server kurulu makinanın adı, IP numarası gibi isimler olabilir. Hatta local olarak şu anda kullandığınız makine için bu localhost olabilir. Ya da SQL Express kullanıyor olabilirsiniz üstteki gibi. localhost kullanıldığında ismi localhost ya da ‘.’ yazarak belirtilebilir, bu da dipnot..

Daha sonra veritabanı adı verilir. Bu bizim SQL Server’da oluşturduğumuz veri tabanının adıdır. Örneğin NorthWind gibi..

Daha sonra SQL servera bağlantı şeklinizde bir Username ve Password gerekli ise bunları belirtirsiniz. Buraya gelince burda değinmek istediğim durum var. SQL server iki tip oturum açma şekli sunar. Bunlar SQL Server Authentication ve Windows Authentication olarak adlandırılır. Windows Authentication herhangi bir kullanıcı adı ve şifre girilmesine ihtiyaç duymaz. Çünkü ilgili makinede SQL kuruludur. Tabi istenirse girilebilir o ayrı.. Connection String yazarken eğer Windows Authentication ile bağlantı kuracaksam Integrated Security = True deyimini kullanmam gerek.

Server=computer\SqlExpress;Database=databaseadı;Integrated Security=True

Şimdi bir örnekle pekiştirelim ve bir database bağlantısı bir ASP.NET sayfası üzerinden nasıl yapılır göstereyim :

SQL Server’da NorthWnd veritabanına bağlantı yapacağım. Bir Default.aspx sayfam var, bu sayfamın page_load eventinde yazdığım kodlar şu şekilde :

default.aspx.cs dosyası :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = "Server=.;Database=northwnd;Integrated Security = True";
    }
}

İstersem Connection String kısmını instance alırkende yapabilirim.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        SqlConnection conn = new SqlConnection("Server=.;Database=northwnd;Integrated Security = True");
    }
}

namespace alanında System.Data.SqlClient kısmına dikkat ediniz.. Daha önceki ADO makalemde bunu anlatmıştım.

Görüldüğü gibi database bağlantısı yapmak bu kadar kolay..

6 yorum

  1. Mad Max Fury Road

    Çok güzel bir anlatım teşekkürler bilgi için faydalı bir sunum olmuş

  2. güzel anlatım için teşekkürler

  3. Resmen Allah razı olsun 🙂

  4. Çok çok teşekkürler 🙂

  5. Merhabalar,
    conneciton String de integratedSecurity= true yaptığımız zaman ;

    com.microsoft.sqlserver.jdbc.AuthenticationJNI
    WARNING: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path
    com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrated authentication.

    hatasını alıyorum. ( MSSQL SERVER 2012, jdbc: sqljdbc_6.4 , jdk: 1.8 update 171 )

    Bu sorunu iki şekilde düzeltebiliyorum :

    1- integratedSecurity=false yapmak ( uygulamaya zararı nedir )

    2- System32 nin altına sqljdbc_auth.dll i kopyalayınca ( java 32 bitse 32bit verisyonu değilse 64 ) sorun düzeliyor.

    Kullanıcılara bu kopyalama işlemini yaptırtmadan sorunu nasıl halledebiliriz ?

    Teşekkürler

  6. active direktory kullanıcı bilgileri ile localhost a web sitesi yapıp windows kullanıcı bilgileri giriş yapılabilinir mi ?

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir