Yararlı Class Ve Metodlar
Sinan Arslan
Merhaba Arkadaşlar ,
Bu bölümde projelerimiz esnasında bize lazım olacak belli başlı classlar ve metodları paylaşıyor olacağım .Tabi bunları projenize eklediğinizde namespace bölümüne dikkat ederek kullanmanızı tavsiye ediyor olacağım.
Mail Gönderme İşlemleri
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net.Mail;
using System.Net;
namespace DuffDunnShoesStore.ToolsWorkers
{
public class Mail
{
public string Konu { get; set; }
public string Mesaj { get; set; }
public int SmtpPort { get; set; }
public string Host { get; set; }
public string Kime { get; set; }
public string Kimden { get; set; }
public NetworkCredential Credential { get; set; }
public string sifre = "sifreniz";// gönderen kişinin mail sifresi
public Mail(string Mailkonusu, string MailMesaji, string KimeGonderilecek)
{
this.Konu = Mailkonusu;
this.Kime = KimeGonderilecek;
this.Host = "smtp.gmail.com";//gmail üzerinden
this.SmtpPort = 587;
this.Mesaj = MailMesaji;
this.Credential = new NetworkCredential("mail adresiniz", sifre);
this.Kimden = "mail adresiniz";
}//Constuctor ile gelen verileri verdiğimiz ayarlar doğrultusunda kullanacaz
public static void Gonder(Mail m)
{
MailMessage e_posta = new MailMessage();
e_posta.From = new MailAddress(m.Kimden);
e_posta.To.Add(m.Kime);
e_posta.IsBodyHtml = true;
e_posta.Subject = m.Konu;
e_posta.Body = m.Mesaj;
SmtpClient smtp = new SmtpClient();
smtp.EnableSsl = true;
smtp.Credentials = m.Credential;
smtp.Port = m.SmtpPort;
smtp.Host = m.Host;
smtp.Send(e_posta);
}// Maili Gönderen Metodmuz
}
}
Türkçe Karakter Sorunu
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace DuffDunnShoesStore.ToolsWorkers
{
public static class Turkce
{
public static string TurkCE(string deger)
{
try
{
deger = deger.Replace("Ü", "U");
deger = deger.Replace("Ş", "S");
deger = deger.Replace("Ğ", "G");
deger = deger.Replace("Ç", "C");
deger = deger.Replace("İ", "I");
deger = deger.Replace("Ö", "O");
deger = deger.Replace("ü", "u");
deger = deger.Replace("ş", "s");
deger = deger.Replace("ğ", "g");
deger = deger.Replace("ç", "c");
deger = deger.Replace("ı", "i");
deger = deger.Replace("ö", "o");
return deger;
}
catch
{
return deger;
}
}
}
}
İnjection İçin Basit bir Metod
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace DuffDunnShoesStore.ToolsWorkers
{
public static class Kontrol
{
public static string Temizle(string gelenKelime)
{
string gelen = gelenKelime.Replace("'", "");
gelen = gelenKelime.Replace("'", "");
gelen = gelenKelime.Replace("!", "");
gelen = gelenKelime.Replace("?", "");
gelen = gelenKelime.Replace("/", "");
gelen = gelenKelime.Replace(",", "");
gelen = gelenKelime.Replace(";", "");
gelen = gelenKelime.Replace("%", "");
return gelen;
}
}
}
MD5 Şifreleme İşlemleri
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Security.Cryptography;
using System.Text;
namespace DuffDunnShoesStore.DalWorkers
{
public class Araclar
{
public static string MD5yapUTF8(string text)
{
MD5 md5 = new MD5CryptoServiceProvider();
//md5 nesnesi türettik.
byte[] bsifre = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(text));
//texti(girilen parolayı) Encoding.UTF8 in GetBytes() methodu ile bir byte dizisine çevirdik.
StringBuilder sb = new StringBuilder();
// string builder sınıfından bir nesne türetip , byte dizimizdeki değerleri
// Append methodu yardımıyla bir string ifadeye çevirdik.
foreach (var by in bsifre)
{
//x2 burda string'e çevirirken vermesini istediğimiz format.
//çıktısında göreceğimiz gibi sayılar ve harflerden oluşucaktır.
sb.Append(by.ToString("x2").ToLower());
}
//oluşturduğumuz string ifadeyi geri döndürdük.
return sb.ToString();
}
public static bool EslestiMi(string girilen, string Sifreli)
{
//Sifreli daha önce sifrelemiş olduğumuz parola. Burda veritabanı kullanacak olursanız
//Sifreli değeri veritabanından çekeceğiniz kullanıcı parolası olacak.
string girileniSifrele = MD5yapUTF8(girilen);
// Kullanıcının giriş yapmak için girdiği parolayı biraz önce yazdığımız method ile
// Hash haline getirdik.
StringComparer sc = StringComparer.OrdinalIgnoreCase;
// StringComparer adından da anlaşıldığı gibi string karşılaştırması yapan bir sınıftır.
// OrdinalIgnoreCase ile eşitse 0 değilse 1 döndürsün dedik .
//sc.Compare() methodu ile iki ifadeyi karşılaştırdık.
if (0 == sc.Compare(girileniSifrele, Sifreli))
{ //ifadeler uyuşuyorsa burası
return true;
}
else
{//ifadeler uyuşmuyorsa burası
return false;
}
}
}
}
Resim İşlemleri Classı
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Drawing;
namespace StokTakipUygulamasi.Fonksiyonlar
{
class Resimleme
{
public Byte[] ResimYukleme(System.Drawing.Image Resim)
{
//jpeg formatındaki veriler database bytearray olarak gönderiliyor
using (MemoryStream ms= new MemoryStream())
{
Resim.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
return ms.ToArray();
}
}
public Image ResimGetirme(byte[] GelenByteArray)
{//gelen bytearray alınıp resim kutusunda göstermek
using (MemoryStream ms = new MemoryStream(GelenByteArray))
{
Image Resim = Image.FromStream(ms);
return Resim;
}
}
}
}
Resim Yukleme ve Kontrol İşlemleri
//Sayfada üst bölümde tanımlanan değişkenler
bool ResimSecilimi = false;
OpenFileDialog Dosya = new OpenFileDialog();//resim işlemi için
void ResimSec()
{//Formatı jpeg olan Resimleri Göstermesi için
Dosya.Filter = "Jpg(*.jpg)|*.jpg|Jpeg(*.jpeg)|*.jpeg";
if (Dosya.ShowDialog() == DialogResult.OK)
{
pcResimKutusu.ImageLocation = Dosya.FileName;
ResimSecilimi = true;
}
}
private void btnResimSec_Click(object sender, EventArgs e)
{
//Eğer Stoklarda kayıt yoksa ilk aşamada hata verecektir .Sebebi üretmiş olduğumuz ıd yi first ile almamız
ResimSec();
}
Girilen Karaktere Soldan Değer Atanıp Otomatik Oluşturulması
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace StokTakipUygulamasi.Fonksiyonlar
{
class Numara
{
Mesajlar msj = new Mesajlar();
public string StokKodNumarasiUret()
{
using (DataBaseDataContext dB = new DataBaseDataContext())
{
try
{
// kaydın numarasını al int cevir bir artır soldan 7 sıfır ekle
int numara = int.Parse((from k in dB.tbl_Stoklars orderby k.ID descending select k).FirstOrDefault().StokKodu);
numara++;
string num = numara.ToString().PadLeft(7, '0');// Soldan 7 sıfır ekle
return num;
}
catch (Exception ex)
{
msj.Hata(ex);
return "00000001";
}
}
}
}
}
Ana Form Kontrol class'ı
private void FormAcikmi(Form AcilacakForm)
{
bool acikmi = false;
for (int i = 0; i < this.MdiChildren.Length; i++)
{
if (AcilacakForm.Name == MdiChildren[i].Name)
{
this.MdiChildren[i].Focus();
acikmi = true;
}
}
if (acikmi == false)
{
AcilacakForm.MdiParent = this;
AcilacakForm.Show();
}
else
{
AcilacakForm.Dispose();
}
}
Bu bölümde projelerimiz esnasında bize lazım olacak belli başlı classlar ve metodları paylaşıyor olacağım .Tabi bunları projenize eklediğinizde namespace bölümüne dikkat ederek kullanmanızı tavsiye ediyor olacağım.
Mail Gönderme İşlemleri
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net.Mail;
using System.Net;
namespace DuffDunnShoesStore.ToolsWorkers
{
public class Mail
{
public string Konu { get; set; }
public string Mesaj { get; set; }
public int SmtpPort { get; set; }
public string Host { get; set; }
public string Kime { get; set; }
public string Kimden { get; set; }
public NetworkCredential Credential { get; set; }
public string sifre = "sifreniz";// gönderen kişinin mail sifresi
public Mail(string Mailkonusu, string MailMesaji, string KimeGonderilecek)
{
this.Konu = Mailkonusu;
this.Kime = KimeGonderilecek;
this.Host = "smtp.gmail.com";//gmail üzerinden
this.SmtpPort = 587;
this.Mesaj = MailMesaji;
this.Credential = new NetworkCredential("mail adresiniz", sifre);
this.Kimden = "mail adresiniz";
}//Constuctor ile gelen verileri verdiğimiz ayarlar doğrultusunda kullanacaz
public static void Gonder(Mail m)
{
MailMessage e_posta = new MailMessage();
e_posta.From = new MailAddress(m.Kimden);
e_posta.To.Add(m.Kime);
e_posta.IsBodyHtml = true;
e_posta.Subject = m.Konu;
e_posta.Body = m.Mesaj;
SmtpClient smtp = new SmtpClient();
smtp.EnableSsl = true;
smtp.Credentials = m.Credential;
smtp.Port = m.SmtpPort;
smtp.Host = m.Host;
smtp.Send(e_posta);
}// Maili Gönderen Metodmuz
}
}
Türkçe Karakter Sorunu
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace DuffDunnShoesStore.ToolsWorkers
{
public static class Turkce
{
public static string TurkCE(string deger)
{
try
{
deger = deger.Replace("Ü", "U");
deger = deger.Replace("Ş", "S");
deger = deger.Replace("Ğ", "G");
deger = deger.Replace("Ç", "C");
deger = deger.Replace("İ", "I");
deger = deger.Replace("Ö", "O");
deger = deger.Replace("ü", "u");
deger = deger.Replace("ş", "s");
deger = deger.Replace("ğ", "g");
deger = deger.Replace("ç", "c");
deger = deger.Replace("ı", "i");
deger = deger.Replace("ö", "o");
return deger;
}
catch
{
return deger;
}
}
}
}
İnjection İçin Basit bir Metod
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace DuffDunnShoesStore.ToolsWorkers
{
public static class Kontrol
{
public static string Temizle(string gelenKelime)
{
string gelen = gelenKelime.Replace("'", "");
gelen = gelenKelime.Replace("'", "");
gelen = gelenKelime.Replace("!", "");
gelen = gelenKelime.Replace("?", "");
gelen = gelenKelime.Replace("/", "");
gelen = gelenKelime.Replace(",", "");
gelen = gelenKelime.Replace(";", "");
gelen = gelenKelime.Replace("%", "");
return gelen;
}
}
}
MD5 Şifreleme İşlemleri
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Security.Cryptography;
using System.Text;
namespace DuffDunnShoesStore.DalWorkers
{
public class Araclar
{
public static string MD5yapUTF8(string text)
{
MD5 md5 = new MD5CryptoServiceProvider();
//md5 nesnesi türettik.
byte[] bsifre = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(text));
//texti(girilen parolayı) Encoding.UTF8 in GetBytes() methodu ile bir byte dizisine çevirdik.
StringBuilder sb = new StringBuilder();
// string builder sınıfından bir nesne türetip , byte dizimizdeki değerleri
// Append methodu yardımıyla bir string ifadeye çevirdik.
foreach (var by in bsifre)
{
//x2 burda string'e çevirirken vermesini istediğimiz format.
//çıktısında göreceğimiz gibi sayılar ve harflerden oluşucaktır.
sb.Append(by.ToString("x2").ToLower());
}
//oluşturduğumuz string ifadeyi geri döndürdük.
return sb.ToString();
}
public static bool EslestiMi(string girilen, string Sifreli)
{
//Sifreli daha önce sifrelemiş olduğumuz parola. Burda veritabanı kullanacak olursanız
//Sifreli değeri veritabanından çekeceğiniz kullanıcı parolası olacak.
string girileniSifrele = MD5yapUTF8(girilen);
// Kullanıcının giriş yapmak için girdiği parolayı biraz önce yazdığımız method ile
// Hash haline getirdik.
StringComparer sc = StringComparer.OrdinalIgnoreCase;
// StringComparer adından da anlaşıldığı gibi string karşılaştırması yapan bir sınıftır.
// OrdinalIgnoreCase ile eşitse 0 değilse 1 döndürsün dedik .
//sc.Compare() methodu ile iki ifadeyi karşılaştırdık.
if (0 == sc.Compare(girileniSifrele, Sifreli))
{ //ifadeler uyuşuyorsa burası
return true;
}
else
{//ifadeler uyuşmuyorsa burası
return false;
}
}
}
}
Resim İşlemleri Classı
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Drawing;
namespace StokTakipUygulamasi.Fonksiyonlar
{
class Resimleme
{
public Byte[] ResimYukleme(System.Drawing.Image Resim)
{
//jpeg formatındaki veriler database bytearray olarak gönderiliyor
using (MemoryStream ms= new MemoryStream())
{
Resim.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
return ms.ToArray();
}
}
public Image ResimGetirme(byte[] GelenByteArray)
{//gelen bytearray alınıp resim kutusunda göstermek
using (MemoryStream ms = new MemoryStream(GelenByteArray))
{
Image Resim = Image.FromStream(ms);
return Resim;
}
}
}
}
Resim Yukleme ve Kontrol İşlemleri
//Sayfada üst bölümde tanımlanan değişkenler
bool ResimSecilimi = false;
OpenFileDialog Dosya = new OpenFileDialog();//resim işlemi için
void ResimSec()
{//Formatı jpeg olan Resimleri Göstermesi için
Dosya.Filter = "Jpg(*.jpg)|*.jpg|Jpeg(*.jpeg)|*.jpeg";
if (Dosya.ShowDialog() == DialogResult.OK)
{
pcResimKutusu.ImageLocation = Dosya.FileName;
ResimSecilimi = true;
}
}
private void btnResimSec_Click(object sender, EventArgs e)
{
//Eğer Stoklarda kayıt yoksa ilk aşamada hata verecektir .Sebebi üretmiş olduğumuz ıd yi first ile almamız
ResimSec();
}
Girilen Karaktere Soldan Değer Atanıp Otomatik Oluşturulması
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace StokTakipUygulamasi.Fonksiyonlar
{
class Numara
{
Mesajlar msj = new Mesajlar();
public string StokKodNumarasiUret()
{
using (DataBaseDataContext dB = new DataBaseDataContext())
{
try
{
// kaydın numarasını al int cevir bir artır soldan 7 sıfır ekle
int numara = int.Parse((from k in dB.tbl_Stoklars orderby k.ID descending select k).FirstOrDefault().StokKodu);
numara++;
string num = numara.ToString().PadLeft(7, '0');// Soldan 7 sıfır ekle
return num;
}
catch (Exception ex)
{
msj.Hata(ex);
return "00000001";
}
}
}
}
}
Ana Form Kontrol class'ı
private void FormAcikmi(Form AcilacakForm)
{
bool acikmi = false;
for (int i = 0; i < this.MdiChildren.Length; i++)
{
if (AcilacakForm.Name == MdiChildren[i].Name)
{
this.MdiChildren[i].Focus();
acikmi = true;
}
}
if (acikmi == false)
{
AcilacakForm.MdiParent = this;
AcilacakForm.Show();
}
else
{
AcilacakForm.Dispose();
}
}
MSSQL String Foksiyonlar
Sinan Arslan
Merhaba Arkadaşlar ,
Bu bölümde MSSQL tarafındaki string foksiyonlarının kullanım şekillerine bakıyor olacağız.
Verilen string ifadenin ASCII kodunu verir.
Kullanım Şekli - ASCII(String Değer)
Örnek: SELECT ASCII ('A')
CHAR()
Verilen sayısal ASCII kodunu karaktere çevirir.
Kullanım Şekli - CHAR(Integer Değer)
Örnek: SELECT CHAR(65)
CHARINDEX()
Cümle içinde aranan kelimenin kaçıncı harften başladığının indexini verir.
Kullanım Şekli – CHARINDEX(Aranacak kelime, cümle)
Örnek: SELECT CHARINDEX('Sinan', 'Merhaba Dünya')
DIFFERENCE()
İki String değer arasındaki farkın kaçıncı karakterden başladığını gösterir.
Kullanım Şekli - DIFFERENCE(stringdeger1, stringdeger2)
Örnek: SELECT DIFFERENCE('Sinan', 'Snn')
LEFT()
String değerin soldan kaç karakter alacağını söyler.
Kullanım Şekli – LEFT(string ifade, int kaç değer alacağı)
Örnek: SELECT LEFT('abcdefg', '2')
LEN()
String ifadenin uzunluk değerini Integer olarak verir.
Kullanım Şekli – LEN(String ifade)
Örnek: LEN(Sinan)
LOWER()
String ifadelerim tüm harflerini küçüğe çevirir.
Kullanım Şekli - LOWER(String ifade)
Örnek: SELECT LOWER('Sinan')
LTRIM()
String ifadede soldaki boşlukları siler ve düzenler.
Kullanım Şekli -LTRIM(String ifade)
Örnek: SELECT LTRIM(' Sinan')
NCHAR()
Çok büyük değerdeki ASCII karekter değerlerini verir.
Kullanım Şekli – NCHAR(int değer)
Örnek: SELECT NCHAR(985)
PATINDEX()
Cümlenin içindeki aranılan harfin kaçıncı indexten başladığını gösterir.
Kullanım Şekli – PATINDEX(aranılacak string, cümle)
Örnek: SELECT PATINDEX ('in' , 'Sinan Arslan')
QUOTENAME()
Cümle içinde özel karakterleri ayırmak için kullanılır.
Kullanım Şekli – QUOTENAME(string ifade)
Örnek: SELECT QUOTENAME('abc[]def')
REPLACE()
Cümle içinde değişecek kelimelerin yerini değiştirir.
Kullanım Şekli – REPLACE(cümle, değişecek cümle, yerine yazılacak cümle)
Örnek: SELECT REPLACE('MahmutGünveren', 'veren', 'alan');
REPLICATE()
Verilen String ifadenin kaç kere tekrar edileceğini gösterir.
Kullanım Şekli – REPLICATE(string değer, int tekrar değeri)
Örnek: SELECT REPLICATE('Sinan ', 4)
REVERSE()
Verilen kelime ya da cümleyi tersten yazar.
Kullanım Şekli – REVERSE(string cümle)
Örnek: SELECT REVERSE('Sinan Arslan')
RIGHT()
Cümle içinde sağdan kaç harf alacağını gösterir.
Kullanım Şekli – RIGHT(string cümle, int değer)
Örnek: SELECT RIGHT('Sinan Arslan', 5)
RTRIM()
Cümle içinde sağdaki boşlukları siler.
Kullanım Şekli - RTRIM(string ifade)
Örnek: SELECT RTRIM('Sinan Arslan ')
SOUNDEX()
String değeri Alfanümerik olarak dönüştürür.
Kullanım Şekli – SOUNDEX(String değer)
Örnek: SELECT SOUNDEX ('Sinan')
SPACE()
Cümle içerisinde ne kadar boşluk bırakılacağını gösterir.
Kullanım Şekli – SPACE(int değer)
Örnek: SELECT 'Sinan' + SPACE (2) + 'Arslan'
STR()
Decimal ifadeleri kaçıncı karaktere yuvarlayacağını gösterir.
Kullanım Şekli – STR(Decimal değer, kaç değer olduğu, virgülden sonra kaç değer yuvarlayacağı)
Örnek: SELECT STR(123.456, 6 , 2)
STUFF()
Cümlenin içine kelime eklemek için kullanılır.
Kullanım Şekli – STUFF(String cümle, başlangıç değer, silinecek değer, eklenecek string)
Örnek: SELECT STUFF ('Sinan Arslan', 3, 4, 'in yazılım')
SUBSTRING()
Cümle içerisinden parça almak için kullanılır.
Kullanım Şekli – SUBSTRING(cümle, başlangıç, int, alınacak değer int)
Örnek: SELECT SUBSTRING ('SinanArslan', 2, 3)
UNICODE()
ASCII kodunu verir.
Kullanım Şekli - UNICODE(Char değer)
Örnek: SELECT UNICODE ('A')
UPPER()
Verilen kelime veya cümleyi büyük harfe çevirir.
Kullanıum Şekli – UPPER(String değer)
Örnek: SELECT UPPER('sinanarslan')
Umarım faydalı olur.Daha fazlası için Tıklayınız
Bu bölümde MSSQL tarafındaki string foksiyonlarının kullanım şekillerine bakıyor olacağız.
Verilen string ifadenin ASCII kodunu verir.
Kullanım Şekli - ASCII(String Değer)
Örnek: SELECT ASCII ('A')
CHAR()
Verilen sayısal ASCII kodunu karaktere çevirir.
Kullanım Şekli - CHAR(Integer Değer)
Örnek: SELECT CHAR(65)
CHARINDEX()
Cümle içinde aranan kelimenin kaçıncı harften başladığının indexini verir.
Kullanım Şekli – CHARINDEX(Aranacak kelime, cümle)
Örnek: SELECT CHARINDEX('Sinan', 'Merhaba Dünya')
DIFFERENCE()
İki String değer arasındaki farkın kaçıncı karakterden başladığını gösterir.
Kullanım Şekli - DIFFERENCE(stringdeger1, stringdeger2)
Örnek: SELECT DIFFERENCE('Sinan', 'Snn')
LEFT()
String değerin soldan kaç karakter alacağını söyler.
Kullanım Şekli – LEFT(string ifade, int kaç değer alacağı)
Örnek: SELECT LEFT('abcdefg', '2')
LEN()
String ifadenin uzunluk değerini Integer olarak verir.
Kullanım Şekli – LEN(String ifade)
Örnek: LEN(Sinan)
LOWER()
String ifadelerim tüm harflerini küçüğe çevirir.
Kullanım Şekli - LOWER(String ifade)
Örnek: SELECT LOWER('Sinan')
LTRIM()
String ifadede soldaki boşlukları siler ve düzenler.
Kullanım Şekli -LTRIM(String ifade)
Örnek: SELECT LTRIM(' Sinan')
NCHAR()
Çok büyük değerdeki ASCII karekter değerlerini verir.
Kullanım Şekli – NCHAR(int değer)
Örnek: SELECT NCHAR(985)
PATINDEX()
Cümlenin içindeki aranılan harfin kaçıncı indexten başladığını gösterir.
Kullanım Şekli – PATINDEX(aranılacak string, cümle)
Örnek: SELECT PATINDEX ('in' , 'Sinan Arslan')
QUOTENAME()
Cümle içinde özel karakterleri ayırmak için kullanılır.
Kullanım Şekli – QUOTENAME(string ifade)
Örnek: SELECT QUOTENAME('abc[]def')
REPLACE()
Cümle içinde değişecek kelimelerin yerini değiştirir.
Kullanım Şekli – REPLACE(cümle, değişecek cümle, yerine yazılacak cümle)
Örnek: SELECT REPLACE('MahmutGünveren', 'veren', 'alan');
REPLICATE()
Verilen String ifadenin kaç kere tekrar edileceğini gösterir.
Kullanım Şekli – REPLICATE(string değer, int tekrar değeri)
Örnek: SELECT REPLICATE('Sinan ', 4)
REVERSE()
Verilen kelime ya da cümleyi tersten yazar.
Kullanım Şekli – REVERSE(string cümle)
Örnek: SELECT REVERSE('Sinan Arslan')
RIGHT()
Cümle içinde sağdan kaç harf alacağını gösterir.
Kullanım Şekli – RIGHT(string cümle, int değer)
Örnek: SELECT RIGHT('Sinan Arslan', 5)
RTRIM()
Cümle içinde sağdaki boşlukları siler.
Kullanım Şekli - RTRIM(string ifade)
Örnek: SELECT RTRIM('Sinan Arslan ')
SOUNDEX()
String değeri Alfanümerik olarak dönüştürür.
Kullanım Şekli – SOUNDEX(String değer)
Örnek: SELECT SOUNDEX ('Sinan')
SPACE()
Cümle içerisinde ne kadar boşluk bırakılacağını gösterir.
Kullanım Şekli – SPACE(int değer)
Örnek: SELECT 'Sinan' + SPACE (2) + 'Arslan'
STR()
Decimal ifadeleri kaçıncı karaktere yuvarlayacağını gösterir.
Kullanım Şekli – STR(Decimal değer, kaç değer olduğu, virgülden sonra kaç değer yuvarlayacağı)
Örnek: SELECT STR(123.456, 6 , 2)
STUFF()
Cümlenin içine kelime eklemek için kullanılır.
Kullanım Şekli – STUFF(String cümle, başlangıç değer, silinecek değer, eklenecek string)
Örnek: SELECT STUFF ('Sinan Arslan', 3, 4, 'in yazılım')
SUBSTRING()
Cümle içerisinden parça almak için kullanılır.
Kullanım Şekli – SUBSTRING(cümle, başlangıç, int, alınacak değer int)
Örnek: SELECT SUBSTRING ('SinanArslan', 2, 3)
UNICODE()
ASCII kodunu verir.
Kullanım Şekli - UNICODE(Char değer)
Örnek: SELECT UNICODE ('A')
UPPER()
Verilen kelime veya cümleyi büyük harfe çevirir.
Kullanıum Şekli – UPPER(String değer)
Örnek: SELECT UPPER('sinanarslan')
Umarım faydalı olur.Daha fazlası için Tıklayınız
Entity Framework
Sinan Arslan
Merhaba Arkadaşlar ,
Bu bölümde Entity Freamwork 'e bir giriş yapıyor olacağız.Yalnız daha öncesinde şunu belirtmek isterimki örneklerimizi bir uygulama üzerinden ele alıyor olacağız.Bu aşamadada ling ile sorgulama işlemlerine değiniyor olacağız.
İlk olarak Object Relational Mapping nedir kısaca bahsedelim.Teknik anlamda basitce değinecek olursak veri tabanında bulunan her bir tabloya karşılık gelecek uygulama tarafında bir nesne oluşturma işlemidir.
Örnek bir kullanıma bakalım.
Şimdide Orm Haline Bakalım
Şimdi ise Ling to sql ile veri tabanı işlemlerine bakalım.
LINQ kelime olarak language Integrated Query yani dil ile bütünleştirilmiş sorgu anlamı taşır.Bildiğiniz gibi veri tabanı işlemleri için SQl kullanmaktaydık.Ve veri tabanımızı dizayn ettikden sonra için yazmış olduğumuz saklı yordamlar ve t-sql sorguları ile projemiz üzerindeki dataları işleyip kullanıcının talepleri doğrultusunda yansıtmaktaydık.İşte linq ile aertık bu sorgulama işlemleri için ayrı bir dil kullanmaya gerek kalmaz ve veri tabanı üzerinde crud(ekleme ,silme,güncelleme)secme gibi işlemleri gerçekleştirebiliriz.
Linq to sql ile .Net sınıfları kullanarak ilişkisel veri tabanları oluşturulabilir.Ve saklı yordamları store procedure ,view gibi yapılarıda kullanmaya imkan verir.
Ling to sql ile modelleme yaklaşımları Üç aşamada incelenebilinir.
Database First,Code First,Model First bunlara kısaca değinelim
Database First:Veri tabanımızı önceden tasaralamış isek veya farklı bir yerde hazır duruyorsa bu modelleme aracı kullanılabilinir.Ve veri tabanındaki tablolarınız classlara columslarınız propertieslere
içersinde bulunan store proclarınız ise metodlara dönüşecektir.
Code First:Modelleme aracının kodları kendisinin üretmesi bazen sorunlar çıkarabilir.(Composite Primary key vs).Bu aşamada yazılımcı Entity Freamwork veri tabanını kendisi oluşturuyor.İlerleyen aşamalarda code first yaklaşımına uygun örnekler blog üzerinden gerek mvc ile gereksede entity freamwork anlatımları sırasında değinilecektir.
Model First:Kod veya Sql sorguları yazmak yerine model oluşturup, bu modeldeki yapılara göre script'ler ve tabloların oluşturulduğu yapıdır.
Mvc üzerinde Ling to Sql Classes ile bir örnek uygulama başlatalım
Giriş uygulamamız açısından orm giriş yapıp bundan sonraki bölümde örnek bir uygulama yapısı içersinden(proje) konu anlatımına devam ediyor olacağız.Umarım faydalı olur
Bu bölümde Entity Freamwork 'e bir giriş yapıyor olacağız.Yalnız daha öncesinde şunu belirtmek isterimki örneklerimizi bir uygulama üzerinden ele alıyor olacağız.Bu aşamadada ling ile sorgulama işlemlerine değiniyor olacağız.
İlk olarak Object Relational Mapping nedir kısaca bahsedelim.Teknik anlamda basitce değinecek olursak veri tabanında bulunan her bir tabloya karşılık gelecek uygulama tarafında bir nesne oluşturma işlemidir.
Örnek bir kullanıma bakalım.
Şimdide Orm Haline Bakalım
Şimdi ise Ling to sql ile veri tabanı işlemlerine bakalım.
LINQ kelime olarak language Integrated Query yani dil ile bütünleştirilmiş sorgu anlamı taşır.Bildiğiniz gibi veri tabanı işlemleri için SQl kullanmaktaydık.Ve veri tabanımızı dizayn ettikden sonra için yazmış olduğumuz saklı yordamlar ve t-sql sorguları ile projemiz üzerindeki dataları işleyip kullanıcının talepleri doğrultusunda yansıtmaktaydık.İşte linq ile aertık bu sorgulama işlemleri için ayrı bir dil kullanmaya gerek kalmaz ve veri tabanı üzerinde crud(ekleme ,silme,güncelleme)secme gibi işlemleri gerçekleştirebiliriz.
Linq to sql ile .Net sınıfları kullanarak ilişkisel veri tabanları oluşturulabilir.Ve saklı yordamları store procedure ,view gibi yapılarıda kullanmaya imkan verir.
Ling to sql ile modelleme yaklaşımları Üç aşamada incelenebilinir.
Database First,Code First,Model First bunlara kısaca değinelim
Database First:Veri tabanımızı önceden tasaralamış isek veya farklı bir yerde hazır duruyorsa bu modelleme aracı kullanılabilinir.Ve veri tabanındaki tablolarınız classlara columslarınız propertieslere
içersinde bulunan store proclarınız ise metodlara dönüşecektir.
Code First:Modelleme aracının kodları kendisinin üretmesi bazen sorunlar çıkarabilir.(Composite Primary key vs).Bu aşamada yazılımcı Entity Freamwork veri tabanını kendisi oluşturuyor.İlerleyen aşamalarda code first yaklaşımına uygun örnekler blog üzerinden gerek mvc ile gereksede entity freamwork anlatımları sırasında değinilecektir.
Model First:Kod veya Sql sorguları yazmak yerine model oluşturup, bu modeldeki yapılara göre script'ler ve tabloların oluşturulduğu yapıdır.
Mvc üzerinde Ling to Sql Classes ile bir örnek uygulama başlatalım
Giriş uygulamamız açısından orm giriş yapıp bundan sonraki bölümde örnek bir uygulama yapısı içersinden(proje) konu anlatımına devam ediyor olacağız.Umarım faydalı olur
13:47
Asp.Net MVC
,
Entity Framework
,
Html.ActionLink
,
Ling to Sql
MSSQL TABLE - VALUED FUNCTION & MULTILINE-STATEMENT TABLE-VALUED FUNCTIONS & INLINE TABLE-VALUED FUNCTIONS
Sinan Arslan
Merhaba Arkadaşlar ,
Bu bölümde Mssql Functions Kullanımının ikinci bölümü ile karşınızdayım .Bu noktada ele alacağımız kavramlar MULTILINE-STATEMENT TABLE-VALUED FUNCTIONS & INLINE TABLE-VALUED FUNCTIONS olacak. Peki ama bunlar ne neden kullanırız gibi sorulara yanıt arıyor olacağız.ve video anlatım içindede belirttiğim gibi yazmış olduğumuz bu functionsların bulundukları yerleri ve üzerinde yapılacak modifikasyon işlemleri için Create ,Alter ,Drop keywordlerinden yararlanabileceğiz
Eğer function Kullanımında yeni iseniz linkden ilk video anlatımıma ve c# nasıl kullanıldığı kısmına bakabilirsiniz Scalar -Valued Functions .
Kullanılan Function Örneği
USE [KuzeyRuzgari]
GO
/****** Object: UserDefinedFunction [dbo].[UrunleriGetirSanal] Script Date: 10/07/2014 22:02:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create function [dbo].[UrunleriGetirSanal](@UrunID int)
returns @SanalTablo table
(ID int,Urunadi nvarchar(40),fiyat money)
as
begin
if @UrunID <0
begin
Insert Into @SanalTablo(ID,Urunadi,fiyat)
Select UrunID,UrunAdi,Fiyat from Urunler--Burda değerler tablo halinde dönecek
end
else if @UrunID>0
begin
Insert Into @SanalTablo (ID,Urunadi,fiyat)
Select UrunID,UrunAdi,Fiyat from Urunler where UrunID=@UrunID
end
else
begin
Insert Into @SanalTablo (ID,Urunadi,fiyat)
Select 0,'Veri yok',10
end
return-- Sanal Tablomu Döner
end
--Kullanım
Select ID,Urunadi,fiyat from UrunleriGetirSanal(-1)
Video Anlatım :
Başka bir örnekle devam edelim.Arama İşlemleri yapabileceğimiz bir örnek senaryo ile tablomuz içinde ki kolonlara atama işlemleri ile geriye tablo dönen bir function yazarak bu işlemleri gerçekleştirelim.Önce sorgumuz ve tablomuz gelsin
Create function fn_StokArama
(
@TipID int,
@StokBarkod nvarchar(30),
@StokAdi nvarchar(50),
@StokKodu nvarchar(20))
returns @SanalTablo table
(ID int,stokbarkod nvarchar(30),stokkodu nvarchar(20),stokadi nvarchar(50))
as
begin
if(@TipID=1)
begin
Insert Into @SanalTablo (ID,stokbarkod,stokkodu,stokadi) Select ID,StokBarkod,StokKodu,StokAdi from tbl_Stoklar where StokKodu like '%'+@StokKodu+'%'
end
else if(@TipID=2)
begin
Insert Into @SanalTablo (ID,stokbarkod,stokkodu,stokadi) Select ID,StokBarkod,StokKodu,StokAdi from tbl_Stoklar where StokAdi like '%'+@StokAdi+'%'
end
else if(@TipID=3)
begin
Insert Into @SanalTablo (ID,stokbarkod,stokkodu,stokadi) Select ID,StokBarkod,StokKodu,StokAdi from tbl_Stoklar where StokBarkod like '%'+@StokBarkod+'%'
end
return
end
Select * from fn_StokArama(1,'','','2')
--Declare @StokKodu nvarchar(20)
--set @StokKodu
--Select ID,StokBarkod,StokKodu,StokAdi from tbl_Stoklar where StokKodu like '%'+@StokKodu+'%'
Şimdi Kullandığımız tbl_Stoklar tablomuzu görelim
Şimdi ise elde edeceğimiz sonucu görelim
Umarım Faydalı olmuştur.
Bu bölümde Mssql Functions Kullanımının ikinci bölümü ile karşınızdayım .Bu noktada ele alacağımız kavramlar MULTILINE-STATEMENT TABLE-VALUED FUNCTIONS & INLINE TABLE-VALUED FUNCTIONS olacak. Peki ama bunlar ne neden kullanırız gibi sorulara yanıt arıyor olacağız.ve video anlatım içindede belirttiğim gibi yazmış olduğumuz bu functionsların bulundukları yerleri ve üzerinde yapılacak modifikasyon işlemleri için Create ,Alter ,Drop keywordlerinden yararlanabileceğiz
Eğer function Kullanımında yeni iseniz linkden ilk video anlatımıma ve c# nasıl kullanıldığı kısmına bakabilirsiniz Scalar -Valued Functions .
Kullanılan Function Örneği
USE [KuzeyRuzgari]
GO
/****** Object: UserDefinedFunction [dbo].[UrunleriGetirSanal] Script Date: 10/07/2014 22:02:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create function [dbo].[UrunleriGetirSanal](@UrunID int)
returns @SanalTablo table
(ID int,Urunadi nvarchar(40),fiyat money)
as
begin
if @UrunID <0
begin
Insert Into @SanalTablo(ID,Urunadi,fiyat)
Select UrunID,UrunAdi,Fiyat from Urunler--Burda değerler tablo halinde dönecek
end
else if @UrunID>0
begin
Insert Into @SanalTablo (ID,Urunadi,fiyat)
Select UrunID,UrunAdi,Fiyat from Urunler where UrunID=@UrunID
end
else
begin
Insert Into @SanalTablo (ID,Urunadi,fiyat)
Select 0,'Veri yok',10
end
return-- Sanal Tablomu Döner
end
--Kullanım
Select ID,Urunadi,fiyat from UrunleriGetirSanal(-1)
Video Anlatım :
Başka bir örnekle devam edelim.Arama İşlemleri yapabileceğimiz bir örnek senaryo ile tablomuz içinde ki kolonlara atama işlemleri ile geriye tablo dönen bir function yazarak bu işlemleri gerçekleştirelim.Önce sorgumuz ve tablomuz gelsin
Create function fn_StokArama
(
@TipID int,
@StokBarkod nvarchar(30),
@StokAdi nvarchar(50),
@StokKodu nvarchar(20))
returns @SanalTablo table
(ID int,stokbarkod nvarchar(30),stokkodu nvarchar(20),stokadi nvarchar(50))
as
begin
if(@TipID=1)
begin
Insert Into @SanalTablo (ID,stokbarkod,stokkodu,stokadi) Select ID,StokBarkod,StokKodu,StokAdi from tbl_Stoklar where StokKodu like '%'+@StokKodu+'%'
end
else if(@TipID=2)
begin
Insert Into @SanalTablo (ID,stokbarkod,stokkodu,stokadi) Select ID,StokBarkod,StokKodu,StokAdi from tbl_Stoklar where StokAdi like '%'+@StokAdi+'%'
end
else if(@TipID=3)
begin
Insert Into @SanalTablo (ID,stokbarkod,stokkodu,stokadi) Select ID,StokBarkod,StokKodu,StokAdi from tbl_Stoklar where StokBarkod like '%'+@StokBarkod+'%'
end
return
end
Select * from fn_StokArama(1,'','','2')
--Declare @StokKodu nvarchar(20)
--set @StokKodu
--Select ID,StokBarkod,StokKodu,StokAdi from tbl_Stoklar where StokKodu like '%'+@StokKodu+'%'
Şimdi Kullandığımız tbl_Stoklar tablomuzu görelim
Şimdi ise elde edeceğimiz sonucu görelim
Umarım Faydalı olmuştur.
ListView CheckBoxes Kullanımı ve Xml Web Servisler
Sinan Arslan
Merhaba Arkadaşlar,
Bu bölümde listview üzerinde bulanan propertylerden CheckBoxes özelliğini kullanarak bir uygulama geliştiriyor olacağız.Asıl amacımız CheckBoxes kullanımına bakmak olacak fakat uygulamamız içinde ele alacağımız senaryoda xmlwebservislere,StreamWriter Sınıfına ,Xml WebConfig dosyası içindeki connectionstring sectionına bakıyor olacağız.
Uygulama içerisinde asıl itibari ile xml webservisden 'den dönen değerleri karşılama bu değerleri alıp işeleyip ListView CheckBoxes Kullanımına değinmek istedim.
Umarım faydalı olur.Uygulamanın sources dosyasını vermek verine uygulamanın tamamnını vererek
ilerliyor oalcağım.Sebebi uygulama içinden birden fazla sayfa olması ve bu sayfalar dışında servisde yapılan metodların bulunması
Servis1.asmx
Video1 :
Video 2:
Video 3:
Bu bölümde listview üzerinde bulanan propertylerden CheckBoxes özelliğini kullanarak bir uygulama geliştiriyor olacağız.Asıl amacımız CheckBoxes kullanımına bakmak olacak fakat uygulamamız içinde ele alacağımız senaryoda xmlwebservislere,StreamWriter Sınıfına ,Xml WebConfig dosyası içindeki connectionstring sectionına bakıyor olacağız.
Uygulama içerisinde asıl itibari ile xml webservisden 'den dönen değerleri karşılama bu değerleri alıp işeleyip ListView CheckBoxes Kullanımına değinmek istedim.
Umarım faydalı olur.Uygulamanın sources dosyasını vermek verine uygulamanın tamamnını vererek
ilerliyor oalcağım.Sebebi uygulama içinden birden fazla sayfa olması ve bu sayfalar dışında servisde yapılan metodların bulunması
Servis1.asmx
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using System.Data.SqlClient; using System.Configuration; using System.Web.Configuration; using System.Net; using System.Data; namespace SinanArslanlsvKullanimi { /// <summary> /// Summary description for Service1 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. // [System.Web.Script.Services.ScriptService] public class Service1 : System.Web.Services.WebService { private string cnnstr = WebConfigurationManager.ConnectionStrings["baglantim"].ConnectionString; [WebMethod] public bool KullaniciVarmi(string KullaniciAdi, string Sifre) { bool sonuc = false; SqlConnection cnn = new SqlConnection(cnnstr); SqlCommand cmd = new SqlCommand("Select * from Kullanici where UserName=@UsName and Password=@Pass", cnn); cmd.Parameters.AddWithValue("@UsName", KullaniciAdi); cmd.Parameters.AddWithValue("@Pass", Sifre); try { if (cnn.State == ConnectionState.Closed) { cnn.Open(); } SqlDataReader rdr = cmd.ExecuteReader(); while (rdr.Read()) { sonuc = true; } rdr.Dispose(); } catch (WebException ex) { string hata = ex.Message; } finally { cnn.Close(); } return sonuc; } [WebMethod] public DataSet KategoriGetir() { DataSet ds = new DataSet(); using (SqlConnection cnn = new SqlConnection(cnnstr)) { DataTable dt = new DataTable("Kategori"); SqlDataAdapter adp = new SqlDataAdapter("Select * from Kategoriler", cnn); adp.Fill(dt); ds.Tables.Add(dt); } return ds; } [WebMethod] public DataSet UrunleriGetir(int type, int KategoriID,string UrunAdi) { DataSet ds = new DataSet(); using (SqlConnection cnn = new SqlConnection(cnnstr)) { SqlCommand cmd = new SqlCommand("UrunleriGetir", cnn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@type", type); cmd.Parameters.AddWithValue("@KategoriID", KategoriID); cmd.Parameters.AddWithValue("@UrunAdi", UrunAdi); DataTable dt = new DataTable("Urunler"); SqlDataAdapter adp = new SqlDataAdapter(cmd); adp.Fill(dt); ds.Tables.Add(dt); } return ds; } } }
================================================================
Form1 Kullanıcı Giriş
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; namespace LsvKullanimi { public partial class Form1 : Form { public Form1() { InitializeComponent(); } ServisSaglayici.Service1 svc = new ServisSaglayici.Service1(); private void Form1_Load(object sender, EventArgs e) { DataSet ds = new DataSet(); ds=svc.KategoriGetir(); cmbKategori.ValueMember = "CategoryID"; cmbKategori.DisplayMember = "CategoryName"; cmbKategori.DataSource = ds.Tables[0].DefaultView; } private void cmbKategori_SelectedIndexChanged(object sender, EventArgs e) { txtKatID.Text = Convert.ToString(cmbKategori.SelectedIndex + 1); } private void btnGiris_Click(object sender, EventArgs e) { if (txtKullaniciAdi.Text == "" || txtSifre.Text == ""||txtKatID.Text=="") { MessageBox.Show("Tüm Alanlar Doldurulmalıdır"); } else {
bool sonuc = svc.KullaniciVarmi(Kontrol.Temizle(txtKullaniciAdi.Text), Kontrol.Temizle(txtSifre.Text)); if (sonuc) { Form2 frm = new Form2(txtKatID.Text); frm.Show(); this.Hide(); } else { MessageBox.Show("Kullanıcı Adi veya Şifre Hatalı"); } } } } } ========================================================= form 2 Verileri Listele Seç
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.IO; namespace LsvKullanimi { public partial class Form2 : Form { public string KategoriID { get; set; } public Form2(string KatID) { KategoriID = KatID; InitializeComponent(); } int tip = 1; ServisSaglayici.Service1 svc = new ServisSaglayici.Service1(); private void Form2_Load(object sender, EventArgs e) { txtGelenID.Text = KategoriID; Doldur(); } private void Doldur() { lsvSonuc.Items.Clear(); DataSet ds = new DataSet(); ds = svc.UrunleriGetir(tip, Convert.ToInt32(KategoriID),txtUrunAra.Text); DataTable dt = new DataTable(); dt = ds.Tables[0]; foreach (DataRow row in dt.Rows) { ListViewItem item = new ListViewItem("Sec"); for (int i = 0; i < dt.Columns.Count; i++) { item.SubItems.Add(row[i].ToString()); } lsvSonuc.Items.Add(item); } } private void btnHepsiniSec_Click(object sender, EventArgs e) { HepsiniSecSil(true); } private void HepsiniSecSil(bool deger) { for (int i = 0; i < lsvSonuc.Items.Count; i++) { lsvSonuc.Items[i].Checked = deger; } } private void btnHepsiniBirak_Click(object sender, EventArgs e) { HepsiniSecSil(false); } private void button1_Click(object sender, EventArgs e) { int tip1 = 2; lsvSonuc.Items.Clear(); DataSet ds = new DataSet(); ds = svc.UrunleriGetir(tip1, Convert.ToInt32(txtGelenID.Text),txtUrunAra.Text); DataTable dt = new DataTable(); dt = ds.Tables[0]; foreach (DataRow row in dt.Rows) { ListViewItem item = new ListViewItem("Sec"); for (int i = 0; i < dt.Columns.Count; i++) { item.SubItems.Add(row[i].ToString()); } lsvSonuc.Items.Add(item); } } private void btnListeGetir_Click(object sender, EventArgs e) {// tüm liste getir Doldur(); } private void button2_Click(object sender, EventArgs e) {//UrunAdına Göre Getir int tip2 = 3; lsvSonuc.Items.Clear(); DataSet ds = new DataSet(); ds = svc.UrunleriGetir(tip2, Convert.ToInt32(txtGelenID.Text), txtUrunAra.Text); DataTable dt = new DataTable(); dt = ds.Tables[0]; foreach (DataRow row in dt.Rows) { ListViewItem item = new ListViewItem("Sec"); for (int i = 0; i < dt.Columns.Count; i++) { item.SubItems.Add(row[i].ToString()); } lsvSonuc.Items.Add(item); } } private void btnYazdir_Click(object sender, EventArgs e) {string gelen1="";string gelen2="";string gelen3=""; int secimsayisi = lsvSonuc.CheckedItems.Count; if (secimsayisi > 0) { for (int i = 0; i < secimsayisi; i++) { ListViewItem secim = lsvSonuc.CheckedItems[i]; gelen1= secim.SubItems[1].Text.ToString(); gelen2 = secim.SubItems[2].Text.ToString(); gelen3=secim.SubItems[3].Text.ToString(); } string dosyayolu =Application.StartupPath+"\\Dosya.txt"; StreamWriter dosyayaz = new StreamWriter(dosyayolu); dosyayaz.WriteLine(gelen1+","+ gelen2+","+ gelen3); dosyayaz.Close(); MessageBox.Show("Veriler Yazıldı"); } } } }
Video1 :
Video 2:
Video 3:
Parallel For Kullanımı C#
Sinan Arslan
Merhaba Arkadaşlar,
Bir yazılımcı için
kodlamış olduğu bir programda en önemli unsurlardan birisi programın hızlı
olmasıdır sanırım. En azından benim için öyle Bu yüzden bu sıralar çokça
ihtiyaç duyduğum hızlı döngüler için standart for döngüsünden çok daha hızlı
çalışan, yazılım hayatımıza .Net Framework 4.0 ile girmiş olan Parallel.for
döngüsünden bahsetmeye karar verdim.
Kavraması ve
uygulaması çok basit olan bu yapı yeri geldiğinde hayat kurtarabilmekte.
Konuyla ilgili örneğimizde çok temel bir örnek üzerinden gidip bir konsol
uygulası üzerinde for ve parallel.for arasındaki farkı göstermeye çalışacağım.
Calculator() isimli
metodta yaptıklarımız açık. Aradaki farkı rahat bir şekilde görebilmemiz için
döngüyü uzun tuttum sadece.
CalculatorParallel()
adlı metodumuzda ise Calculator() adlı metodumuzun içerisindeki aynı işlemleri
yaptık.Programımızı çalıştıralım ve System.Threading.Tasks isim uzayı altında
bulunan paralel for döngümüs klasik for döngüsünden ne kadar hızlıymış görelim
Arada hemen hemen 25
kat fark var görüldüğü gibi. Peki arka planda neler oluyor? İki ayrı metod için
işlemcilerin çalışma yüzdelerine bakalım. Klasik for döngüsü için;
Sıra, paralel for
döngüsünde;
Her iki resimde de
sol üstte görüleceği gibi alışkın
olduğumuz for döngüsü bu işlem için işlemcimizin %23 ünü kullanırken paralel
olarak işleyen for döngümüz işlemcimizin %100 ünü kulanmakta.
Evet
arkadaşlar,böylece uzun süren döngülerimizi çok kolay bir şekilde çok daha
hızlı işletebilmekteyiz.Tabii bunun foreach için olanı da var. Aynı mantık ile
çalıştığı için burada ele almıyorum.Ayrıntılı bilgiyi MSDN den bulabilmeniz
mümkün. Umarım faydalı olmuştur
Uygulama Kodları :
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ForAndParallel { class Program { static void Main(string[] args) { Calculator(); CalculatorParallel(); Console.ReadKey(); } static void Calculator() { double sonuc = 0; Stopwatch sw = new Stopwatch(); sw.Start(); for (int i = 0; i < 999999999; i++) { sonuc += Convert.ToDouble(Math.Sin(i) / Math.Cos(i)); } sw.Stop(); Console.WriteLine("Paralel Olmayan İşlemin bitme süresi : " + sw.Elapsed.TotalMilliseconds.ToString()); } static void CalculatorParallel() { double sonuc = 0; Stopwatch sw = new Stopwatch(); sw.Start(); Parallel.For(0, 99999999, i => { sonuc += Convert.ToDouble(Math.Sin(i) / Math.Cos(i)); }); sw.Stop(); Console.WriteLine("Paralel İşlemin Tamamlanma Süresi : " + sw.Elapsed.TotalMilliseconds.ToString()); } } }
23:39
Mert Turan
,
Parallel For Kullanımı C#
ASENKRON Programlama Giriş
Sinan Arslan
Merhabalar Arkadaşlar,
İlk yazımı sizlerle paylaşmanın heyecanı içerisindeyim. Açıkçası ilk yazımı hangi konuda yazmam gerektiği konusunda bir hayli düşündüm.Çünkü hem yararlı olması hem de anlatamsı kolay konu olması gerekmekteydi.Sonuç olarak c# programa dillerinin bence en büyük nimetlerinden birisi olan asenkron programanın c# 5.0 ile hayatımıza katılan ve senkron metodlarımızı asenkron hale getirmekte bizlere çok çok kolaylık sağlayan asnyc ve await keywordleri üzerinde durmaya ve konunun mantığını anlamaya yardımcı olacak çok temel bir örnek yazmakta karar kıldım.Umarım yararlı olur.
Öncelikle senkron ve asenkron programlama üzerinde duralım. Bilindiği gibi bir kod bloğu içerisinde metodlar yukarıdan aşağıya bir görev sırasında işlemleri gerçekleştirmektedir.Yukarıdaki metod işlemde iken aşağıdaki metoda geçilmez ve beklenir.Bu akış şekline senkron programlama denir.Bu programlama tekniğinin kavranışı ve takibi kolay olmasına rağmen örneğin uzun süren(input output gibi fiziki disk işlemleri,veritabanından büyük miktarda veri çekilmesi vb) işlemlerde kullanıcı arayüzümüz kilitlenir ve cevap veremez duruma gelmektedir.Bu soruna karşı Microsoft ‘un çözümü ise asenkron programlama.Asenkron programada ise bir kod parçası işlenirken aynı zamanda başka bir kod parçası da işlenebilir bu sayede kullanıcı programın bir parçasında işlem yaparken başka bir bölümünde de işlem yapabilir.
Bu kadar ufak bir bilgi yeterli olduktan sonra örneğimize geçebiliriz. Örneğimizi bir Windows application olarak geliştiriyor olacağız.Bu örneğimizde farkı görebilmeniz için aynı kodları senkron ve asenkron çalıştırılması arasındaki farkları görebilmeniz için iki adet buton olacak.Aynı kodları bu butonlar aracılığı ile hem senkron hem async ve await keywordleri yardımıyla asenkron yürüteceğiz.Dizaynımız resimdeki gibi.


Hello metodunun içeriğinde programı çalıştıran threadi 5 saniyeliğine durdurarak program arayüzünün 5 saniyeliğine kullanılamaz olmasını sağladık.Programı çalıştırıp senkron çalış butonuna basıldığında formu oynatmaya çalıştığımızda 5 saniyeliğine oynatamadığımızı,programın cevap vermediğini göreceksiniz

HelloAsync() metodunda yaptıklarımız, yeni bir task tipi oluşturup bu taskın içerisinde Hello() metodunu çağırmak.Planladığımız Hello() metodundaki arayüzü kullanılamaz hale getiren thread bekletme işlemini farklı bir task tipi içerisinde yaptığımız için kullanılıcı arayüzü kullanıcının bu 5 saniyelik süre içerisinde de kullanılabilir olmasını sağlamak.btnAsenron butonunun click eventinde gördüğümüz async anahtar kelimesi bu metodun içerisinde asenkron bir işlemin yapılacağı, metodun içerisindeki await anahtar kelimesi ile de bu keywordden sonra gelen metodun asenkron çağrılacağını CLR a bildirmektir.Programı çalıştırıp asenkron çalış butonuna bastığımızda ise programı çalıştıran threadimiz 5 saniyeliğine bekletilse dahi kullanıcı arayüzü farklı bir task tipi içerisinde işlem gördüğü için formu oynatmaya çalıştığımızda oynatabildiğimizi yani aslında arkada thread uyusa dahi programın bize cevap verdiğini göreceğiz. Sonuç olarak, asenkron programlama Windows application ve Windows phone uygulamaları için hayati önem taşımaktadır.Bu makalemizde üzerinde durmamamıza rağmen bir metodun asenkron olarak çalıştırılabilmesi için Task tipinden bir değer döndürmesi gerekmektedir.Task tipini arayı soğutmadan ele alırız.Okuduğunuz için çok teşekkür eder her türlü sorunuzu mailim üzerinden yollayabileceğiniz gibi yorumlara da yazabileceğinizi belirtmek isterim.Umarım verimli olmuştur.İyi kodlamalar
Uygulama Source :
Proje indir Mert Turan

SENKRON KODLAR

Hello metodunun içeriğinde programı çalıştıran threadi 5 saniyeliğine durdurarak program arayüzünün 5 saniyeliğine kullanılamaz olmasını sağladık.Programı çalıştırıp senkron çalış butonuna basıldığında formu oynatmaya çalıştığımızda 5 saniyeliğine oynatamadığımızı,programın cevap vermediğini göreceksiniz
ASENKRON KODLAR

HelloAsync() metodunda yaptıklarımız, yeni bir task tipi oluşturup bu taskın içerisinde Hello() metodunu çağırmak.Planladığımız Hello() metodundaki arayüzü kullanılamaz hale getiren thread bekletme işlemini farklı bir task tipi içerisinde yaptığımız için kullanılıcı arayüzü kullanıcının bu 5 saniyelik süre içerisinde de kullanılabilir olmasını sağlamak.btnAsenron butonunun click eventinde gördüğümüz async anahtar kelimesi bu metodun içerisinde asenkron bir işlemin yapılacağı, metodun içerisindeki await anahtar kelimesi ile de bu keywordden sonra gelen metodun asenkron çağrılacağını CLR a bildirmektir.Programı çalıştırıp asenkron çalış butonuna bastığımızda ise programı çalıştıran threadimiz 5 saniyeliğine bekletilse dahi kullanıcı arayüzü farklı bir task tipi içerisinde işlem gördüğü için formu oynatmaya çalıştığımızda oynatabildiğimizi yani aslında arkada thread uyusa dahi programın bize cevap verdiğini göreceğiz. Sonuç olarak, asenkron programlama Windows application ve Windows phone uygulamaları için hayati önem taşımaktadır.Bu makalemizde üzerinde durmamamıza rağmen bir metodun asenkron olarak çalıştırılabilmesi için Task tipinden bir değer döndürmesi gerekmektedir.Task tipini arayı soğutmadan ele alırız.Okuduğunuz için çok teşekkür eder her türlü sorunuzu mailim üzerinden yollayabileceğiniz gibi yorumlara da yazabileceğinizi belirtmek isterim.Umarım verimli olmuştur.İyi kodlamalar
Uygulama Source :
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace AsyncAwaitBlog { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnSenkron_Click(object sender, EventArgs e) { Hello(); } private void Hello() { Thread.Sleep(5000);//Threadi 5 saniye uyutarak programın çalışmasını durdurduk. MessageBox.Show("Merhaba!"); } private Task HelloAsync() { return Task.Factory.StartNew(() => { Hello(); }); } private async void btnAsenkron_Click(object sender, EventArgs e) { await HelloAsync(); } private void Form1_Load(object sender, EventArgs e) { } } }
Proje indir Mert Turan
13:26
ASENKRON Programlama
,
Mert Turan
Xml Nedir
Sinan Arslan
Merhaba Arkadaşlar ;
Bu bölümde daha önceden xml web serviceleri anlatırken kısaca değindiğimiz xml'i ele alıp işliyor olacağız
Xml Nedir?
Kullanmış olduğumuz xml
Dailymotion 'la yaşadığım sorun üzerine uygulamanın source kısmını paylaşıyorum.
Video 1 :
Xml Nedir Nasil Kullanilir Giris Videosu paylaşan: sinan-d-arslan-1
Video 2:
Xml Nedir Bolum 2 paylaşan: sinan-d-arslan-1
Video :3
Xml Nedir Bolum 3 paylaşan: sinan-d-arslan-1
Bu bölümde daha önceden xml web serviceleri anlatırken kısaca değindiğimiz xml'i ele alıp işliyor olacağız
Xml Nedir?
Bağımsız bir kuruluş olan W3C (World Wide Web Consortium) organizasyonu tarafından tasarlanan ve herhangi bir kurumun tekelinde bulunmayan XML (eXtensible Markup Language), kişilerin kendi sistemlerini oluşturabilecekleri, kendi etiketlerini tanımlayarak çok daha rahat ve etkin programlama yapabilecekleri ve bu belirlenen etiketleri kendi yapıları içerisinde standardize edebilecekleri esnek, genişleyebilir ve kolay uygulanabilir bir meta dildir.
Dailymotion 'la yaşadığım sorun üzerine uygulamanın source kısmını paylaşıyorum.
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.Xml; using System.Xml.XPath; using System.Data.SqlClient; using System.IO; namespace XmlNedirNasilKullanilir { public partial class Form1 : Form { public Form1() { InitializeComponent(); } string dosyayolu = Application.StartupPath + "\\Urunler.xml"; private void btnVerioku_Click(object sender, EventArgs e) { DataSet ds = new DataSet(); ds.ReadXml(dosyayolu); dgvSonuc.DataSource = ds.Tables["Urun"]; } private void btnVeriAra_Click(object sender, EventArgs e) { XmlDocument xmldoc = new XmlDocument(); xmldoc.Load(dosyayolu); XmlNode secilenNode = xmldoc.ChildNodes[1]; foreach (XmlNode item in secilenNode) { if (item.Attributes["UrunID"].Value == "53") { MessageBox.Show("Aranan Urun " + item.ChildNodes[0].InnerText + " \n" + item.ChildNodes[1].InnerText); break; } } } private void btnxpat_Click(object sender, EventArgs e) { XmlDocument xmldoc = new XmlDocument(); xmldoc.Load(dosyayolu); XmlNode secilennode = xmldoc.SelectSingleNode("Urunler/urun[@UrunID=53]"); if (secilennode != null) { MessageBox.Show("Aranan Urun " + secilennode.ChildNodes[0].InnerText + " \n" + secilennode.ChildNodes[1].InnerText); } } private void btnVeriGuncelle_Click(object sender, EventArgs e) { XmlDocument xmldoc = new XmlDocument(); xmldoc.Load(dosyayolu); XmlNode secilennode = xmldoc.SelectSingleNode("Urunler/urun[@UrunID=53]"); if (secilennode != null) { secilennode.ChildNodes[0].InnerText = "Deneme"; xmldoc.Save(dosyayolu); MessageBox.Show("Veri Güncellendi"); } else { MessageBox.Show("Bir Hata oluştu"); } } private void btnSil_Click(object sender, EventArgs e) { XmlDocument xmldoc = new XmlDocument(); xmldoc.Load(dosyayolu); XmlNode secilennode = xmldoc.SelectSingleNode("Urunler/urun[@UrunID=53]"); if (secilennode != null) { xmldoc.DocumentElement.RemoveChild(secilennode); xmldoc.Save(dosyayolu); MessageBox.Show("Silme İşlemi Başarılı"); } } private void btnVeriEkle_Click(object sender, EventArgs e) { XmlDocument xmldoc = new XmlDocument(); xmldoc.Load(dosyayolu); XmlElement eklenecekelement = xmldoc.CreateElement("urun"); XmlAttribute ekatb = xmldoc.CreateAttribute("UrunID"); ekatb.Value = "999"; eklenecekelement.Attributes.Append(ekatb); XmlNode xadi = xmldoc.CreateNode(XmlNodeType.Element, "UrunAdi", ""); xadi.InnerText = "Deneme1"; eklenecekelement.AppendChild(xadi); XmlNode xfiyat = xmldoc.CreateNode(XmlNodeType.Element, "Fiyat", ""); xfiyat.InnerText = "999"; eklenecekelement.AppendChild(xfiyat); xmldoc.DocumentElement.AppendChild(eklenecekelement); xmldoc.Save(dosyayolu); MessageBox.Show("Ekleme İşlemi Başarılı"); } private void btnXpathArama_Click(object sender, EventArgs e) { XPathDocument xmldoc = new XPathDocument(dosyayolu); XPathNavigator xnav = xmldoc.CreateNavigator(); XPathNodeIterator secilenNode = xnav.Select("Urunler/urun/UrunAdi"); string metin = ""; while (secilenNode.MoveNext()) { if (secilenNode.Current.InnerXml.StartsWith("S")) { metin+=secilenNode.Current.InnerXml+"\n"; MessageBox.Show(metin); } } } private void button1_Click(object sender, EventArgs e) { SqlConnection cnn = new SqlConnection("Server=.;Database=KuzeyRuzgari;trusted_connection=true"); SqlDataAdapter adp = new SqlDataAdapter("Select * from Urunler", cnn); DataTable dt = new DataTable("Urun"); adp.Fill(dt); DataSet ds = new DataSet("Urunler"); ds.Tables.Add(dt); FolderBrowserDialog fd = new FolderBrowserDialog(); DialogResult dr = fd.ShowDialog(); if (dr == DialogResult.OK) { ds.WriteXml(fd.SelectedPath + "\\SqldenXml.xml"); MessageBox.Show("Veriler xmle yazıldı"); } else { MessageBox.Show("Yer Secilmedi"); } } private void btnxmltosql_Click(object sender, EventArgs e) { FolderBrowserDialog fd = new FolderBrowserDialog(); DialogResult dr = fd.ShowDialog(); if (dr == DialogResult.OK) { string dosya = fd.SelectedPath + "\\SqldenXml.xml"; if (File.Exists(dosya)) { SqlConnection cnn = new SqlConnection("Server=.;Database=KuzeyRuzgari;trusted_connection=true"); SqlDataAdapter adp = new SqlDataAdapter("Select * from Urunler", cnn); SqlCommandBuilder ck = new SqlCommandBuilder(adp); DataSet ds = new DataSet(); ds.ReadXml(dosya); adp.Update(ds.Tables[0]); MessageBox.Show("Veriler Veri Tabanına Eklendi"); } else { MessageBox.Show("Hata İle Karşılaşıldı"); } } else { MessageBox.Show("Onaylanmadı"); } } } }
Video 1 :
Xml Nedir Nasil Kullanilir Giris Videosu paylaşan: sinan-d-arslan-1
Video 2:
Xml Nedir Bolum 2 paylaşan: sinan-d-arslan-1
Video :3
Xml Nedir Bolum 3 paylaşan: sinan-d-arslan-1
13:51
SqltoXml
,
Xml
,
XmlAttribute
,
XmlDocument
,
XmlElement
,
XmlNode
,
XmltoSql
,
XPathDocument
,
XPathNavigator
,
XPathNodeIterator
Kaydol:
Kayıtlar
(
Atom
)











