26 Apr

C# Yazılarım Üzerine

Sitede bulunan, C# üzerine yazmış olduğum yazılar artık güncelliğini kaybetmek üzere (belki de kaybetmiştir).
Bundan sonra da C# üzerine yazı hazırlamayı pek düşünmüyorum. Çünkü C# kullanmayalı uzun bir zaman oldu (en son .Net 3.5 vardı, şimdi hangi sürüm var bilmiyorum ).
Yazıları kaldırmak istemiyorum, hala faydalananlar olabilir düşüncesi ile yazıları tutuyorum.

Bilgilerinize.

29 Jul

C# ile MySql

ADO .NET in esnek ve becerikli yapısı Mysqlde işlem yaparken de bize kolaylık sağlamakta. Burada, yeni özelliklerinden dolayı (trigger,transaction,stored procedure vb) Mysql5 versiyonunu baz alarak anlatacağım. Bu arada mysql i indirip kurduğunuzu farz ederek anlatıyorum.
Mysql veritabanına bağlanabilmek ve üzerinde işlem yapabilmek için öncelikle .NET Connector ü indirip kurmanız gerekiyor.
Connectoru kurduktan sonra Visual Studioyu açarak bir Console uygulaması (MysqlTest) oluşturalım. Burada Mysql connectoru hangi klasöre kurduysanız, Visual Studio da Project>Add Reference den Browse ile o klasör içerisindeki “Mysql.Data.dll” i projeye eklemeniz gerekmekte. Daha sonra aşağıdaki kodları deneyebilirsiniz.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
using System;
using System.Collections.Generic;
using System.Text;
//mysql kütüphanelerimizi yüklüyoruz
using MySql.Data;
using MySql.Data.MySqlClient;
namespace MysqlTest
{
    class Program
    {
        MySqlConnection baglanti;   // bağlantı nesnemiz
        MySqlDataReader okuyucu; //  okuyucu nesnemiz
        MySqlCommand komut;     //    komut nesnemiz
        public Program()
        {
          baglanti = new MySqlConnection
("server=localhost;database=test;user=root;password=;");
        }

        public void basla()
        {
            Console.WriteLine("Mysql test uygulaması başlatıldı...");
            try
            {
                baglanti.Open();
                Console.WriteLine("Bağlantı açıldı...");
                Console.WriteLine("Veritabanları listeleniyor...");
                this.komutCalistir("show databases");

                Console.WriteLine("İşlem başarıyla tamamlandı...");
                Console.ReadLine();
            }
            catch (MySqlException myex)
            {
                Console.WriteLine("Veritabanına bağlanamadı.Hata sebebi:");
                Console.WriteLine(myex.Message);
                Console.ReadLine();
            }
        }

        public void komutCalistir(string komut)
        {
            this.komut = new MySqlCommand(komut, baglanti);
            okuyucu = this.komut.ExecuteReader();
            this.oku(okuyucu);
        }

        private void oku(MySqlDataReader sonuc)
        {
            try
            {
                while (sonuc.Read())
                {
                    Console.WriteLine(sonuc[0].ToString());
                }
                sonuc.Close();
            }
            catch (MySqlException me)
            {
                Console.WriteLine(me.Message);
            }
            finally
            {
                baglanti.Close();
            }
        }
        static void Main(string[] args)
        {
            Program Test = new Program();
            Test.basla();
        }
    }
}

Bu test uygulaması ile veritabanına bağlanarak veritabanlarını listelemekteyiz. Gördüğünüz gibi çok fazla çaba sarf etmeden Mysql üzerinde de rahatlıkla işlem yapabilmekteyiz. Tabi bunun en büyük rolü, başta da belirttiğim gibi ADO üstleniyor. Umarım bu kısa yazı C# ile Mysql giriş için iyi bir örnek olmuştur sizin için.

27 Jul

Barkod belası

Barkodu herkes günlük yaşamında görüyordur sanırım, markette, işe girerken kullanılan giriş kartlarında, faturalarda,kitapların,gazetelerin,dergilerin üzerinde v.b.
Dikey olarak, belirli aralıklarla, beyaz zemin üstüne çizilmiş, değişik kalınlıktaki siyah çizgiler. Sanırım hatırladınız. Bu çizgilerin oluşması için farklı standartlar bulunmakta (araştırmalarımdan öğrenebildiğim kadarıyla 22 farklı standart bulunmakta).
Barkod yazdırmaya ihtiyaç duyduğumda, bu karmaşık işin altından kalkabilmek için biraz araştırma yapmam gerekti. Birçok arayan gibi ilk soluğu Google da aldım tabi.
İşime yarayacak barkod tipinin Code39 olduğuna karar verdikten sonra araştırmalarımı bu yöne kaydırdım. Birçok bileşen buldum, ama bulduğum bileşenler ya paralıydı ya da işime yaramadı. Ve en sonunda kolayca, bir bileşene gerek kalmaksızın Code39 formatında barkod çıktısı alabilmenin bir yolunu buldum.
Free3of9 yazı tipi ile Code39 biçiminde barkod çıktısı alınabilmekte. Matthew Welch tarafından hazırlanan bu yazı tipinde Code39 un tüm maharetlerini sergileyememesine rağmen, 0-9 arası rakamları kolaylıkla yazdırabildim.
ilk önce Free3of9 yazı tipini indirip , C:WindowsFonts klasörüne kopyalamanız gerekiyor. Ardından Visual Studioyu açıp bir WindowsApplication projesi oluşturun. Forma bir Panel (Panel genişiği 263; 68 olmalı) ve bir de Button objesi ekledikten sonra, panelin arka planını beyaz yaparak adını da barcodeIM olarak değiştirin. Sonra buttona tıklayarak gelen kod satırına şunları yazın:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Graphics g = barcodeIM.CreateGraphics();
Font LableFont=new Font("Arial",10);

Font CodeFont = new Font("Free 3 of 9", 40);

string code = "*12345678*";

float LabelWidth = g.MeasureString(code,LableFont).Width;

float CodeWidth = g.MeasureString(code, CodeFont).Width;

g.DrawString(code, CodeFont, Brushes.Black, 0, 5);

g.DrawString(
                  code,
                  TitleFont,
                  Brushes.Black,
                  new PointF((CodeWidth-LabelWidth)/2,45));

ve işte barkodumuz karşımızda. Çok kolaymış değil mi ?
Evet barkodlar karmaşık şeyler ve çoğu zamanda can sıkıcı olabiliyorlar. Burada basitçe bir barkod oluşturmayı anlatmaya çalıştım. Bu konu böyle kısa geçilemeyecek kadar uzun ve karmaşık bir konu. Ama bu karmaşayı fazla arttırmamak için burada kısaca anlatma gereği duydum.ilerleyen zamanlarda bu konuya ilişkin yazılara devam etmeyi düşünüyorum. Görüşmek dileği ile?.

27 Jul

Birkaç basit adımda mail göndermek

Hiç mail gönderme ihtiyacı duydunuzmu uygulamanızın içerisinde, veya kodladığınız uygulamanın, mail gönderme işlevinin, olmazsa olmaz bir görev olduğu bir durum oldu mu hiç? Sizi bilmiyorum ama benim olmadı şimdilik Bir arkadaşım SMTP ile nasıl mail gönderebileceğimizi sordu. Php den hatırladığım kadarıyla kolay bir yöntemi olması gerekirdi. Çünkü bu bir standart ve hangi dil olursa olsun bu adımları izlemek zorundaydı.
Bir sunucu, alıcı-gönderen,konu,msj vs.
Çok karmaşık örnekler vardı, hatta örneklerden birinde Socket kullanarak bir kütüphane geliştirilmişti ve bunu kullanarak mail göndermeyi anlatan bir örneğe bile rastladım. Ama istediğim gibi kolay bir yöntem değildi.
Ama tabiki sonunda istediğim kolay yöntemi MSDN içerisinde buldum.
Bunun için iki kütüphaneyi kullanacağız System.Net ve System.Net.Mail


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System.Net;
using System.Net.Mail;

/**
*
* Bir SmtpClient nesnesi oluşturuyoruz
* parametre olarak string tipinde mail hostumuzu veriyoruz
*
**/


SmtpClient sunucu=new SmtpClient("mail.sunucu.net");

/**
*
* Mail sunucumuza bağlanabilmek için
* gerekli kullanıcı adı ve şifremizle bağlantı oluşturacak
* bağlantımızı atıyoruz
*
**/


sunucu.Credentials = new NetworkCredential("kullaniciAdi", "sifre");

/**
*
* SmtpClient nesnemizin send metodu ile mailimizi gönderiyoruz
* tabi ilk önce gerekli parametreleri vermemiz gerekiyor
* send metodunun aldığı bütün parametreler string tipindedir.
*
**/


sunucu.Send(kimden, kime, konu, mesaj);

ve mailimiz gönderilmiştir (tabi eğer gerekli parametreleri düzgün bir şekilde verdiysek).
Ve bu görevde tamamlanmıştır. Hoşçakalın?

ÖRNEK UYGULAMA (KONSOL)