16 Nisan 2014 Çarşamba

MSSQL Server 2008 R2 Database kopyalamak

Database kopyalamanın birçok yolu var bunlardan birtanesi de MSSQL'in Generate Scriptini kullanarak yapılan kopyalamadır.

♥ 1.Adım

♥ 2.Adım

♥ 3.Adım

♥ 4.Adım

♥ 5.Adım
♥ 6.Adım

♥ 7.Adım

♥ 8.Adım


14 Nisan 2014 Pazartesi

Visual Studio Kısayolları


CTRL+ALT+SPACE tuş kombinasyonu ile otomatik kod tamamlama(İntellisense Auto Select) özelliğini devreye sokabilir veya devre dışı bırakabilirsiniz.

CTRL+E+C seçilen satırları yorum satırı yapar.

CTRL+E+U seçilen satırları yorum satırından çıkartır.

CTRL+M+M İmlecin bulunduğu kod bloğunu açar veya kapatır.

CTRL+M+O Namespace içindeki tüm kod bloglarını kapatır.

CTRL+M+L Namespace içindeki tüm kod bloglarını açar.

CTRL+SHIFT+U Seçili harfleri büyük harfe çevirir.

CTRL+U Seçili harfleri küçük harfe çevirir.

CTRL+K+D Tüm kodları kod düzenine getirir.

SHIFT+ALT+T İmlecin bulunduğu satır ile bir alt satırın yerini değiştirir.

F9 İmlecin bulunduğu satıra breakpoint koyar.

F10 Debug modda satır satır izlememizi sağlar

F11 debug modda metodların içerisine girerek izlememizi sağlar

CTRL+D,Q Debug modda seçili değişkenin veya kontrolün değerini izlemek için QuickWatch penceresini açar.

8 Nisan 2014 Salı

Delegate ve Event Kullanımı

Delegate(Temsilci) Nedir?

Temsilciler bir veya birden çok metodu gösteren referans türünden nesnelerdir. 

Delegate kullanımı 3 aşamada gerçekleşir
1.Tanımlama
2.Örnekleme (Instance)
3.Çağırma

Örnek
class Program
    {
       public delegate void islemler(int x, int y);

        static void Main(string[] args)
        {
            islemler operation = new islemler(Carp);
            operation += new islemler(Topla);
            operation(5, 3);
            Console.ReadLine();  
        }


        static void Carp(int x, int y)
        {
            Console.WriteLine("Çarpma sonucu : {0} ", x * y);
        }

        static void Topla(int x, int y)
        {
            Console.WriteLine("Toplama sonucu : {0} ", x + y);
        }

    }


1.Tanımlama


<Erişim Belirleyicisi> delegate <Dönüş Tipi> Delege_İsmi(parametreler);

public delegate void islemler(int x,int y);

2. Örnekleme


islemler operation = new islemler(Carp);
operation += new islemler(Topla);


buradaki Carp ve Topla birer metoddur ve oluşturduğumuz temsilcimizin imzasına uygundur. Yani int tipinde 2 tane parametre alır ve geriye hiç bir değer döndürmezler.

bir temsilciye birden fazla delegate tanımlarsak işleniş sırası FIFO (İlk giren ilk çıkar) mantığında olur. Yani burda ilk olarak Carp metodu ve ardından Topla metodu çalışacaktır.

bir temsilciye  += operatörü ile metod atayabileceğimiz gibi -= operatörü ile de atadığımız metodu çıkarabiliriz.

3.Çağırma


operation(5, 3);

Delegate üzerinden fonksiyonları çağırdığımız zaman delaget ’in Invoke() metodunu çağırmış oluruz.
Yani “operation(5,3)” ifadesi, “operation.Invoke(5,3)” metodunu çalıştırır.

Invoke ; çalışma sırasında nesnelere erişimi sağlamak ve değişiklik yapmak için nesnenin hafızada bir kopyası oluşturulur, değişiklik yapılır ve eskisi ile değiştirilir.


Event(Olay) Nedir?

Olayları görsel programlamada farkında olmadan kullanırız. Örneğin Butona tıklanması, Klavyeden bir tuşa basılması, Mouse'u hareket ettirmek vs. bunların hepsi birer olaydır.

Temsilciye tanımladığımız metodları çalıştırmak için temsilciyi açık bir şekilde başlatmamız gerekir. Yukarıdaki örnekteki operation(5, 3) de olduğu gibi. Ancak bazı durumlarda biz başlatmasak da metodun kendiliğinden çalışmasını isteyebiliriz. Mesela stok takip programında bir ürünün miktarının belli bir limitin altına düştüğünde. İşte bu gibi durumlarda Event kullanmamız gerekir. Şimdi bir örnek üzerinden açıklayalım. Örneğimizde 1000 lt su kapasitesi olan bir su deposu taştığında Ekrana "Depo Taştı" yazısını yazmak istiyoruz.

class Program
    {
        public delegate void depoEventHandler();
        public static event depoEventHandler depoEvent;

        public class Depo
        {

            private int suseviyesi = 0;

            public int SuSeviyesi
            {
                get { return suseviyesi; }
                set
                {
                    suseviyesi = value;
                    if (suseviyesi > 1000 && depoEvent != null)
                        depoEvent();
                }
            }
        }

        static void Main(string[] args)
        {
            depoEvent += new depoEventHandler(Doldu);

            for (int i = 0; i < 1250; i += 200)
            {
                Depo t = new Depo();
                t.SuSeviyesi = i;
                Console.WriteLine("{0}", i);
                Thread.Sleep(1000);
            }

        }

        static void Doldu()
        {
            Console.WriteLine("Depo Taştı");
        }

    }

1. Adım=> Temsilcimizi tanımlıyoruz.

public delegate void depoEventHandler();

Olayla bağlantıda bulunacak delegatetin ismine dikkat ederseniz EventHandler yazdık. Bu kural olmamakla beraber programcılıkta standart bir yazım şeklidir. Bu yazıma uymasanız hata almazsınız ama programlamada belirli bir standartı yakalamak istiyorsanız bu şekilde kullanmanızı tavsiye ederim.

2.Adım=> Olayımızı tanımlıyoruz

 public static event depoEventHandler depoEvent;

Olay tanımlarken olay isminden önce temsilcimizi yazıyoruz. Böylece olay gerçekleştiğinde çalıştırılması gereken metod yapısını oluşturduğumuz depoEventHandler isimli temsilcimizin belirleyecektir.

3.Adım=>Olayımızı tetikliyoruz.

        public class Depo
        {

            private int suseviyesi = 0;

            public int SuSeviyesi
            {
                get { return suseviyesi; }
                set
                {
                    suseviyesi = value;
                    if (suseviyesi > 1000 && depoEvent != null)
                        depoEvent();
                }
            }
        }
Depodaki su seviyesini belirten bir propertimiz var ve bu propertimizin (SuSeviyesi) her değiştiğinde değerin 1000 i geçip geçmediğini kontrol ediyoruz. burdaki if in içeriğindeki depoEvent != null ifadesi olayımıza bir metod atanıp atanmadığını kontrol ediyor. Eğer su seviyesi 1000 lt den büyükse işte o zaman olayımız gerçekleşmiş demektir ve olayın belirttiği metod çalışacaktır.

4.Adım => Olayın yüklenmesi

 depoEvent += new depoEventHandler(Doldu);

Sonuc:


1 Nisan 2014 Salı

Telnet Client'ı aktive etmek


telnet is not recognized as an internal or external command operable program or batch file  hatası alıyorsanız Telnet Client’ı aktive etmemiş olabilirsiniz. Telnet Client'ı aktive etmek için aşağıdaki adımları uygulayınız.




26 Mart 2014 Çarşamba

SQL Server Sınırsız Kategori ve ASP.NET TreeView ile Kullanımı

Merhabalar,

SQL Server da sınırsız kategorinin tablo yapısı ve sorgulaması nasıl olur, asp.net de TreeView ile nasıl kullanılır sizlerle paylaşacağım.

1. Sınırsız Kategori Görünümü

2. Tablo Yapısı



 

ID değerimiz Primary Key olmalı ve Column Properties Ayarlarında Identity Specification açık olmalıdır. Bu her kayıt girdiğimizde ID değerimizi otomatik olarak increment değeri kadar arttırır ve IDENTITY olarak tanımlanan bir sütun otomatik artışla değer aldığı için hiç bir zaman null olamaz.



Tablo alanlarımız yukarıdaki gibi olmalı. 
ParentID : Kategorimizin bağlanacağı Üst Kategori ID' sidir, eğer 0 ise ana kategoridir. 

Tablo Değerlerimi aşağıdaki gibi verdim



3.SQL Server Sorgulaması

► Tüm Kategorilerin Getirilmesi
Select * from TblKategori

► Bir alt kategorinin getirilmesi (Ör; Marmaradaki şehirler)

Select * from TblKategori where ParentID=2
 

► Bir kategoriye ait alt kategorilerin tümü (Marmara'nın altındaki bütün kategoriler)



with cte
as
(
select ID,KategoriAdi,ParentID, 0 AS level , ID as Visited
from TblKategori
where ParentID =2
union all
select TblKategori.ID,TblKategori.KategoriAdi,TblKategori.ParentID, level +1 ,
cte.ParentID
from TblKategori inner join cte
on TblKategori.ParentID=cte.ID
where  Visited NOT LIKE ('%<'+convert(varchar(3),TblKategori.ParentID)+'>%')
)
select * from cte D1



4.  Asp.net de TreeView ile Kullanımı

► 1.Adım Asp.Net Projesi oluşturuyoruz





























►2.Adım  Veritabanımızın bağlantı bilgilerini web config dosyasına ekliyoruz.






<connectionStrings>
    <add name="conn" connectionString="Data Source=192.168.0.3;initial catalog=DBKategori;uid=**;pwd=****;"
     providerName="System.Data.SqlClient" />
  </connectionStrings>
 ► 3.Adım Default.aspx sayfasına TreeView kontrolümüzü ekliyoruz 




   <asp:TreeView ID="TreeView1" runat="server" ImageSet="Arrows" OnSelectedNodeChanged="TreeView1_SelectedNodeChanged">
                <HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
                <Nodes>
                    <asp:TreeNode Text="Kategoriler" Value="0"></asp:TreeNode>
                </Nodes>
                <NodeStyle Font-Names="verdana" Font-Size="11pt" ForeColor="Black" HorizontalPadding="2px"
                    NodeSpacing="0px" VerticalPadding="0px" />
                <ParentNodeStyle Font-Bold="False" />
                <SelectedNodeStyle Font-Underline="False" ForeColor="#00cc66" HorizontalPadding="5px" VerticalPadding="0px" />
            </asp:TreeView>
  ► 4.Adım Default.cs sayfasına kodlarımızı ekliyoruz









































namespace SinirsizKategori
{
    public partial class Default : System.Web.UI.Page
    {
        private SqlConnection baglanti;
        private SqlDataAdapter komut;
        DataTable dt;
     
        protected void Page_Load(object sender, EventArgs e)
        {
            baglanti = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString);
            komut = new SqlDataAdapter();
            string _query = string.Format("select * from TblKategori");
            SqlCommand sorgu = new SqlCommand();
            DataSet ds = new DataSet();
            try
            {
                if (baglanti.State == ConnectionState.Closed || baglanti.State == ConnectionState.Broken)
                    baglanti.Open();
                sorgu.Connection = baglanti;
                sorgu.CommandText = _query;
                sorgu.ExecuteNonQuery();
                komut.SelectCommand = sorgu;
                komut.Fill(ds);
                dt = ds.Tables[0];
            }
            catch { }
            populateData(TreeView1.Nodes[0], getrows("0"));
        }
        DataRowCollection getrows(string id)
        {
            DataView dw = new DataView(dt);
            dw.RowFilter = "ParentID=" + id;
            return dw.ToTable().Rows;
        }
        void populateData(TreeNode node, DataRowCollection col)
        {
            foreach (DataRow row in col)
            {
                TreeNode n = new TreeNode();
                n.Text = row[1].ToString();
                n.Value = row[0].ToString();
                node.ChildNodes.Add(n);
                populateData(n, getrows(row[0].ToString()));
            }
        }
    }
}

► Ve Projemizi Çalıştırıyoruz