Makale Özeti

Bu makalemizde geliştirdiğimiz uygulamamızın kurulumundan önce SQL Server üzerinde veritabanımızı kurmayı öğreneceğiz

Makale

INSTALLER CLASS

Bu makalemizde geliştirdiğimiz uygulamamızın kurulumundan önce SQL Server üzerinde veritabanımızı kurmayı öğreneceğiz.

Bu uygulamamızda başrol oynayacak olan Installer Class sınıfları sayesinde yükleme esnasında araya girip müdahale edebileceğiz . Kurulum sırasında veritabanının otomatik olarak kurulması herkes için önemlidir.  Kurulum işleminde Araya girecek bir Class Library oluşturarak Bu sorunu çözeceğiz.

Form Ekranı’ndan

1-      Server Bilgileri

2-      Kullanıcı Adi

3-      Şifre    

Alarak Veritabanımızı oluşturuyoruz.

Veritabanımızın kodları aşağıdaki gibidir ;

USE [master] GO CREATE TABLE CREATE DATABASE [Ornek] ON  PRIMARY ( NAME = N'Ornek', FILENAME = N'C:\\DB\\ Ornek.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = N'Ornek_log', FILENAME = N'C:\\DB\\ Ornek_1.ldf' , SIZE = 1536KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)"

 

Olusturmus oldugumuz veritabanına tablolarımızı oluşturacağız.  Ilk Olarak Ogrencı Tablosunu Olusturalım

 

Tablonun Column’ları ;

 OgrenciId DataType’i int Ve Not Null(Bos Gecılemez)

OgrenciAdi DataType nvarchar(50) ve Not Null

OgrenciSoyadi DataType nvarchar(50) ve Not Null

 

 

·         Ogrenci Tablosu

 

USE [Ornek] GO CREATE TABLE [dbo].[Ogrenci]( [OgrenciId] [int] IDENTITY(1,1) NOT NULL, [OgrenciAdi] [nvarchar](50) NOT NULL, [OgrenciSoyadi] [nvarchar](50) NOT NULL, CONSTRAINT [PK_Ogrenci] PRIMARY KEY CLUSTERED ( [OgrenciId] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO

 

 

Öğrenci tablomuz oluşturuldu şimdi ise Dersler Tablosunu oluşturuyoruz.

Tablonun Column’ları ;

 

DersId DataType nvarchar(50) ve Not Null

DersAdi DataType nvarchar(50) ve Not Null

DersSaati DataType nvarchar(50) ve Not Null

 

·         Dersler Tablosu

 

USE [Ornek] GO CREATE TABLE [dbo].[Dersler]( [DersId] [int] IDENTITY(1,1) NOT NULL, [DersAdi] [nvarchar](50) NOT NULL, [DersSaati] [int] NOT NULL, CONSTRAINT [PK_ Dersler] PRIMARY KEY CLUSTERED ([DersId] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO

Veritabanımızı ve kullanacağımız tabloları oluşturduktan sonra Visual Studio’dan InstallerClass adında yeni bir “Windows Application” uygulaması açıyoruz.

 

 

 

Uygulamamızda buttona basılınca textbox ‘ daki değer listbox’a ekleniyor.Bunun için formumuza aşağıdaki gibi 1 textbox , 1 listbox ve 1 button ekliyoruz.

 

 

Ekle buttonunun Click Events’ine aşağıdaki kodu yazalım ;

 

Listbox1.Items.Add(textBox1.Text)

 

 

Projemizi tamamladıktan sonra başka bir bilgisayar a yüklenebilmesi için  

 

File menüsünden “Add Project”  “Setup Project” seçip adını “InstallerClassSetup” verelim.

 

 

Şimdi de projemizin setup’ını oluşturuyoruz.

 

 

 

 

 “Primary Output”  buttonuna bastığımızda programımızın çıktısını setup projemize Eklemiş oluyoruz. Buradaki amacımız projemizin yüklenmesini sağlamaktır.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Projemize Veritabanımızı kuracak olan “Class Library” projemizi eklemek için adına “Installerlib” yazıp “OK” button’una basıyoruz .

 

 

 

Class Library projemize System.Windows.Forms Namespace’ini referans veriyoruz.

Daha sonra aşağıdaki gibi bir form ekliyoruz  

Kaydet Ve Kurulumu Yap buttonunun kodlarını yazmaya başlamadan önce eğer 

“Windows Authentication Kullan” CheckBox’ı İşaretli Olursa KullanıcıAdı Ve Şifre Textboxlarını Enable=False yapmamız gerekecektir çünkü Trusted_Connection bu işlemde bizim işimize yarayacak.

Kaydet ve Kurulumu Yap butonumuzun Click_Events kodları aşağıdaki gibidir ;

string conStr = "server=" + comboBox1.Text + ";"; //server’a Baglanmamız Icın Gereklı Olan Kod

              

 if (checkBox1.Checked)  

 {

 conStr += "trusted_connection=true;";

   //Burda Ise Dedıgımız Gıbı Eger Wındows Authentication Kullanıcaksak KullanıcıAdı Ve Şifreye Ihtıyacımız Yok

 }

 else

 {

 conStr += "uid=" + textBox1.Text + ";pwd=" + textBox2.Text;

   //Burdada  Eger Wındows Authentication Kullanmıcaksak KullanıcıAdı Ve Şifreyi Alarak Devam Ediyoruz

 }

 

 SqlConnection cn = new SqlConnection(conStr);  //Bir SqlConnection instance’i Cikariyoruz Yani Bir Baglantı Tanımlıyoruz 

 

 

 if (Directory.Exists("C:\\DB")==false)

 {

 Directory.CreateDirectory("C:\\DB");

 }

 

 SqlCommand cmd = new SqlCommand();

 cmd.Connection = cn;

 cmd.CommandText = "USE [master] GO CREATE TABLE CREATE DATABASE [Ornek] ON  PRIMARY ( NAME = N'Ornek', FILENAME = N'C:\\DB\\Ornek.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = N'Ornek_log', FILENAME = N'C:\\DB\\ Ornek_1.ldf' , SIZE = 1536KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)"   

 

// Burda Az Önce Yukarıda Oluşturdugumuz Database Kodunu Aynen Yazabiliriz.

 

//Baglantiyi Açiyoruz,Command’ımıza Calıs Komutunu Gonderip,Alt Satırda Baglantımızı Kapatiyoruz Boylece Database’imiz Olusturmus Oluyoruz.Şimdi Veritabanımızı ekledikden sonra tablolarımızı oluşturuyoruz.

 

 cn.Open();  

 cmd.ExecuteNonQuery();    

 cn.Close();

 

 cn.ConnectionString += ";database=Ornek;"; /

 

//Dikkat Burda Connection’umuzun ConnectionString’ine “+=” Diyoruz ve Şimdi Tablo Olusturcağimiz için Yukarıda Oluşturdugumuz veritabanına öğrenci tablosunu ekliyoruz.

 

 

 cmd.CommandText = USE [Ornek] GO CREATE TABLE [dbo].[Ogrenci](   [OgrenciId] [int] IDENTITY(1,1) NOT NULL, [OgrenciAdi] [nvarchar](50)  NOT NULL, [OgrenciSoyadi] [nvarchar](50) NOT NULL, CONSTRAINT [PK_Ogrenci] PRIMARY KEY CLUSTERED ( [OgrenciId] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO “

 

 cn.Open();

 cmd.ExecuteNonQuery();

 cn.Close();

 

//Ogrenci Tablomuz’u ekledik.Şimdi ise aynı işlemleri Dersler Tablomuzu eklemek için tekrarlıyoruz.

 

cn.ConnectionString += ";database=Ornek;";

cmd.CommandText = " USE [Ornek] GO CREATE TABLE [dbo].[Dersler]([DersId] [int] IDENTITY(1,1) NOT NULL, [DersAdi] [nvarchar](50) NOT NULL,[DersSaati] [int] NOT NULL, CONSTRAINT [PK_ Dersler] PRIMARY            KEY CLUSTERED ([DersId] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO “  

 

 cn.Open();

 cmd.ExecuteNonQuery();

 cn.Close();

 this.Close(); 

//Dersler Tablomuzu da oluşturduk   “This.Close” Diyerek Yuklemeden Sonra Form’umuzun Kapanmasını Sağlıyoruz

Son olarak “Class Library” projemize sag tıklayip Add buttonundan New Item’i seciyoruz ve karşimiza gelen ekrandan projemize bir adet kurucu adında “Installer Class” ekliyoruz.

System.Configuration.Install Namespace’ini referans Veriyoruz ve böylece System.Configuration.Install.Installer sınıfını kullanabilir hale geliyoruz.Bu “Installer Class” içindeki  kodlarda

frmBilgi = “InstallerLib” Icındekı Formumuz ..

 

Yükleme esnasında formumuzun ekrana gelmesini sağlamak için ;

Yukarıda referans olarak verdiğimiz  “System.Configuration.Install” sınıfı Bize Setup projelerinde

  • Install
  • Commit
  • Rollback
  • Uninstall

Aşamalarında istediğimiz her türlü işlemi yapabilmemizi sağlamaktadır.

Class Library projesinde yapılması gereken en son adım Class’a RunInstaller Attribute bildirme işlemidir.

 

Şimdi yükleme esnasında “Class Library” projemizin ekrana gelmesi için ;

 

Setup projemizden “Actions Editör” ‘e geliyoruz

 

 

Sonra karsımıza gelen ekrandan “Install” aşamasına sağ tıklayarak “Add Custom Actions” ‘a tıklıyoruz 

 

 

Karsımıza gelen ekrandan “Class Library” projemizi seçiyoruz.

 

 

Böylece yükleme esnasında projemiz ekrana gelecek ve girilen bilgilere göre yüklenmeye devam edecektir.

 

 

Not : Bu işlemleri yaptıktan sonra setup projemizi “REBUİLT” etmeyi unutmuyoruz.

Projemizi oluşturduktan sonra Deneme İşleminizi Setup projenizden sağ tıklayıp “Install” dedikten sonra yapabilirsiniz.

 

 

 

 

 

Kaan Bahşi

 

Kaan.Bahsi@hotmail.com

 

Microsoft Certified Professional