-

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

Ankara’da bir yaz………………….

          Stajımı Ankara’da yapmam dolasıyla dün  Eskişehir’den ayrıldım,Eskişehir’den,  ordaki evimden,ev arkadaşımdan ayrılmam çok zor oldu:(    Bu yaz Ankara’dayım   yazı Çileğimle(yani Çilem ile) aynı evde geçirecem.Çok verimli ve eğlenceli bir yaz geçirmeyi diliyorum. Memlekete ,Mardin’e gidemeyince ailem Ankara’ya gelecek,onları da çok özledim,onlarla  da biraz zaman geçirme fırsatı bulacam,sonra da uzaklara……………….  Erasmus için Litvanya’ya gidecem.Gideceğim için çok mutluyum ama geride bıraktıklarımı çok özleyecem………………

DERYA GÜNDÜZ

BİLGEADAM’DA STAJ

Konya- Bilgisayar Mühendisleri Kongresi(BİLMÖK)   de BilgeAdam oturumu da vardı.Orada Sedat Salman Hocam ve BilgeAdam Pazarlama Sorumlusu Sercan Tabur ile tanışmıştım,BilgeAdam’da staj yapmak istediğimi söylemiştim.Daha sonra Ankara’ya gelip Cv mi verdim,  Cv mi İstanbul’daki Genel Müdürlüğe gönderdiler ve staj başvurum kabul oldu..Yrn staja başlıyorum ve biraz heyecanlıyım,eminim BilgeAdam ailesinden  öğrenceğim çok şey vardır,çok verimli olmasını diliyorum…………..
Stajda yaptıklarımı ve öğrendiklerimi blogumda paylaşacam…………….
DERYA GÜNDÜZ

BİLYAZ.COM ‘da yönetici oldum:):)

Arkadaşlar bildiğiniz üzere    bilyaz.com    adlı paylaşım sitesinde programlama  ile ilgili makaleler yazıyorum.
Bundan 3 4 ay önce  internette gezinirken bu siteyi görmüştüm.Bizim okuldan bikaç arkadaşın adını da yazar listesinde görünce  çok hoşuma gitmişti ben de böyle bir şey yapabilirim diye düşündüm.Sitede “editör ol”  diye bir seçenek vardı şansımı denemek istedim. Ben de sitenizde yazmak istiyorum diye mail attım.Hemen geri dönüşte bulundular, yöneticisi ile msn de konuştum bana çok sıcak davrandı ve  beni yazar olarak eklediğini söyledi çok mutlu oldum.Sisteme girip yazı ekleyebilmem için de  bana kullanıcı adı ve şifre verdi.Çok heyecanlandım birkaç gün sonra ilk yazımı gönderdim,yazdığım yazının  böyle bir sitede yayınlanmış olması okadar hoşuma gitti ki…  Bu dönem boyunca  elimden geldiği kadar paylaşımda bulunmaya çalıştım.Okulda gördüğümüz  programlama  dillerine paralel programlama ile ilgili makaleler örnek kodlar yayınladım.Buarada sitenin kurucusu Tahir Mutlu ile  sürekli iletişim içinde  oldum,kendisi   bana sürekli yardımcı oldu.

Bugün bana mail atmış Tahir Mutlu, paylaşımlarım ve çabam için beni tebrik ettiğini yazmış ve beni yönetici listesine eklediğini söylemiş.Çok mutlu oldum böyle güzel ve büyük bir sitede  yönetici olmak beni çok onurlandırdı.Artık yazar ekleme, yazıları güncelleme, yorumları kontrol etme gibi haklarada sahip olacakmışım..
Son zamanlarda aldığım en güzel haberlerden,çok teşekkür ederim Tahir Hocam,herşey için…………………………………..
Siteyi görüntülemek için      tıklayın.

DERYA GÜNDÜZ

PIC 16F877A DA YANAN LEDİN SAĞA SOLA HARAKET ETMESİ-RLF RRF KULLANIMI

Pic 16f877a da ledin yanması demek  kullanılan  potrun ilgili  bitinin “1″ olması demektir.Yanan bir  ledin sağa sola hareket etmesini sağlayan özel komutlar  vardır:

rlf :   Açılımı “rotate left file”,içeriği sola kaydırmaya yarar.Örneğin portun içinde b’01000000′  ise  rlf komutu bir kere uygulandığında b’10000000′   şeklinde olur.

rrf:   Açılımı “rotate right  file”,içeriği sağa kaydırmaya yarar.Örneğin portun içinde b’01000000′  ise  rrf komutu bir kere uygulandığında b’00100000′   şeklinde olur. 


           portun içeriğini sağa  sonra sola kaydıran örnek kodu inceleyelim:
Bu kodda    PORTB nin içine en başta b’00000001′  sayısı  yerleştiriliyor,içerik 7. bit 1 olana kadar her defasında  bir bit sola kaydırılıyor, çünkü 7. bit  1 olduğunda sola kayacak yer klamıyor,bu kontrolden sonra  sağa kaymalar başlayacaktır.Bu aşamada da içerik0. bit 1 olana kadar  her defasında bir bit olmak üzere sağa kaydırılıyor ,0. bit  1 olduğunda yine sola kayma olacaktır.
SAYAC1 EQU h’0C’   ;gecikme sayacları için adresler belirtiliyor

SAYAC2 EQU h’0D’

CLRF PORTB      ;potrbnin içi en başta temizleniyor
BSF STATUS,5             ;bank1 tris registerlarının ayarlanması için seçildi

CLRF TRISB             ;portb çıkış portu yapıldı

BCF STATUS,5                  ;port içeriği ile ilgili işlem yapılması için tekrar bank0 a geçildi
MOVLW h’01’
MOVWF PORTB            ;portb nin içine b’00000001′  sayısı atıldı
SOL:

CALL GECIKME;en başta bi bekleme anı oluyor

RLF PORTB,F               ;içerik 1 birim sola kaydı

BTFSS PORTB,7            ;portbnnin 7. biti kontrol ediliyor,
1 ise sağa kaydırma başlayacak 1 değilse tekrar  sola kayma olacaktır

GOTO SOL

SAG:

CALL GECIKME                    ;bekleme yapılıyor

RRF PORTB,F                     ;içerik 1 birim sağa kaydırılıyor

BTFSS PORTB,0                  ;portbnin 0. biti kontrol ediliyor 1 ise sola kaymaya geçilecek,0 ise sağa ;kaymaya devam

GOTO SAG

GOTO SOL

GECIKME:

MOVLW h’FF’

MOVWF SAYAC1           ;gecikme için sayac1 in içine h’FF’  sayısı atılıyor

DONGU1:

MOVLW h’FF’

MOVWF SAYAC2                 ;gecikme için sayac1 in içine h’FF’  sayısı atılıyor

DONGU2:

DECFSZ SAYAC2,F

GOTO DONGU2           ;sayac2 nin içindeki sayı 0 olana  kadar her defasında 1 azalt,0 olunca saya1 i      ;                                       ;azaltmaya git

DECFSZ SAYAC1,F        ;sayac1in içi 0 olana kadar her defasında 1 azalt,0 olduğunda return yap

GOTO DONGU1

RETURN            ;en son callın yapıldığı adrese  gider

END        ;programo bitir

   

DERYA GÜNDÜZ

PIC 16F877A DA YANAN LEDİN SAĞA SOLA HARAKET ETMESİ-RLF RRF KULLANIMI

Pic 16f877a da ledin yanması demek  kullanılan  potrun ilgili  bitinin “1″ olması demektir.Yanan bir  ledin sağa sola hareket etmesini sağlayan özel komutlar  vardır:

rlf :   Açılımı “rotate left file”,içeriği sola kaydırmaya yarar.Örneğin portun içinde b’01000000′  ise  rlf komutu bir kere uygulandığında b’10000000′   şeklinde olur.

rrf:   Açılımı “rotate right  file”,içeriği sağa kaydırmaya yarar.Örneğin portun içinde b’01000000′  ise  rrf komutu bir kere uygulandığında b’00100000′   şeklinde olur. 


           portun içeriğini sağa  sonra sola kaydıran örnek kodu inceleyelim:
Bu kodda    PORTB nin içine en başta b’00000001′  sayısı  yerleştiriliyor,içerik 7. bit 1 olana kadar her defasında  bir bit sola kaydırılıyor, çünkü 7. bit  1 olduğunda sola kayacak yer klamıyor,bu kontrolden sonra  sağa kaymalar başlayacaktır.Bu aşamada da içerik0. bit 1 olana kadar  her defasında bir bit olmak üzere sağa kaydırılıyor ,0. bit  1 olduğunda yine sola kayma olacaktır.
SAYAC1 EQU h’0C’
SAYAC2 EQU h’0D’

CLRF PORTB      ;potrbnin içi en başta temizleniyor
BSF STATUS,5             ;bank1 tris registerlarının ayarlanması için seçildi

CLRF TRISB             ;portb çıkış portu yapıldı

BCF STATUS,5                  ;port içeriği ile ilgili işlem yapılması için tekrar bank0 a geçildi
MOVLW h’01’
MOVWF PORTB            ;portb nin içine b’00000001′  sayısı atıldı
SOL:

CALL GECIKME;en başta bi bekleme anı oluyor
RLF PORTB,F               ;içerik 1 birim sola kaydı
BTFSS PORTB,7            ;portbnnin 7. biti kontrol ediliyor,1 ise sağa kaydırma başlayacak 1 değilse tekrar                                                                                                          ;sola kayma

GOTO SOL

SAG:

CALL GECIKME                    ;bekleme yapılıyor
RRF PORTB,F                     ;içerik 1 birim sağa kaydırılıyor
BTFSS PORTB,0                  ;portbnin 0. biti kontrol ediliyor 1 ise sola kaymaya geçilecek,0 ise sağa ;kaymaya devam

GOTO SAG
GOTO SOL

GECIKME:

MOVLW h’FF’
MOVWF SAYAC1           ;gecikme için sayac1 in içine h’FF’  sayısı atılıyor

DONGU1:

MOVLW h’FF’
MOVWF SAYAC2                 ;gecikme için sayac1 in içine h’FF’  sayısı atılıyor

DONGU2:

DECFSZ SAYAC2,F
GOTO DONGU2           ;sayac2 nin içindeki sayı 0 olana  kadar her defasında 1 azalt,0 olunca saya1 i      ;                                       ;azaltmaya git

DECFSZ SAYAC1,F        ;sayac1in içi 0 olana kadar her defasında 1 azalt,0 olduğunda return yap
GOTO DONGU1

RETURN            ;en son callın yapıldığı adrese  gider

END        ;programo bitir

   

DERYA GÜNDÜZ

C++ da Function Template-Class Template

  Templatein kelime anlamı taslaktır,c++ daki  kullanım şekli de kelime anlamına çok yakın bir kullanımdır. Fonksiyonu taslak olarak yazıyorsunuz ve  bu  fonksiyon farklı kullanım şekilleri  için esnek bir yapıya  sahip oluyor.

          C++ daki Function Template için  farklı tiplerde  kullanım esnekliği vardır.Bir  fonksiyonu farklı farklı tipler için ayrı ayrı yazmak yerine,tek bir  fonksiyon taslağı yazıp  bunu farklı tipler için kullanabilirsiniz.
          örneğin bir mutlak değer  fonksiyonun int veri tipi için şu şekilde yazarız:
        int mutlakdeger(int a){
      if(a<0)    return a;
       else return -a;
        }
      double veri  tipi için olanını şu şekilde yazarız:
        double  mutlakdeger(double  a){
      if(a<0)    return a;
       else return -a;
        }
     long olan için ;
            long  mutlakdeger(long  a){
      if(a<0)    return a;
       else return -a;
        }
               yani bütün tipler için ayrı ayrı yazardık.Bunu  taslak şeklinde yazıp  bütün veri tipleri için kullanabilmek istediğimiz   zaman yapmamız gereken şey fonksiyonu template  şeklinde tanımlamak.

  Template kulllanımı şu şekilde: 


template            //fonksiyonun başına yazılması gereken
T mulakdeger (T a)                    //yukarda tanımladığımız template Tyi  veri tipi olarak  kullandık

{

 if(a<0)    return a;
       else return -a;

}
int  main(){
cout<<”int veri tipi için mutlak deger alma”<
cout<<”double veri tipi için mutlak deger alma”<
}
bu şekilde kullanarak her veri tipi için ayrı yazma  gerekliliğinden kurtuluruz,kodlar kısalır fazla zaman  harcamak zorunda kalmayız.

 Template çeşitleri:

  •  template     //fonksiyonlar için kullanılır
  •  template                //classı template şekilde kullanabilmek için,daha çok data                storage classlarda(container)  kullanılır
  •  template       //birden fazla  tip tanımlayabiliriz
       Class Template:
            templateler ayrıca classlar için de kullanılabilir,işlev olarak  functşon template gibidir
           template
class  deneme{
                    //  classın diğer  elemanlarının prototypeları  yazılır
……………
       public int  denemefonk(T  ){}
………..
            };
            implementasyonlar:
         template
          deneme::denemefonk(T  a){………..}
           int main(){
         denemenesne;
          ………..
       }
  şeklinde kullanılır…………

DERYA GÜNDÜZ

pic 16f877a portlar ve port seçimleri

portlar nedir ne işe yarar?

portlar,microcontroller ile bileşenleri arasındaki bağlantının kurulmasını sağlar.

pic 16f877a da  5 tane  port vardır:

  • PORT A
  • PORT B
  • PORT C
  • PORT D
  • PORT E
 portların giriş çıkış  portları olması
portlar  kullanılacakları konuma  göre bazen çıkış portu bazen de giriş portu olmalıdır.portun  giriş ya da  çıkış portu olmasını yada  bazı bitlerinin  giriş bazı  bitlerinin çıkış olmasını  TRIS adındaki  özel bir register sağlar.
hangi port için çalışacaksak trisx  deyip bitlerini  değiştiririz.
0——>çıkış
1——>giriş
    clrf    TRISB            ;b  portunun bütün bitlerini çıkış yapar
   movlw  h’ff’
   movwf  TRISA         ;a  portunun  bütün bitlerini  giriş yapar
ya da  bazı bitleri girş  bazılarını çıkış da  yapabiliriz:
     movllw  b’00001111′
    movwf     TRISD        ;d  portunun ilk 4  bitini giriş,son 4 bitini çıkış yaptık
porta yazma porttan okuma:
clrf          TRISB           ;önce  b  portunun bütün bitlerini çıkış olarak ayarlıyoruz
movlw     0×55
movwf      PORTB         ;portb nin içine  55 hex  yazdık
  movlw  h’ff”
movwf    TRISA       ;a  portunu okuma yapmak için giriş portu yaptık
movf  PORTA,w
movwf   myreg          ;porta nın içeriğini  myreg adında  bir registera attık

assembly 80-80 Branch ve jump kullanımı

branch‘in kelime anlamı dallanmak demektir,branchde  bir durumun kontrolü yapılır,ona  dallanma olur.
assemby 80-80de 2 tane  branch komutu vardır:

BRN:branch on negative (negatife dallan) demektir,sayının negatif  olup olmadığını kontrol eder,sayı negatif ise sonraki satırı atlayıp onun altındaki satırdan devam eder,negatif değilse de normal sırada devam eder.

BRZ:branch on zero (sıfıra dallan) demektir,sayının 0 olup olmadığını kontrol eder,0 ise alttaki satırı atlar,devam eder;0  değilse de normal sırayı takip eder.

jump‘ın  kelime  anlamı atla,zıpla demektir,jump komutu  geldiği zaman  kod akışı  jump edilen adresten devam eder.

örnek bir  kodu inceleyelim:
bir sayının mutlak değerini bulan assembly kodu yazınız,sayı  20 hex adresindedir,mutlak değeri de  20 hex değerine yazınız,r2 ile  point ediliyor.

1         LDI       r5,7            ;jump yapabileceği adresin değerini  r5 registerında tutuyorum
2         LD        r1,r2            ;mutlak değeri alınacak sayıyı r2den r1  registeriına  atıyorum
3        BRN       r1                ;sayının  negatif olup olmadığına  bakıyorum
4          JMP  r5                 ;negatif değilse  birşey yapmaya gerek yok,7. satırdaki komutu işle,yani çıkış
5         NOT  r1,r1           ;negatifse  tersini  al,pozitif yap
6         ST    r2,r1             ;tersini aldığın sayıyı  yerine  yükle
7         Halt                      ;bitir

DERYA GÜNDÜZ