sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO
Cumartesi, Kasım 24
Sql Server Clr Enabled
Sql CLR üzerinden yazdığınız function'u kullanabilmeniz için öncelikle aşağıdaki kodu execute etmelisiniz. Ardından Function'u kullanabilirsiniz
Etiketler:
C#,
CLR,
Function,
Sql,
Sql Server
Çarşamba, Ekim 24
İngilizce Telaffuz Test Programı
Arkadaşlar ingilizce telaffuzunuzu test edebileceğiniz basit bir uygulama; Örnek metni silip istediğiniz metni yazıyorsunuz ardında başla butonuna basıyorsunuz, sırasıyla kelimeleri okumaya başlıyorsunuz siz okudukça sizin telaffuzunuzu test ediyor ve algıladığı kelimeleri yeşil renge çeviriyor.
İndirmek isterseniz buradan indirebilirsiniz.
İndirmek isterseniz buradan indirebilirsiniz.
Etiketler:
C#,
CSharp,
Form,
İngilizce Telaffuz,
Programlar,
Windows Form Aplication
Pazar, Ekim 21
C# ManagementClass Kullanımı
ManagementClass kullanarak sistemdeki tüm sınıfların içerisinde gezebilirsiniz. Windows Form projesi olarak hazırladım Console ekranındada yapılabilir. ListBox a aşağıdaki sınıf isimlerini yazıyorsunuz, her bilgisayarda farklıdır bende 810 tane var 9 tanesini sectim ve ListBox.SelectedItems ile path olarak secilen sınıfı veriyoruz.
ManagementClass sınıfı için öncelikle projenize bu dll i eklemelisiniz.
System.Management.dll
ListBox a eklenecek sınıflar :
SystemBIO
SystemDevices
SystemDesktop
SystemUsers
UTCTime
Volume
Process
Processor
PhysicalMemoryLocation
ManagementClass sınıfı için öncelikle projenize bu dll i eklemelisiniz.
System.Management.dll
ListBox a eklenecek sınıflar :
SystemBIO
SystemDevices
SystemDesktop
SystemUsers
UTCTime
Volume
Process
Processor
PhysicalMemoryLocation
Çarşamba, Ekim 17
C# Extension Method
C# 3.0 ile gelen bir yenilik kullanımı çok basit, statik bir sınıf yazıp statik metodunu "this" anahtarıyla başka bir class'a, struck'a, interface'e, hatta enum'a bile yazabilirsiniz. Ayrıca interface'e yazdığınız bir extension method'a gövdede vermiş oluyorsunuz.
namespace ExtensionMethod
{
class Program
{
static void Main(string[] args)
{
namespace ExtensionMethod
{
class Program
{
static void Main(string[] args)
{
Pazartesi, Ekim 15
C# Database'den XML' E Veri Yazma
C# Database'den XML'e Veri Yazma
using System.Data.SqlClient; using System.Data; kütüphanelerini projemize ekledikten sonra veriyi sql den DataTable'a çekiyoruz. Başka bir veritabanı yapmanız gereken işlemler farklıdır.SqlConnection con = new SqlConnection("data source=.;initial catalog=test;integrated security=true");
SqlCommand cmd = new SqlCommand("select * from ogrenciler", con);
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable("Ogrenciler");
da.Fill(dt);
//DataTable WriteXml ve WriteXmlSchema metodlarını kullanarak sql'deki tablolarımızı xml dosyasına aktarabiliriz.
dt.WriteXml(@"c:\belgeler\kayit.xml"); //Kayıt Dosyası
dt.WriteXmlSchema(@"c:\belgeler\kayit.xsd"); //Şema Dosyası..
Etiketler:
.Net,
C#,
DataTable,
Sql,
SqlCommand,
SqlConnection,
System,
Transact-Sql,
using
Cuma, Ekim 12
C# Code Snippet Yazma
C#, developer aşamasında developer a yardımcı olmak için kısayollar barındırır(snippet), biz varsayılan olarak gelen snippet lara ekleme yapabiliriz. İstersek bunu yapan editörleri kullanabiliriz, istersekte varolan sinippet sablonlarından yararlanabiliz. Biz örneğimizde varolan şablonları kullanacağız .
1-Visual studio karşılama penceresinde üst menüden tools sekmesini açıyoruz ve "Code Snippets Manager" sekmesini seçiyoruz.
1-Visual studio karşılama penceresinde üst menüden tools sekmesini açıyoruz ve "Code Snippets Manager" sekmesini seçiyoruz.
Etiketler:
.Net,
C#,
Code Snippet,
Code Snippet Manager,
CSharp,
developer,
Framework
Çarşamba, Ekim 10
Visual Studio Form Projesi
Visual Studio da bir form projesi nasıl başlatılır bir örnek ugulama yazalım
1-Açılış ekranından New Project'i seçebilir yada "File > New > Project" seçip bir proje sayfası açıyoruz açılan sayfadan "Windows Form Aplication" secip projemize isim veriyoruz.
1-Açılış ekranından New Project'i seçebilir yada "File > New > Project" seçip bir proje sayfası açıyoruz açılan sayfadan "Windows Form Aplication" secip projemize isim veriyoruz.
SQL DataReader Kullanımı
Sql DataReader Kullanımı
Veritabanındaki tabloları sorgulamak istersek DataReader kullanılabilir. Asağıdaki örnekte müşteri tablosundaki müşterileri DataReader ile çekelim.SqlConnection con = new SqlConnection("data source=.; integrated security=true; initial catalog=test");
SqlCommand cmd = new SqlCommand("select * from personel", con);
SqlDataReader dr = cmd.ExecuteReader(); //Reader'ı Execute ediyoruz.
//DataReader row'ları teker teker okuyor.
while (dr.Read())
{
Console.WriteLine(dr["Id"]+" : "+dr["Ad"]); //Ad ve Id alıyoruz.
}
C# Dosya Okuma (StreamReader)
C# Dosya Okuma
C# da dosya okumak için birçok yöntem vardır. Tekbir satır da, bir txt dosyasının içerisindeki yazıları ekrana yazdırmak istersek aşağıdaki kod türkçe karakter desteğiyle birlikte bizim için yeterli oluçaktır.Console.WriteLine(new StreamReader("c://belge.txt", Encoding.GetEncoding("iso-8859-9")).ReadLine());
//Biraz karmaşık gelebilir, hemen detaylı bir şekilde açıklayalım .
//System.IO; Kütüphanesi altındaki sınıfları kullanıyoruz
//Encoding sınıfı yardımıyla türkçe dil desteği veriyoruz.
Encoding enc = Encoding.GetEncoding("iso-8859-9");
Etiketler:
C#,
Console,
Dosya Okuma,
StreamReader
C# FileInfo Sınıfını Kullanmak
FileInfo sınıfı kullanımı
//File info sınıfını kullanarak dosya ile ilgili tüm bilgilere ulaşabiliriz.FileInfo fi = new FileInfo("c://ergin.txt");
Console.WriteLine("Dosya Varmı :" + fi.Exists);
Console.WriteLine("Oluşturma Tarihi :" + fi.CreationTime);
Console.WriteLine("Uzantı Dahil Tam ismi :" + fi.FullName);
Console.WriteLine("Dosya uzantısı :" + fi.Extension);
Console.WriteLine("En son değişiklik tarihi :" + fi.LastWriteTime);
Console.WriteLine("Dosya boyutu (byte olarak):" + fi.Length);
Console.ReadLine();
//Birçok metodu daha var gerekli olursa kullanılabilir.
Etiketler:
C#,
Console WriteLine,
CreationTime,
Exists,
Extension,
FileInfo,
FullName,
LastWriteTime,
Lenth
Salı, Ekim 9
C# Klasör Okuma (Directory)
Directory sınıfının GetDirectories metodu belirttiğimiz dizindeki gizli yada açık tüm dosyaları bize bir dizi olarak dönücektir.
string[] klasorler = Directory.GetDirectories("c://");
//Dizinin içerisinde foreach ile dönersek tüm klasörlere ulaşabiliriz.
foreach (var item in klasorler)
{
Console.WriteLine(item);
}
string[] klasorler = Directory.GetDirectories("c://");
//Dizinin içerisinde foreach ile dönersek tüm klasörlere ulaşabiliriz.
foreach (var item in klasorler)
{
Console.WriteLine(item);
}
Etiketler:
C#,
C# Foreach,
Directory,
GetDirectories,
method,
String
C# String.Join ve String.Split methodları
Strng sınıfının 2 faydalı method'u ile bir örnek çalışma yapalım. Bir email dizimiz olsun önce email dizimizi bir string'e çevirelim sonrada string değeri kriterimize uygun şekilde bir dizi haline getirelim.
string[] dizi = { "ahmet@ates.com", "hakki@yavuz.com", "mahmut@hotmail.com", "metin@hotmail.com" };
StreamWriter sw = new StreamWriter(@"c:/belge.txt", false);
string yeni = string.Join(";", dizi); //Dizimizi ";" ile birleştiriyoruz..
sw.WriteLine(yeni);
sw.Close();
string[] dizi = { "ahmet@ates.com", "hakki@yavuz.com", "mahmut@hotmail.com", "metin@hotmail.com" };
StreamWriter sw = new StreamWriter(@"c:/belge.txt", false);
string yeni = string.Join(";", dizi); //Dizimizi ";" ile birleştiriyoruz..
sw.WriteLine(yeni);
sw.Close();
Etiketler:
C#,
Join,
Split,
StreamReader,
StreamWriter,
String
Perşembe, Ekim 4
SQL Yaş Hesaplama
Arkadaslar sql de kullanıcıdan aldığınız doğum tarihi bilgisini yıl olarak gösterebilirsiniz. Aşağıdaki bir örnek farklı şekillerdede bu işlem yapılabilir.
declare @Tarih datetime
set @Tarih='1988.11.21'
print (year(getdate())-year(@Tarih))
declare @Tarih datetime
set @Tarih='1988.11.21'
print (year(getdate())-year(@Tarih))
Etiketler:
Sql,
Transact-Sql,
Yas Hesaplama
Pazartesi, Ekim 1
SQL Tabloya Trigger Yazma
Trigger create, update, delete, insert işlemlerinden sonra yapılmasını istediğimiz işlerin bilgisini tutan ve tetiklendiğinde yapması gereken işleri sırayla yapan tetikleyicilerdir. Trigger lar tablolara veritabanına ve server a yazılabilir.
Trigger yazarken önce trigger ismi ardından çalışmasını istediğimiz yer, sonrasında hangi işlem için çalışmasını istediğimizi belirtiyoruz ve begin end blogları içerisinde yapmasını istediğimiz işlemi yazıyoruz.
Örnek olarak bir tabloya trigger yazalım ve yeni bir öğrenci eklendiğinde o öğrenci YedekOgrenci tablosunada eklensin :
Trigger yazarken önce trigger ismi ardından çalışmasını istediğimiz yer, sonrasında hangi işlem için çalışmasını istediğimizi belirtiyoruz ve begin end blogları içerisinde yapmasını istediğimiz işlemi yazıyoruz.
Örnek olarak bir tabloya trigger yazalım ve yeni bir öğrenci eklendiğinde o öğrenci YedekOgrenci tablosunada eklensin :
Etiketler:
Sql,
Table,
Transact-Sql,
Trigger
Cuma, Eylül 28
SQL Store Procedure
Store prosedur'ler karmaşık sorgularımız tek bir satırda güvenli bir şekilde çalıştırabilmemizi sağlayan yapılardır (Methodlar) diyebiliriz. Prosedurler parametre alabilirler ve içeride yazdığımız sorguyu çalıştırırlar, geriye bir değer return ederler, içerisinde birden fazla işlem yapıp birden fazla sorgu çalıştırabiliriz ve normalde yazdığımız sorgulardan daha hızlı çalışırlar nedeni ise daha önceden derlenmiş ve çalışmaya hazır hale getirilmiş olmalarıdır.
Parametre alan ve aldığı parametlerleri bir tabloya insert eden bir prosedure yazmak istersek :
Parametre alan ve aldığı parametlerleri bir tabloya insert eden bir prosedure yazmak istersek :
Etiketler:
Sql,
StoreProcedure,
Transact-Sql
SQL Geçici tablo Oluşturma (Temptable-AdminTemptable)
Sunucuya olan bağlantı açıkken geçici olarak oluşturulan ve uzerinde işlemler yapabileceğimiz tablolardır, normal tablolardan farklı değildirler, tek kullanıcıya ait bir id ile oluşturulurlar ve sadece o kullanıcı tarafından kullanıcı server a bağlı kaldığı sürece erişilebilirler. Create edilirken # isareti ile belirtilirler. Örnek:
create table #TempleTableOrnek
(
Id int identity(1,1),
Ad nvarchar(50),
Soyad nvarchar(50)
)
create table #TempleTableOrnek
(
Id int identity(1,1),
Ad nvarchar(50),
Soyad nvarchar(50)
)
Etiketler:
Admintemptable,
Sql,
Temptable,
Transact-Sql
SQL View Oluşturma
View olusturduğunuzda ornek aldığınız tablonun bir yedeği alınmaz aynı tabloyu referans alan sanal bir tablo oluşmuş olur, gercek tabloda yada view'de yapılan bir değişiklik gerçek değeride etkileyecektir. View ler güncel verilerin kısıtlı sekilde gosterilmesini istediğimiz durumlada çok faydalıdır çünkü asıl tabloda yapılan değişiklik view'ide etkiler ve view üzerindende güncel ve gerçek veriye ulaşmış oluruz
Örnek olarak: 5 tabloyu join ile birleştirip bir view oluşturduğumuzda 5 tablodaki istediğimiz kolonların güncel verilerine bir view üzerinden ulaşabiliriz bu işlemi bir store procedure ile de yapabiliriz fakat view in kolonları arasındada seçim yapabilirsiniz
- 2 ilişkili tabloyu birleştirip tek bir tablo sorgular gibi sorgulayalım.
Örnek olarak: 5 tabloyu join ile birleştirip bir view oluşturduğumuzda 5 tablodaki istediğimiz kolonların güncel verilerine bir view üzerinden ulaşabiliriz bu işlemi bir store procedure ile de yapabiliriz fakat view in kolonları arasındada seçim yapabilirsiniz
- 2 ilişkili tabloyu birleştirip tek bir tablo sorgular gibi sorgulayalım.
Etiketler:
Sql,
Transact-Sql,
View
Perşembe, Eylül 27
SQL Fonksiyonları ve Dönüş Değerleri
Sql fonksiyonlarında bir kolondaki değerler hesaplanır ve geriye bir değer döndürülür. Transact-SQL programlama dilinde kullanılan gruplama (aggregate) fonksiyonları sunlardır:
Gruplama Fonksiyonları
- AVG() --Ortalama değer döndürür
- COUNT() --Satır sayısını döndürür
- FIRST() --İlk değeri döndürür
- LAST() --Son değeri döndürür
- MAX() --En büyük değeri döndürür
- MIN() --En küçük değeri döndürür
- SUM() --Ortalama değeri döndürür
Etiketler:
Skaler,
Sql,
Transact-Sql
Çarşamba, Eylül 26
SQL Join işlemleri
Join işlemi tabloları birleştirmemizi sağlar ve sorgulama sonucunda yeni bir tablo oluşturulmaz, sadece birbirleriyle ilişkili tabloların birleştirilmiş halleri gosterilir.
Birincil anahtar her satır için benzersiz bir değer içeren bir sütun (veya sütunlar kombinasyonu) 'dir. Her birincil anahtar değeri tablo içinde benzersiz olmalıdır. Amaç, her tabloda verilerin tekrarlanmamasıdır ve tablolar arası ilişki kurulmasıdır. Çeşitli join teknikleri vardır.
Inner join Tablo2
on Tablo1.Id=Tablo2.Tablo1Id
--"On" kısmında 2 tablonun nereden bağlanıcağını belirtiyoruz.
Birincil anahtar her satır için benzersiz bir değer içeren bir sütun (veya sütunlar kombinasyonu) 'dir. Her birincil anahtar değeri tablo içinde benzersiz olmalıdır. Amaç, her tabloda verilerin tekrarlanmamasıdır ve tablolar arası ilişki kurulmasıdır. Çeşitli join teknikleri vardır.
- Inner join --Her tablodaki karşılığı olan kayıtlar gosterilecektir.
- Left join --Left ifadesinin solunda kalan tablodaki tüm veriler sağdaki tabloya bakılmaksızın gelicektir.
- Right join --Left'in tam tersi
- Cross join --Once yazılan tablodaki tüm elemanları diğer tablodakilerle eşleştirir.
- Full join --Tablolardaki kayıtların tümünü karşılıkları olmasada getirir.
Inner join Tablo2
on Tablo1.Id=Tablo2.Tablo1Id
--"On" kısmında 2 tablonun nereden bağlanıcağını belirtiyoruz.
SQL Nedir?
SQL (Structured Query Language) anlamına gelir. SQL bir veri tabanı ile iletişim kurmak için kullanılır. ANSI (Amerikan Ulusal Standartlar Enstitüsü)e göre, ilişkisel veritabanı yönetim sistemleri için standart bir dildir.
SQL ifadeleri bir veritabanı güncelleme, görevleri gerçekleştirmek veya bir veritabanından veri almak için kullanılır. SQL kullanan bazı yaygın ilişkisel veritabanı yönetim sistemleri:
SQL ifadeleri bir veritabanı güncelleme, görevleri gerçekleştirmek veya bir veritabanından veri almak için kullanılır. SQL kullanan bazı yaygın ilişkisel veritabanı yönetim sistemleri:
- Oracle
- Sybase
- Microsoft SQL Server
- Access
- Ingres
Pazartesi, Eylül 24
SQL Create Table
Sql arayüzünü kullanarak tablo kolaylıkla tablo yapabilirsiniz, fakat kodla yapmanız gerekirse aşağıdaki kodu kullanabilirsiniz.
CREATE TABLE Tablo_Adi
(
KolonAdi Data_Tipi,
KolonAdi Data_Tipi, --Bu şekilde tablo oluşturabilirsiniz.
KolonAdi Data_Tipi,
...
)
CREATE TABLE Tablo_Adi
(
KolonAdi Data_Tipi,
KolonAdi Data_Tipi, --Bu şekilde tablo oluşturabilirsiniz.
KolonAdi Data_Tipi,
...
)
Pazar, Eylül 23
SQL Store Procedure (Saklı Yordam)
Store procedure ler iş mantığınızın yani hazırladığınız sorgunun daha hızlı ve verimli çalışmasını sağlarlar ve sql injection gibi dış tehditlere karşı güvenlidirler.
CREATE PROC sp_test
AS
BEGIN
select * from AdventureWorks.Production.Product
END
CREATE PROC sp_test
AS
BEGIN
select * from AdventureWorks.Production.Product
END
Etiketler:
Create,
Sql,
Store Procedure
Cuma, Eylül 21
SQL Update, Delete (Güncelleme-Silme)
Sql Update
Sql de tablodaki verileri güncellemek için Update sorgusu(query)kullanılır, yaptığı aslında silme ve ekleme işlemidir fakat bu işlemi yaparken ID değişmez.UPDATE tablo_ismi
SET kolon1=değer, kolon2=değer,..
WHERE kolonadi=Değer //Burada koşul belirtiyoruz...
Bir örnek daha iyi anlamanızı sağlıcaktır, biraz karışık bir sorgu
SQL Select, İnsert (Seçme - Ekleme)
Sql Select
Sql de bir tablodaki verileri getirmek için select sorgusu kullanılır, sonuçu bir sutun, bir satır yada bir tablo olarak döndürebilirsiniz.SELECT kolon_ismi FROM tablo_ismi
SELECT * FROM tablo_ismi
Üst select sorgusu sadece ismini yazdığımız kolonu getiricektir, fakat alttaki select sorgusu tüm tablodaki kolonları getiricektir.
C# Class vs Struct
Class ve struct arasında değer tip referans tip ayrımı vardır. Class bildiğiniz gibi referans tipli fakat struct değer tiplidir, class ve struct .Net'teki 5 temel tipin 2 sidir. Bir örnekle kullanımını ve arasındaki farkı anlatmaya çalışalım. Struct class'dan biraz farklıdır ;
- Struct' lar default constructor içeremez
- Struct içerisinde Field'lar değer almadan metotlar kullanılamaz
- Kalıtım yapılamaz fakat interfaceler implemente edilebilir.
Perşembe, Eylül 20
C# Çarpım Tablosu
Console ekranında çarpım tablosu yapmak çok basit ama yeni başlayanlar için iyi bir iç içe for örneği.
static void Main(string[] args)
{
Console.ForegroundColor = ConsoleColor.Green;
for (int i = 1; i < 11; i++)
for (int a = 1; a < 11; a++)
Console.WriteLine("{0} X {1} = {2}", a, i, (a * i));
}
static void Main(string[] args)
{
Console.ForegroundColor = ConsoleColor.Green;
for (int i = 1; i < 11; i++)
for (int a = 1; a < 11; a++)
Console.WriteLine("{0} X {1} = {2}", a, i, (a * i));
}
C# Delegate - DynamicInvoke
Delegelerin temsil (işaret) ettikleri metodları tek tek yada istediğimiz sırayla çalıştırmak istersek, DynamicInvoke metodunu kullanabiliriz, tabi önce metodları bir Delegate dizisine atmamız gerekiyor, sonrasında dizideki elemanları tek tek çalıştırabiliriz.
delegate void Temsilci();
class Program
{
static void Main(string[] args)
{
delegate void Temsilci();
class Program
{
static void Main(string[] args)
{
Salı, Eylül 18
C# Matrix Programı
Matrix filmlerinde gördüğünüz aşağıya doğru kayan yazı ve rakamlar dizisi c# console ekranında yapılıyor, kodlar aşağıda yapmanız gereken kodu debug ettikten sonra herhangi bir tuşa basmak.
namespace Matrix
{
class Program
{
static Random r = new Random(); //Bu nesneyi ile rasgele sayilar ureticez
static bool thistime = false; //Bu kısımda stepler ayarlanıyor.
static void Main(string[] args)
{
namespace Matrix
{
class Program
{
static Random r = new Random(); //Bu nesneyi ile rasgele sayilar ureticez
static bool thistime = false; //Bu kısımda stepler ayarlanıyor.
static void Main(string[] args)
{
C# Try-Catch-Finally (exception handling)
Hata yönetimi sırasında Try-Catch-Finally kod buloğu kullanılır. Try kısmında hata olması muhtemel kodlar bulunmalıdır, catch bloğunda ise hata olması durumunda çalışmasını istediğiniz kodlar olmalı. Finally bloğu ise her halukârda çalışacak kodların bulunduğu bölümdür ve siz catch bloğunda return bile yapsanız finally bloğundaki kodlar çalıştırılacaktır.
C# Foreach
Foreach ile dizilerin koleksiyonların ve hatta kendi tipinizin içinde gezebilirsiniz. Var tipi bütün tiplerin yerini tutabildiği için listenin içerisindeki her elemanı var tipinde bir değişkene attık.
Etiketler:
C#,
C# Foreach,
Döngü,
for,
Foreach
Pazartesi, Eylül 17
C# String Kesme İşlemi - Substring
String ifadeyi istediğimiz aralıkta kesebilirsiniz bunun için Substring methodunu kullanabilirsiniz. İsterseniz 2 parametre gönderip index aralığını belirtebilirsiniz, istersenizde başlamasını istediğiniz index numarasını verebilirsiniz.
string metin = "Uzun metin";
Console.WriteLine(metin.Substring (2,5)); //Bu satırda orta kısmı yazıcaktır.
Console.WriteLine(metin.Substring (5)); //Burda ise 5.indexten başlıcak.
string metin = "Uzun metin";
Console.WriteLine(metin.Substring (2,5)); //Bu satırda orta kısmı yazıcaktır.
Console.WriteLine(metin.Substring (5)); //Burda ise 5.indexten başlıcak.
Pazar, Eylül 16
C# Hata Sınıfı Yazalım (Custom Exception)
C# ta kendi fırlattığımız hataları kendi hata sınıfımızı yazarak yakalayabiliriz.İlk olarak Exception sınıfını kullanarak bir sınıf yazıyoruz(MyException) exception sınıfı'nın içindeki constructor'ları eziyoruz bu işlemi kısa yoldan yapabilmemiz mümkün "exc" harflerine basarsak "Exception" kod snippet'ına ulaşabiliriz. "Exception" seçip 2 defa Tab tuşuna basarsak framework bizim için hata sınıfımızı kendi yazmış olucak.
Not: Framework'un fırlattığı hata mesajlarını biz override edemeyiz sadece kendi hata mesajlarımızı yakalayıp "Message" property sini ezerek kendi hata mesajlarımızı dışarıdan gelen değere göre yazdırabiliriz.
Not: Framework'un fırlattığı hata mesajlarını biz override edemeyiz sadece kendi hata mesajlarımızı yakalayıp "Message" property sini ezerek kendi hata mesajlarımızı dışarıdan gelen değere göre yazdırabiliriz.
Cumartesi, Eylül 15
Visual Studio 2012
Visual Studio 2012, tüm dünyada işbirliği içinde çalışan bir mühendislik ekibi tarafından Visual Studio ile oluşturuldu. Visual Studio 2012 yazılım geliştiricilere ne gibi yenilikler sunuyor ana başlıklar halinde yazmaya calıştım.
- Yeni bir görünüş ve dokunuş
- Kullanımı kolaylaştırılmış menü ve kısayollar
- Windows 8 e özel görsel araçlar
- Web geliştirme yükseltildi (HTML5 ve CSS3 Tam destek)
- Cloud özelliği
- SharePoint eklentileri, geliştirmeleri
- Esnek çevik işlemler, kesin ALM
.NET Framework
.Net Famework,Microsoft tarafından geliştirilmiş bir uygulama geliştirme platformudur. Bu platformda web, windows, mobile, web servisleri gibi her türden uygulama desteklenmiş ve geliştirilen her türlü uygulamanın birbiriyle ve dış dünyadaki diğer uygulamalarla iletişim kurabilmesi için uygun alt yapı sağlanmıştır.
.Net mimarisi, ortak bir yürütme ortamı , ortak bir değişken tür sistemi, ve bağlantılı kütüphanelerden oluşur ve programcılar için bir çok fonksiyon içerir. .Net Framework te kütüpaneler sınıflandırılmış ve programların işletim sistemleri ile uyumlu bir şekilde çalışması sağlanmıştır.
Microsoft .NET Framework 4.5 RC versiyonunu buradan indirebilirsiniz.
Visual Studio 2012 with MSDN buradan satın alabilirsiniz. İsterseniz buradan 90 günlük deneme sürümünü indirebilirsiniz.
.Net mimarisi, ortak bir yürütme ortamı , ortak bir değişken tür sistemi, ve bağlantılı kütüphanelerden oluşur ve programcılar için bir çok fonksiyon içerir. .Net Framework te kütüpaneler sınıflandırılmış ve programların işletim sistemleri ile uyumlu bir şekilde çalışması sağlanmıştır.
Microsoft .NET Framework 4.5 RC versiyonunu buradan indirebilirsiniz.
Visual Studio 2012 with MSDN buradan satın alabilirsiniz. İsterseniz buradan 90 günlük deneme sürümünü indirebilirsiniz.
Etiketler:
.Net,
.Net Framework 4.5,
C#
Cuma, Eylül 14
Hello world
Hepimizin C# Console ekranındaki ilk kodu budur sanırım, üst kısımda yazı rengini değiştiren kod bulunuyor ConsoleColor.Green(Yeşil), alttaki kodsatırı ise ekrana bir yazı yazmak istediğimizde kullandığımız method (WriteLine). İlk kodunuz hayırlı olsun...
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Hello World");
}
}
}
Ekran cıktısı aşağıdadır.
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Hello World");
}
}
}
Ekran cıktısı aşağıdadır.
Etiketler:
.Net,
Console,
Hello World
Perşembe, Eylül 13
C# For
Bu konu hakkında çok uzun makaleler var ben kısaca kullanımını ve nerede, neden ihtiyaç duyacağımızdan bahsetmek istiyorum. For diğer döngülere benzer olarak bir true-false arar ve true bulduğu sürece döner.
for (;2 < 10;) //Bu döngü sonsuza kadar döner
{
}
2 sayısı 10 sayısından küçük olduğu için sürekli true üretilecektir, buda döngünün sürekli dönmesini sağlar biz bu 2 rakamıda bir değişkene atayarak müdahale edebiliriz.
for (int i =0 ; i<10 ; i++) //Bu döngü 10 tur döner
{
}
Özetlemek gerekirse (int i=0) değişkeni tanımladığımız bölüm, (i<10) true-false kontrolünün yapıldığı bölüm, (i++) ise değerin her bir turda arttılırdığı bölümdür. Bir işi tekrarlı olarak yaptırmak ve dizilerin içerisinde gezmek için kullanılabilir. Foreach döngüsünden daha yavaş çalışır fakat kullanım yerleri farklılık.
Bir örnek yaparak daha iyi kavramaya çalışalım.
for (int i = 0; i < 10; i++) // i değeri her turda 1 arttırılıyor.
{
Console.WriteLine("deneme");
}
for (;2 < 10;) //Bu döngü sonsuza kadar döner
{
}
2 sayısı 10 sayısından küçük olduğu için sürekli true üretilecektir, buda döngünün sürekli dönmesini sağlar biz bu 2 rakamıda bir değişkene atayarak müdahale edebiliriz.
for (int i =0 ; i<10 ; i++) //Bu döngü 10 tur döner
{
}
Özetlemek gerekirse (int i=0) değişkeni tanımladığımız bölüm, (i<10) true-false kontrolünün yapıldığı bölüm, (i++) ise değerin her bir turda arttılırdığı bölümdür. Bir işi tekrarlı olarak yaptırmak ve dizilerin içerisinde gezmek için kullanılabilir. Foreach döngüsünden daha yavaş çalışır fakat kullanım yerleri farklılık.
Bir örnek yaparak daha iyi kavramaya çalışalım.
for (int i = 0; i < 10; i++) // i değeri her turda 1 arttırılıyor.
{
Console.WriteLine("deneme");
}
Etiketler:
C#,
C# For,
CSharp,
for,
For Döngüsü
Çarşamba, Eylül 12
C# Tür Dönüşümü
Bilinçsiz Tür Dönüşümü
namespace BilincsizTurDonusumu
{
class Program
{
static void Main(string[] args)
{
byte kucuk = 250; // Bellekte 8 bit yer tutar
ulong cokBuyuk = 1234567891123456; // Bellekte 64 bit yer tutar
cokBuyuk = kucuk; // Kucuk bir deger icin bellekte fazla yer ayırmış olduk bu yüzden bu tip donüşümlere bilinçsiz tür dönüşümü denir.
}
}
}
Bilinçli Tür Dönüşümü
namespace BilincsizTurDonusumu
{
class Program
{
static void Main(string[] args)
{
int sayi = 45065431; // Bellekte 32 bit yer kaplar
byte kSayi = 15; //Bellekte 8 bit yer kaplar
kSayi = (byte)sayi; //sayının önüne parantez içinde dönüştürmek istediğimiz türü belirtmeliyiz, aksi halde derleme zamanı hatası alırız bu durumda veri kaybı kaçınılmaz byte tipi 0-255 arası değer barındırabilir ve kSayi değişkeninin aldığı değer 215 olacaktır.
//Tür dönüşümüne izin verilmeyen bazı tiplerde ise Convert sınıfı kullanılabilir.
string yazi = "123456";
int sayi = 12;
sayi = Convert.ToInt32(yazi); //sayi değişkeni 123456 değerini aldı.
}
}
}
C# Methot'tan Geri Çok Değer Döndürme(Tuple)
namespace TupleKullanimi
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Dondur(15, "deneme", true));
}
static Tuple<int, string, bool> Dondur(int a, string b, bool c)
{
return Tuple.Create(a, b, c);
}
}
}
Tuple sınıfını kullanarak bir methot'tan 1'den çok değer(8 ile sınırlandırılmış) döndürebiliriz.Yukarıdaki şekilde ekrana yazdırmak istersek ekran çıktısı aşağıdaki gibi olucaktır.
Eger bir değişkene almak isterseniz.Var değiskeni gelen değerleri tutabiliyor, fakat ulaşmak istediğinizde her bir değişken için Item1, Item2, Item3 değerlerinin üzerinden ulaşmanız gerekicek bu da ufak bir dez avantaj oluyor.
var a= Dondur(15, "deneme", true);
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Dondur(15, "deneme", true));
}
static Tuple<int, string, bool> Dondur(int a, string b, bool c)
{
return Tuple.Create(a, b, c);
}
}
}
Tuple sınıfını kullanarak bir methot'tan 1'den çok değer(8 ile sınırlandırılmış) döndürebiliriz.Yukarıdaki şekilde ekrana yazdırmak istersek ekran çıktısı aşağıdaki gibi olucaktır.
Eger bir değişkene almak isterseniz.Var değiskeni gelen değerleri tutabiliyor, fakat ulaşmak istediğinizde her bir değişken için Item1, Item2, Item3 değerlerinin üzerinden ulaşmanız gerekicek bu da ufak bir dez avantaj oluyor.
var a= Dondur(15, "deneme", true);
Salı, Eylül 11
C# Operatörler
- Atama Operatörü
- Aritmetiksel Operatörler
- Mantıksal Operatörler
- Karşılaştırma Operatörleri
- Bitsel Operatörler
1-Atama Operatörü
= atama operatörüdür ve sağındaki değeri yada değişkeni solundaki değişkene atar referans tiplerde ise referansini atar.2-Aritmetiksel Operatörler
Matematikte kullandığımız operatörlerdir. Toplama(+), Çıkarma(-), Çarpma(*), Bölme(/), Mod Alma(%) ve pratik kullanım icin (++), (--) operatörleride değeri 1 arttırıp, 1 azaltır.3-Mantıksal Operatörler
3 mantıksal operatör vardır. (&&)ve Bu operatör 2 sonuçta doğru ise true deger dondurur., (||)veya Bu operatör 2 sonuçtan biri doğru olsada true sonuç dondürür., (!)değil Bu operatör sonuç doğru değilse true sonuç döndürür.
4-Karşılaştırma Opetörraleri
< küçüktür, >büyüktür, <=küçük eşittir, >=büyük eşittir , ==eşittir,!= eşit değildir.5-Bitsel Operatörler
Bitsel operatörler ramde tutulan verinin bitleri üzerinde işlem yaparlar. (&)ve, (|)veya, (~)değil, (>>)sağa bit kaydırma, (<<)sola bit kaydırma şeklinde toplam 5 adettir.C# Değişken Tanımlama
Main methodunun icerisinde değişken tanımlanırken değişkenin tipi,adı ve ilk değeri verilmelidir. Class düzeyinde bir tanımlama yapılacaksa durum değişicektir.
<değişken-tipi><değişken-adı>=<ilk-değer>
int sayi = 2;
using System;
namespace DegiskenTanimlama
{
class Program
{
static void Main(string[] args)
{
int sayi = 2; //Daha önce kullanılmamış bir isim verilmeli
Console.WriteLine(sayi);
}
}
}
Console.WriteLine -- Console ekranında cıktı alabilmemiz icin vardır.Kodumuzun ekran cıktısı
<değişken-tipi><değişken-adı>=<ilk-değer>
int sayi = 2;
using System;
namespace DegiskenTanimlama
{
class Program
{
static void Main(string[] args)
{
int sayi = 2; //Daha önce kullanılmamış bir isim verilmeli
Console.WriteLine(sayi);
}
}
}
Console.WriteLine -- Console ekranında cıktı alabilmemiz icin vardır.Kodumuzun ekran cıktısı
Etiketler:
.Net,
C#,
Console,
Console WriteLine
Cuma, Ağustos 31
C# Türleri(Referans-Değer)
C# ta veri türleri Reference(Referans) Ve Value(Değer) olarak 2 ye ayrılır
Reference Type(Başvuru türleri)
Bu tipler Heap bolgesindeki değerlerin referansını tutar ve veriye stack bölgesinde bir işaret tutarlar.
Bu tipler ise veriyi stack bölgesinde tutarlar.
Reference Type(Başvuru türleri)
Bu tipler Heap bolgesindeki değerlerin referansını tutar ve veriye stack bölgesinde bir işaret tutarlar.
- Class (Sınıf)
- Interface (Arabirim)
- Delegate (Temsilci)
- Dynamic (Dinamik)
- Object (Nesne)
- String (Dize)
Bu tipler ise veriyi stack bölgesinde tutarlar.
- Enum (Sabit)
- Struct (Yapılar)
- char
- 15 değer tipi ek olarak ayrı bir makalede özellikleri ile asağıdadır.
C# Char
using System.Char; Namespace altındadır.
MaxValue = (char)0xffff
MinValue = '\0'
En çok kullanılan methodları ve ekran cıktıları aşağıdadır.
char ch1 = '1';
String str = "test string";
Console.WriteLine(System.Char.GetNumericValue(ch1)); // Output: "1"
Console.WriteLine(Char.IsControl('\t')); // Output: "True"
Console.WriteLine(System.Char.IsDigit(ch1)); // Output: "True"
Console.WriteLine(Char.IsLetter(',')); // Output: "False"
Console.WriteLine(Char.IsLower('u')); // Output: "True"
Console.WriteLine(System.Char.IsNumber(ch1)); //Output True
Console.WriteLine(Char.IsPunctuation('.')); // Output: "True"
Console.WriteLine(Char.IsSeparator(str, 4)); // Output: "True"
Console.WriteLine(Char.IsSymbol('+')); // Output: "True"
Console.WriteLine(Char.IsWhiteSpace(str, 4)); // Output: "True"
Console.WriteLine(Char.Parse("S")); // Output: "S"
Console.WriteLine(Char.ToLower('M')); // Output: "m"
Console.WriteLine(System.Convert.ToString('x')); // Output: "x"
Ekran çıktısı aşağıdadır.
MaxValue = (char)0xffff
MinValue = '\0'
En çok kullanılan methodları ve ekran cıktıları aşağıdadır.
char ch1 = '1';
String str = "test string";
Console.WriteLine(System.Char.GetNumericValue(ch1)); // Output: "1"
Console.WriteLine(Char.IsControl('\t')); // Output: "True"
Console.WriteLine(System.Char.IsDigit(ch1)); // Output: "True"
Console.WriteLine(Char.IsLetter(',')); // Output: "False"
Console.WriteLine(Char.IsLower('u')); // Output: "True"
Console.WriteLine(System.Char.IsNumber(ch1)); //Output True
Console.WriteLine(Char.IsPunctuation('.')); // Output: "True"
Console.WriteLine(Char.IsSeparator(str, 4)); // Output: "True"
Console.WriteLine(Char.IsSymbol('+')); // Output: "True"
Console.WriteLine(Char.IsWhiteSpace(str, 4)); // Output: "True"
Console.WriteLine(Char.Parse("S")); // Output: "S"
Console.WriteLine(Char.ToLower('M')); // Output: "m"
Console.WriteLine(System.Convert.ToString('x')); // Output: "x"
Ekran çıktısı aşağıdadır.
C# String Temizleme
String ifadeyi temizlemek veya degistirmek icin kullanılan bir cok method vardır. Char sınıfı ile ilgili makalede methodlardan bahsedicem. Aşağıdaki kod string ifadeyi sayılardan temizliyor.
string isim = "Den6564eme";
string temiz = "";
for (int i = 0; i < isim.Length; i++)
{
if (char.IsLetter(isim[i]) || char.IsWhiteSpace(isim[i]))
temiz += isim[i];
}
Console.WriteLine(temiz);
Ekran çıktısı aşağıdadır.
string isim = "Den6564eme";
string temiz = "";
for (int i = 0; i < isim.Length; i++)
{
if (char.IsLetter(isim[i]) || char.IsWhiteSpace(isim[i]))
temiz += isim[i];
}
Console.WriteLine(temiz);
Ekran çıktısı aşağıdadır.
C# Faktoriyel Hesaplama
Faktöriyel nedir?
Faktöriyel, matematikte sağına ünlem işareti konulmuş sayıya verilen isim, daha genel olan Gamma Fonksiyonu`nun tam sayılarla sınırlanmış özel bir durumudur. Faktöriyel fonksiyonu verilen pozitif tamsayının kendisinden önceki bütün tamsayılarla 1'e inilinceye kadar çarpılması sonucunda elde edilen çarpımı gösterir.ulong sayi = ulong.Parse(Console.ReadLine());
ulong Sonuc = 1;
for (ulong i = sayi; i > 0; i--)
{
Sonuc *= i;
}
Console.WriteLine(Sonuc);
Not : İşlem sınırı ulong tip'inin alabileceği değer uzunluğu ile sınırlıdır.
C# Int Ters Çevirme
Bu işlemi string olarak kolaylıkla yapabilirdik fakar int a zorlanıyorsanız bu çözum olabilir.
int sayi = 123456;
int Sonsayi = 0;
for (; ; )
{
Sonsayi = sayi % 10;
Console.Write(Sonsayi);
sayi = sayi / 10;
if (sayi <= 0)
return;
}
Ekran cıktısı aşağıdaki gibi.
int sayi = 123456;
int Sonsayi = 0;
for (; ; )
{
Sonsayi = sayi % 10;
Console.Write(Sonsayi);
sayi = sayi / 10;
if (sayi <= 0)
return;
}
Ekran cıktısı aşağıdaki gibi.
Perşembe, Ağustos 30
C# Asal Sayı Bulucu
Çok Basit bir yöntem ile asal sayıları (int MaxValue = 2.147.483.647 aşmayacak kadar küçük sayıları) bulabiliyoruz.Daha büyük olan asal sayılar icin ise long, ulong gibi büyük değişkenleri, Sonsuz sayılar içinse kendi tipinizi(Tabi ram sınırı var) yazabilirsiniz.
int sayi = int.Parse(Console.ReadLine()); //Sayıyı Alıyoruz
bool Sonuc = false;
if (sayi % 2 == 0)
Console.WriteLine("Asal Sayı Değil");
else
{
Sonuc = AsalSayiBul(sayi); //Sayıyı Method'a Gonderiyoruz
if (Sonuc == true) //Dönüş Tipi true ise Sonuç Asal Sayı
Console.WriteLine("Asal Sayı");
else
Console.WriteLine("Asal Sayı Değil");
}
static bool AsalSayiBul(int sayi)
{
for (int i = 2; i < sayi; i++)
{
if (sayi % i == 0)
return false;
}
return true;
}
int sayi = int.Parse(Console.ReadLine()); //Sayıyı Alıyoruz
bool Sonuc = false;
if (sayi % 2 == 0)
Console.WriteLine("Asal Sayı Değil");
else
{
Sonuc = AsalSayiBul(sayi); //Sayıyı Method'a Gonderiyoruz
if (Sonuc == true) //Dönüş Tipi true ise Sonuç Asal Sayı
Console.WriteLine("Asal Sayı");
else
Console.WriteLine("Asal Sayı Değil");
}
static bool AsalSayiBul(int sayi)
{
for (int i = 2; i < sayi; i++)
{
if (sayi % i == 0)
return false;
}
return true;
}
C# Mail Gönderme
C# da mail gondermenin çeşitli yolları vardır. Ben bir yolunu sizlerle paylaşıyorum.
SmtpClient cli = new SmtpClient("smtp.gmail.com");
cli.Credentials = new NetworkCredential("MailAdresiniz@gmail.com", "Sifreniz");
cli.EnableSsl = true;
cli.Port = 587;
MailMessage mail = new MailMessage();
mail.To.Add("MailAtilacakAdress");
mail.To.Add("MailAtilacakAdress");// çoğaltılabilir
mail.From = new MailAddress("MailAdresiniz@gmail.com", "Baslık");
mail.Subject = "Konu";
mail.Attachments.Add(new Attachment("c:\\Dosya.rar"));
mail.Body = DateTime.Now.ToString() + "Metin";
cli.Send(mail);
Not: isterseniz "cli.Send(mail)" kısmını try catch bloğuna alıp hata olma durumunu yakalarsınız.
SmtpClient cli = new SmtpClient("smtp.gmail.com");
cli.Credentials = new NetworkCredential("MailAdresiniz@gmail.com", "Sifreniz");
cli.EnableSsl = true;
cli.Port = 587;
MailMessage mail = new MailMessage();
mail.To.Add("MailAtilacakAdress");
mail.To.Add("MailAtilacakAdress");// çoğaltılabilir
mail.From = new MailAddress("MailAdresiniz@gmail.com", "Baslık");
mail.Subject = "Konu";
mail.Attachments.Add(new Attachment("c:\\Dosya.rar"));
mail.Body = DateTime.Now.ToString() + "Metin";
cli.Send(mail);
Not: isterseniz "cli.Send(mail)" kısmını try catch bloğuna alıp hata olma durumunu yakalarsınız.
Salı, Ağustos 28
C# Veri Tipleri
C# Veri Tipleri
Önceden Tanımlı toplam 15 veri tipi vardır. Işaretli (Signed) ve Işaretsiz(Unsigned) olarak 2 ye ayrılırlar. Tam liste ve özellikleri aşağıdadır.- Işaretli(Signed) ; 0 ve 0'dan büyük değer alan veri tipidir.
- Işaretsiz(Unsigned) ; 0'dan küçük, 0 ve 0'dan büyük değer alan veri tipleridir.
Tam Sayı Tipleri
- (sbyte) Kapsamı : -128'den 127
- (byte) Kapsamı : 0'dan 255
- (short) Kapsamı : -32.768'den 32.767
- (ushort) Kapsamı : 0'dan 65.535
- (int) Kapsamı : -2.147.483.648'den 2.147.483.647
- (uint) Kapsamı : 0'dan 4.294.967.295
- (long) Kapsamı : -9.223.372.036.854.775.808'den 9.223.372.036.854.775.808
- (ulong) Kapsamı : 0'dan 18.446.744.073.709.551.615
Ondalık Sayı Tipleri
- (float) Kapsamı : -3,40282e+038f'den 3,40282e+038f
- (double) Kapsamı : -1,79769e+308'den 1,79769e+308
- (decimal) Kapsamı : -79228....35m'den 79228162514264337593543950335m
Yazı Tipleri
- (char) Kapsamı : U0000'den Uffff
- (string) Kapsamı : Bellek ile sınırlı.
- (object) Kapsamı : Herhangi bir veritipini tutabilir.
Tarih Tipi
- (DateTime) Kapsamı : Tüm tarih türlerini tutabilir.
Boolean Tip
- (bool) Kapsamı :True ya da False (Doğru Yanlış) Veri tutabilir.
Kaydol:
Kayıtlar (Atom)