c# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
c# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

30 Temmuz 2010 Cuma

C#DA RUN-TİME NESNE-KONTROL OLUŞTURMA

Diyelim ki c#da  bir sinema otomasyonu yapmanız gerekiyor.Formu dizayn ederken yapmanız gereken koltukları temsilen herhangi bir kontrol eklemektir.Bir sinema salonu 50 kişilik ve 4 tane de salon varsa toplamda formlarınız için 200 tane kontrol eklemeniz gerekmektedir.Oldukça uğraştırıcı ve zaman kaybettiren bir dizayn işlemi olacaktır sizin için.Programlama bilgisi çok iyi olmayan birinin yapacağı kontrolleri tek tek eklemek olacaktır,oysa ki object oriented programming(nesne yönelimli programlama)  dan ve nimetlerinden haberdar olan programcı ise kontrolleri tek tek eklemez onları kodu çalıştırırken yapabileceğini bilir.Benim bahsedeceğim de 2. seçenek,yani kontrolleri elle, tek tek değil de kod içerisinde oluşturup çalıştırmaktır, yani Run-Time(çalışma anında) nesne oluşturmak olacaktır.
Run-Time kontrol oluşturabilmek için o kontrolden bir nesne yaratmanız gerekecektir.
    Button btn = new Button();  diye tek bir nesne oluşturup döngüler yardımıyla istediğiniz kadar buton görüntüleyebilirsiniz.
Bu konuyla ilgili BilgeAdamda staj yaparken derste yazdığımız  şu  kodu beraber inceleyelim:

int x = 40; //başlangıç x koordinatı

int y = 40;//başlangıç y koordinatı
int b = 1; //yerleştirilen buton numarasının tutar
private void Form3_Load(object sender, EventArgs e) //işlemleri form yüklenirken yapsın
{
for (int i = 0; i < 10; i++)                          //matrix mantığı ile 100 tane buton oluşturacaz
{
        for (int j = 0; j < 10; j++)
{
Button btn = new Button();
                                  //butondan bir nesne oluşturmamız gerekecek
btn.Name = "btnNo" + b;
                           //her birinin adı oluşum sıralarının adını alacaktır
btn.Text = b.ToString();
btn.Size = new Size(40, 40);              //size her defasında 40-40 olacaktır
btn.Left = x;
x += 40;                                //x koordinatı tek bir satır için her defasında 40 yana kaymalı
btn.Top = y;                         //y koordinatı aynı satır aynı kalır alt satıra geçildiğinde 40 artar
b++;                             //butonun numarası her defasında bir artacaktır
btn.Click += new EventHandler(btn_Click);    //hatta isterrsek o butona event bile yazarız
                //butona basılma eventini tutar
                    //event olduğunu += gösterir
                               //bu formun kontrollerine oluşturduğun btn nesnesini eklemen gerek
this.Controls.Add(btn);                  //btn kontrolünün nereye ait olduğunu belirtmeiz gerekir,formun kontrolü
}
x = 40;                     //ilk 10 taneyi oluşturduktan sonra alt satıra geç ama lefti değişmeyecek
y += 40;                    //top üstten bir satır uzaklaştığı için +40 olmalı
}    }
void btn_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
//sender içinde thisin verilerini tutar
MessageBox.Show("Merhaba " + btn.Text + " im..");
} 

işte çıkan sonuç:



Butona tıkladığımızda da şöyle bir görüntü oluşur:


DERYA GÜNDÜZ

26 Temmuz 2010 Pazartesi

ADO.NET'TE CONNECTED DİSCONNECTED MİMARİLER

ADO.NET  teknolojisi ile veritabanından veri çekmenin 2 yolu vardır.
  • Connected Mimari
  • Disconnected Mimari
Connected Mimari:
Bu mimaride veri tabanından veri çekme süresi boyunca uygulama veritabanına bağlı kalır ve bilgiler bağlı kalma süresi boyunca çekilebilir.Veri çekmek için veritabanına sürekli bağlı olması zorunluluğundan dolayı sql server sürekli meşgul olur,bu bir dezavantajdır.Connected ile veri çekebilmek için SqlCommand ile ConnectionString yazılır ve veriler SqlDataReader ile okunur.SqlDataReader ile veriler tek tek okunur,bu da bir dezavantaj sayılabilir.Connected mimarinin güzel yönlerinden bir tanesi sqlden alınan verilerin daima en güncel veriler olmasıdır,yapılan  bütün değişikler direk veritabanına yansıdığı için veri alınacağı zaman da en güncel veriler gelir.Connected yapıda disconnected yapıya göre veriler daha  hızlı çekilir(datareaderden dolayı)

Disconnected Mimari:
Bu mimaride uygulama sqle bağlı olmaz,bağlı olmadan veriler çekilir.Peki nasıl oluyor da bağlı olmadığı halde veritabanından veri çekebiliyor?Uygulamanın veritabanına bağlı olmadan veri çekmesini sağlayan yapı SqlDataAdapterdır.Disconnected mimaride  SqlDataAdapter nesnesi oluşturulur ve bu aracı nesne sayesinde veri tabanından veri çekilir,bütün bağlantılar bunun üzerinden yapılır.Uygulama veritabanına hiç bağlanmadığı için de buna  disconnected yapı denilmiş.Disconnected mimaride bağlantı açılıp kapanmaz,SqlDataAdapter bağlantıyı kendisi açar kapatır.DataAdaptör üzerindeki sql verileri datatable ve datasetlere doldurulur(fill).Böylece sqldeki veriler kullanıma hazırdır.
DataTable---->bellek üzerindeki tablodur
DataSet------>bellek üzerindeki datatablelardır(oluşturulan datatablelar datasete atılır)
Disconnected yapıda uygulama veritabanına bağlı olmadığı için veritabanını meşgul etmek anlamında connected yapıdan daha iyidir.Ama disconnected yapı connected yapıya göre daha eski bilgiyi getirir,veritabanı üzerindeki değişiklikler direk veritabanına yansımadığı için en güncel veriye ulaşamıyor.Databasede yapılan değişikler biz istediğimiz zaman veritababnına yansır.



DERYA GÜNDÜZ

21 Temmuz 2010 Çarşamba

C#'DA SQLDEN VERİ ÇEKME-LİSTVİEW'E YAZDIRMA

Ado.net teknolojisi sayesinde .net applicationdan database ulaşıp orada veri çekebiliyoruz.Bu vereceğim örnekte de C# veri tabanından sql veri tabanına bağlanıp ordaki Northwind veri tabanında bilgi alıp listviewe yazdıracaz.Bu yayınlayacağım örnek kod BilgeAdam'da staj yaparken girdiğim derslerde gördüğümüz örneklerden.

Önce form disaynını yapmalıyız,
-listview eklemeliyiz
-listviewın view propetysini "details" yapmalıyız,
-"edit colonms" seçeneğinden iki kolon ekleyip bu kolanlara "ürün adi" "fiyat"  adlarını vermeliyiz,
-kodlama kısmına geçebiliriz


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;            //sql ile bağlantı kurmak için gerekli kütüphane
namespace AdoConnected1
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
//server=server name   database=database name
//integrated security=true     //windows authenticationda çalışıldığını gösterir

            SqlConnection conn = new SqlConnection("server=DERYA-PC\\SQLEXPRESS;database=Northwind;integrated security=true");
            //komut nesnesi
            SqlCommand cmd = new SqlCommand("select ProductName,UnitPrice from Products",conn);
            SqlDataReader dr;
            conn.Open();
            dr = cmd.ExecuteReader();//komudu çalıştır execute okusun
            string urunAdi;
            decimal fiyat;
            while (dr.Read())
            {
                urunAdi = dr.GetString(0);//0. kolon
                fiyat = dr.GetDecimal(1);//2. kolon
                ListViewItem Ivi = new ListViewItem(); 
                //ListView e ekleme yapmak için itemından nesne oluşturup ona ekliyoruz
                Ivi.Text = urunAdi;     //text ilk kolon
                Ivi.SubItems.Add(fiyat.ToString());  //ondan sonraki bütün kolonlar subitem oluyor
                listView1.Items.Add(Ivi);
            }




        }
    }
}

DERYA GÜNDÜZ

19 Temmuz 2010 Pazartesi

C#'DA OTOMATİK PROPERTY EKLEMEK

BilgeAdam kursunda Çağlar Hoca ile Sql dersinde bugün yeni birşey daha öğrendim,çok kısa ama bence güzel bir ayrıntı,ya da güzellik diyeyim.
C#'da oluşturulan class elemanları için property yazmamız gerektiği zaman,yeni framework ile gelen özelliklerden birtanesi olarak,property'i taslak olarak kısa yoldan ekleyebiliriz.Uzun uzun yazmak yerine kısa yoldan eklemiş oluruz,ya da bazen yapının nasıl olduğunu hatırlamayabiliriz.
string productName
tanımlamasını yaptıktan sonra,productName 'in propertysini yazmamız gerkiyorsa:
--productName  üstünü ters tıkla/refactor/encapsulate field tıklanır

--açılan pencerelerde ok/apply dedikten sonra property otomatik olarak projemize eklenmiş olur
--ilk harf küçük harf ise property adını kendisi büyük harf verir,ilk harf büyükse kendisi ad+1 gibi isimler verir.


DERYA GÜNDÜZ

11 Temmuz 2010 Pazar

STAJ GÜNLERİM.....

                    Yaklaşık 2 hafta önce BilgeAdam'da yazılım departmanında staja başladım.Yoğunluktan yazmaya pek fırsatım olmadı.Haftaiçleri Çağlar Hoca'nın Sql derslerine giriyorum.Okulun bitip stajın başlaması süresi arasında sqle biraz başlamıştım ama sqli kurup servera bağlanana kadar bile çok zorlanmıştım:)Temel sql komutlarına falan bakmıştım biraz,bişeyler öğrendiğimi sanmıştım ama kursa başlayınca aslında pek bişey öğrenmediğimi gördüm,meğer sql ne derinmiş arkadaş:)"select * from"dan ibaret değilmiş.Sql dersleri çok verimli geçiyor benim için,staj bitiminde sql de bayağı yol katedecem sanıyorum.Öğleden sonra da burda ders çalışıyorum ya da Sedat Hoca'nın yapmamı istedikleri olursa onları yapmaya çalışıyorum,araştırmalar ya da rapor falan yazmamı istiyor bazen.Ders çalışırken de takıldığım yerler olursa  hocalara soruyorum,hepsi çok yardımcı oluyor.Haftasonları Şevket Hoca'nın yeni başlayan grubu ile c# derslerine giriyorum.C#pı 1. dönem görmüştük okulda, ben de uğraşmıştım biraz ama unutmuşum gibi ve bilmediğim çokşey varmış.Burda bildiğimi sandığım birçok şeyi bilmediğimi gördüm,eksikler çok,çok çalışmak gerek:)Bir de staj oyunca biraz asp.net  öğrensem süper olacak,çalışmaya başladım,Ali Rıza Hoc^'nın videoları var ordan takip edecem,ne kadar öğrensem kar benim için.

           Burda şunu da gördüm,yazılım işini yapanların çok azı Bilgisayar Mühendisliği'nden mezun,hocalara ve öğrenci arakadaşlara baktığımda çok farklı bölümlerden mezun olduklarını görüyorum  ve bu işi çok iyi yapıyorlar.Yani işimiz zor biraz:)
           Kısacası BilgeAdam günlerim şuan için iyi gidiyor.Her geçen gün bişeyler öğrendiğimi hissedebiliyorum.
          


DERYA GÜNDÜZ

29 Haziran 2010 Salı

SQL C# BAĞLANTISI-C#DAN VERİTABANINA BİLGi EKLEME-SİLME

              Sqlde tablolarımızı oluşturduktan sonra c#da  kodlar yardımıyla veritabanına bilgi ekleme ya da silme işlemlerini gerçekleştirebiliriz.
Bununla ilgili c#da yazılmış örnek kodu inceleyelim:
             Öncelikle projede gerekli form dizaynını yapmalıyız,bir tane datagridview ve gerekli button textbox ve labelları eklememiz gerekir



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;                                 //sql bağlantısı için gerekli kütüphane
namespace Sql_komutları_deneme
{
    public partial class Form1 : Form
    {   //tanımlamaları public yapıyoruz ki hepsi için geçerli olsun
        SqlConnection baglantim;
        SqlDataReader reader;
        SqlCommand komut;
        SqlDataAdapter adaptör;
        DataSet dataset;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

 baglantim = new SqlConnection();    //sql ile bağlantı kurulmasını sağlar
            baglantim.ConnectionString = "Integrated Security=True;  Initial Catalog=csaharptanbaglanma;  Data Source=DERYA-PC\\SQLEXPRESS;";     //database ve serverisimlerinin verilmesi gereken connectionstring
            baglantim.Open();                      //bağlantıyı açmak gerekir

             dataset = new DataSet();
            SqlDataAdapter adaptör = new SqlDataAdapter("select* from  Bilgiler    ", baglantim);   //bağlanılacak tablo belirlendi

            adaptör.Fill(dataset, "Bilgiler");          //dataadapterdaki bilgiler datasete aktarıldı

            dataGridView1.DataSource = dataset.Tables[0];           //tablo datagridviewde görüntüleniyor

            komut = new SqlCommand();
            komut.Connection = baglantim;            //sql cümlelerinin yazıldığı yer


 }

private void button_sil_Click(object sender, EventArgs e)        
                                          //silme  butonu,seçili olan satırın silinmesini sağlıyor
        {


            try
            {

                //komut.CommandText = "delete from Bilgiler where Ad='abc'";     //adı abc olanı siler
                               //seçili olanın silinmesi olayı
                komut.CommandText = "delete from Bilgiler where Id='" + dataGridView1.CurrentRow.Cells["Id"].Value.ToString() + "  '  ";//seçili olanı siliyor
                reader = komut.ExecuteReader();
                reader.Close();
            }
            catch
            {
                MessageBox.Show("secili alan yok!!!!!");                  
            }
            finally
            {
                Form1_Load(sender, e);     //silme işlemini yaptıktan sonra formun güncellenmesini sağlıyor

            }


        }
//textboxlara yazılanların veri tabanına eklenemesini sağlıyor
        private void button_ekle_Click(object sender, EventArgs e)
        {
            try
            {

                komut.CommandText = "insert into Bilgiler values('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "')";
                reader = komut.ExecuteReader();   /

            }
            catch
            {
                MessageBox.Show("ekleme islemi gecersiz!!!bosalan veya farklı id de eleman eklenmeli");
            }
            finally
            {
                Form1_Load(sender, e);     //silme işlemini yaptıktan sonra formun güncellenmesini sağlıyor

            }
        }

    
      
    }
}
  
     Yapmış olduğumuz bütün değişiklikler veritaanına da yansımış oluyor..............




DERYA GÜNDÜZ

12 Nisan 2010 Pazartesi

c#'da hata oluşturup bi yerde çağırmak(catch'de olduğu gib)

bilindiği gibi c#da try-catch olayı vardır;hata olmadığı durumlarda try,hata olduğu zaman  catch çalışır.
peki kendimiz bir hata oluşturmak istersek?????:
  • 1. yol:
//exception sınıfından oluşturulan hata

Exception hata = new Exception("Bu benim hatam");

//oluşan hatayı nesnenin hata mimarisi içine fırlatma.

throw hata;//burda hata verir
//program throw kısmına gelince hata verir ve hata ekranında "bu benim hatam",yazar
  • 2.yol:class kullanarak yapalım
class KendiHatamiz : Exception


{
public KendiHatamiz()

: base("derya'nın hatası")

{}
}
int main()
{
KendiHatamiz kndHata = new KendiHatamiz();

throw kndHata;//burda da hata verir
//throw'a geldiğinde program durur ve hata alanında "derya'nın hatası ",yazar.
}

DERYA GÜNDÜZ

11 Nisan 2010 Pazar

c#da property kavramı

c#da classın içine yazdığımız değişkenler için get ve set değerlerinin beraber kullanıldığı  formatına property deniyor.

class sınıf

{
public int yas;
private string öğrenciadı;

private string ad
{

get { return öğrenciadı; }

set { öğrenciadı = value; }
}
public int Yas
{

get
{return yas;}
set
{if (value >= 0)

yas = value;}
}
{
public void Yaz()
{
Console.WriteLine( öğrenciadı+ "  " + yas);
}
static void Main(string[] args){

sınıf f = new sınıf();

f.yas=22;

f.öğrenciadı="derya";
f.yaz();
}}


OUTPUT
derya 22
  • property tanımlamasında parantez kullanılmaz
  • get bloğu değişkenin değerinin okunması sırasında hangi değerin döndürülecegini belirtir. bu nedenle içerisinde return kullanılmalıdır.
  • set bloğu değişkene değer atanırken çalışacak olan kodu belirtir.
  • value anahtar kelimesi ise değişkene o sırada atanmak istenen değeri temsil eder.
  • get veya set blokları en az biri property içerisinde bulunacak şekilde herhengi bir kombinasyonda kullanılabilirler. ancak belirtilen formatı izlemelidir.
DERYA GÜNDÜZ

1 Ocak 2010 Cuma

DUYURU!!!!!!

ARKADAŞLAR C# KURSUMUZ BU HAFTA12-4 ARASI OLACAKTIR(CUMARTESİ ELEKTRİK LAB).
DUYRULUR.....................
 
Facebook

Bizi takip edin!

ESOGÜ Bilişim GünleriESOGÜ Bilişim Günleri