7 Ekim 2013 Pazartesi

Csharp Anahtar Kelimeler (Keywords) Yazı Dizisi - Lock Kullanımı

merhaba,

bu makalede csharp içerisindeki lock deyimini ve bu deyimin ne işe yaradığını incelemeye çalışacağız;


Lock özellikle çok kanallı programlama esnasında kullanılır.Lock içerisindeki işlemler bitmeden diğer işlemler yapılmaz.Thread uygulamalarında lock ile belirtilen işlemler önce yapılır diğerleri sıraya sokulur.Lock içerisindeki işlem bitmeden tekrardan Lock çalıştırılamaz.

private Object Kilit = new Object(); -- Lock Nesnemizi Oluşturalım

lock (Kilit)
{
List.Add("Deger");
}

Şeklinde Kullanılır.

C# Anahtar Kelimeler(Keywords) Yazı Dizisi - Checked ve Unchecked

Merhaba,

bu makalemizde c# dilinde yer alan anahtar kelimelerden(keywords) bazılarını inceleyeceğiz;ne işe yaradıklarını öğrenecek ve her biri için bir adet küçük örnek yapacağız.



Checked ve Unchecked : Bu Operatör tür dönüşümlerini kontrol altında tutmak için kullanılır.Tür dönüşümlerinin yapılabilirliliğini kontrol eder.Yapılamazsa overflow verir ve değişkenlerin eski değerini korur.unchecked; checked içerisinde kontrol etmek istemediklerimiz için kullanılır.

int i=5;
byte c;
checked
{
b=(byte)i;
unchecked
{
c=(byte)a;
}
}


İmplicit ve Explicit : Implicit ve Explicit operator ile bir tipin başka bir tipe çevrilebilirliğini sağlayabiliriz.Base bir class'tan türeyen iki farklı class ı birbirlerine dönüştürmeye yarar.Cannot implicitly convert type x to x hatasinin çözümü bu şekilde sağlanır.

public class Musteri
{
public int DogumYili{ get; set; }
public string Cinsiyet{ get; set; }
}

Şimdi Müşteri class'ımızın bir örneğini yaratalım ve değişkenlerini set edelim;

Musteri _musteri=new Musteri();

Class İçerisindeki DogumYili değerini bir int değişkene atmaya çalışalım.
int Yil=DogumYili;    -->bu satırda  Cannot implicitly convert type Musteri to Int Hatası alırız.


public class Currency
{
public int DogumYili{ get; set; }
public string Cinsiyet{ get; set; }
public static implicit operator decimal(Musteri c)
{
return c.Value;
}
}
yukarıdaki şekilde kullanımda bu sorunu aşabilir ve dönüşüm işlemini gerçekleştirebiliriz.




17 Eylül 2013 Salı

Devexpress - CheckedListBox Kullanımı (DataBound Bağlantılı)

Merhabalar,


bu makalede devexpress'in checkedListbox kullanımına değinecek ve databound şeklinde nasıl kullanacağımızı öğrenmeye çalışacağız.bilindiği üzere checkedlistbox kontrolü sayesinde birden fazla özellik arasından çeşitli seçimler yapabiliyoruz.Özellikle çoklu seçim yapılabilen işlemlerde Microsoft'un standart kontrollerine göre çok daha efektif çalıştığını söyleyebilirim.lafı fazla uzatmadan bu nesnenin üzerinde yaptığımız işlemleri veri tabanına nasıl yansıtırız onu inceleyelim;


Bir form açıp checkedlistbox atalım ve Dock özelliğini 'True' hale getirelim.



Sırada veritabanımızdan ilgili dataları çekip kontrole bağlamamız kaldı.Formumuzun Load Kısmına gelip aşağıdaki kodları yazıyoruz.
SqlConnection con = new SqlConnection(@"Data Source=.\;Initial Catalog=test_db;Integrated Security=True");
con.Open();
SqlCommand command = new SqlCommand("SELECT musteri_adi,Aktif FROM musteri", con);
SqlDataReader reader = null;
reader = command.ExecuteReader();
while (reader.Read()) checkedListBoxControl1.Items.Add(new CheckedListBoxItem(reader["musteri_adi"].ToString(), (bool)reader["Aktif"]));
reader.Close();
con.Close();


Bu kısmın üzerinde çok fazla durmak istemiyorum bu makalede.Data işlemleri ile ilgili diğer makalelerimde geniş bilgi bulabilirsiniz.Load kısmında her Datarow için CheckedListbox kontrolüne yeni bir
item ekliyoruz,Value Özelliğini ve CheckState durumunu veritabanından aldığımız DataRow değerlerine göre ayarlıyoruz.Sonuçta Aşağıdaki Görüntüyü elde etmemiz gerekiyor.

Şimdide Değişiklikleri veritabanımıza yansıtacak olan kod bloğunu yazalım;

checkedListBoxControl'ün ItemCheck event'ına aşağıdaki kod bloğunu yazıyor;

SqlConnection con = new SqlConnection(@"Data Source=.\;Initial Catalog=test_db;Integrated Security=True");
con.Open();
SqlCommand command = new SqlCommand("UPDATE musteri SET Aktif='" + Convert.ToBoolean(e.State) + "' WHERE musteri_adi='" + checkedListBoxControl1.GetItemValue(e.Index) + "'", con);
command.ExecuteNonQuery();
con.Close();
Örnek olması açısından mümkün olduğunca basit tuttum örneği anlaşılır olması açısından.siz daha farklı şekillerde kullanımını sağlayabilirisiniz.



Bir Sonraki Makalemizde Görüşmek Üzere

3 Eylül 2013 Salı

SQL Server Mail Hizmetini Kullanmak

Merhaba;

Bu makalemde sql server üzerinden nasıl mail gönderebileceğimiz konusunda bilgi sahibi olmaya çalışacağız.bilgi sistemleri ortamında haberleşmenin temel yollarından birisi de e-mail dir kuşkusuz.büyük çapta bir proje geliştiriyorsanız kullanıcıları mail ile çeşitli konularda bilgilendirmek isteyebilirsiniz.bu makalenin yazımında bu kriter göz önüne alınmıştır.


SQL Server ortamında mail gönderebilmek için kullanabileceğimiz sp_sendmail Prosedürü bulunmaktadır.Bu prosedür SQL Server ile beraber gelmektedir.Prosedürü kullanabilmek için Database Management içerisinden Database Mail özelliğini aktif etmeniz ve geçerli bir hesap tanımı yapmanız gerekmektedir.Lakin prosedür tarafından gönderilen mailler bu Mail hesabı üzerinden gitmektedir. "Send Test Mail" diyerek hesap ayarlarınızın doğruluğunu kontrol edebilmeniz mümkündür.


Aşağıdaki T-SQL Kod parçası sp_sendmail fonksiyonunun kullanımına Örnektir;


CREATE TRIGGER [dbo].[MailTrigger] 
ON [dbo].[FATURALAR]
AFTER INSERT -- hangi işlemlerde triggerin çalışacağını belirliyoruz, insert, update, delete gibi
AS
DECLARE @SiraNo INT
DECLARE @FaturaNo NVARCHAR(50)
DECLARE @Icerik NVARCHAR(50)
BEGIN

Select @SiraNo = SiraNo From Inserted
Select @FaturaNo = Cari From Inserted
set @Icerik =CAST(@SiraNo AS NVARCHAR) + 'Numaralı Fatura Ödemesi Gerçekleştirildi'

exec msdb.dbo.sp_send_dbmail
@profile_name='MAILPROFILE',
@recipients='ALICI ADRESLERİ','ALICI ADRESİ2','ALICI ADRESİ3'
@subject='EMAİL KONUSU',
@body=@Icerik -- EMAİL İÇERİĞİ
END
GO

Burada Bir Mail trigger'ı tanımlanmış ve FATURALAR tablosuna atanmıştır.Faturalar tablosuna yapılan kayıt(INSERT) sonrasında mail trigger'ı faaliyete geçecek ve "recipients" kısmında belirtilen mail adreslerine Tanımladığınız Mail Hesabı üzerinden mail gönderimi yapacaktır.

Bu Makalenin konusu olmamakla birlikte madem yazdık o zaman hatırlatmasınıda yapalım ;
Select @SiraNo = SiraNo From Inserted
Select @FaturaNo = Cari From Inserted

After INSERT Trigger'ı tanımladığımız için "From Inserted" tanımlaması ile INSERT edilen kaydın ilgili kolonlarındaki bilgileri almış olduk.

Bu Makalede yanlızca Database Mail üzerinden Mail gönderimii incelenmiş ve Database Mail Yapılandırmasını bildiğiniz varsayılmıştır.Database Mail yapılandırması için Aşağıdaki Kaynaklara Göz atabilirsiniz.



Visual C# - .NET Otomatik Class Oluşturma

Merhaba;

Bildiğiniz üzere c# %100 nesne yönelimli bir programlama dili.haliyle herşey bir nesneden ibaret.programlama yaparken nesnesel bir yapı kullandığımızdan dolayı çoğu kez veritabanındaki tablolara karşılık gelen classlar oluşturmamız gerekir.Bir takipçimin isteği üzerine hazırlamış olduğum aşağıdaki t-sql kod bloğu sayesinde parametre olarak verdiğiniz tablo adına ait kolonları sizlere field olarak getirebilmektedir.



CREATE FUNCTION [dbo].[CLASS_Olustur](@TabloAdi AS NVARCHAR(50)) RETURNS @DonusTablo  TABLE(Name NVARCHAR(50))
AS BEGIN
INSERT INTO @DonusTablo(Name)
SELECT * FROM (
SELECT 'Public '+CASE
WHEN TipAd='nvarchar' then 'string'
WHEN TipAd='char' then 'char'
WHEN TipAd='nchar' then 'char'
WHEN TipAd='varchar' then 'string'
WHEN TipAd='sysname' then 'string'
WHEN TipAd='xml' then 'string'
WHEN TipAd='image' then 'string'
WHEN TipAd='date' then 'DateTime'
WHEN TipAd='datetime' then 'DateTime'
WHEN TipAd='smalldatetime' then 'DateTime'
WHEN TipAd='tinyint' then 'bool'
WHEN TipAd='smallint' then 'bool'
WHEN TipAd='real' then 'decimal'
WHEN TipAd='money' then 'decimal'
WHEN TipAd='float' then 'decimal'
WHEN TipAd='bit' then 'bool'
WHEN TipAd='text' then 'string'
WHEN TipAd='int' then 'int'
WHEN TipAd='bigint' then 'UInt64'
WHEN TipAd='decimal' then 'decimal'
END +' '+KolonAd+';' AS Degisken
FROM(SELECT col.name AS KolonAd,tip.name AS TipAd FROM sys.all_columns AS col
INNER JOIN sys.tables AS tp ON
col.object_id=tp.object_id AND tp.name=@TabloAdi
INNER JOIN sys.types AS tip ON
col.user_type_id=tip.user_type_id) AS VW1) AS VW2
RETURN END

GO





Paylaşımlarınızda lütfen kaynak belirtiniz.Emeğe Saygı.....
Kolay Gelsin.


17 Ağustos 2013 Cumartesi

Netsis OS Yükleyici Kilidi Hatası ve Çözümü

netopenx dll'i ile visual studio üzerinde program geliştirmeye çalıştığınızda Aşağıdaki Hatayı Alabilirsiniz;


"OS Yükleyici kilidi içinde yönetilen yürütme girişiminde bulunuluyor. DllMain veya görüntü başlatma işlevi içinde yönetilen kod çalıştırma girişiminde bulunmayın, aksi durumda uygulamanın kilitlenmesine neden olabilir."


Bu Hatanın 2 Çözümü vardır;

  • Uygulamanızı Build Ettikten Sonra bin/Debug klasörü içerisindeki .exe'den Çalıştırabilirsiniz.
  • Visual Studio "Debug" Menüsünden "Exceptions\Managed Debugging Assistans" içerisindeki LoaderLock Property'sinin "Thrown" Özelliğini False Olarak Değiştirebilirsiniz.,


2. Çözüm çok daha mantıklı.çünkü debug yapabilirsiniz.


Kolay Gelsin.

16 Ağustos 2013 Cuma

SQL Server Basit Sql Sorguları

Bu yazımda basit sql sorgulamalarından bahsedeceğim.

Basit SQL sorgulamaları kayıtlar için SELECT, İNSERT, DELETE ve UPDATE komutlarından oluşur. Adlarındanda anlaşılacağı gibi;
select: Kayıtları seçmeye yarar
insert: yeni bir kayıt eklemeye yarar
delete: veritabanından herhangi bir kayıt silmeye yarar
update: Tabloda bulunan bir kayıt’ı güncelleme veya değiştirme amacı ile kullanılır.



Bunun yanında birde veritabanı nesneleri için kullanılan ALTER, DROP, CREATE komutlarıda mevcuttur. Bu komutlar çok fazla kullanılmamak ile birlikte bilmemiz gereken komutlardır. Çoğumuz veritabanı üzerinde işlem yaparken arayüzü kullanarak database table gibi nesneler oluşturur veya düzenleriz. Tabi ki arka planda bu komutların çalıştığını bilmeli, yeri geldiğindede komut ile bu işlemleri yapabileceğimiz uygulamalar yazabilmeliyiz.

alter: RDBMS’de bulunan herhangi bir nesneyi DÜZENLEMEK için kullanılır.
drop: RDBMS’de bulunan herhangi bir nesneyi SİLMEK için kullanılır.
create: RDBMS’de bulunan herhangi bir nesneyi OLUŞTURMAK için kullanılır.

Yazımda öncelikle alter,drop ve create komutlarınlarının kullanımını basit şekilde anlatıp select insert delete ve update komutlarına geçeceğim.

CREATE Komutu

Yukarıdada bahsettiğim gibi bir nesne oluşturmak için kullanılır. Biraz daha açıklayıcı olalım,
Bir veritabanı oluşturmak istiyorum. Adı ise deneme olsun.

create database deneme

Bir tablo oluşturmak istiyorum. adı uyeler olsun. tablonun alanları isim telefon ve aciklama olsun. Birde benzsersiz kimlik bilgisi için id kolonum olucak.

use deneme - diyerek hangi database’yi kullanacağımı belirtiyorum.
create table uyeler (

id int unsigned not null auto_increment primary key,
isim varchar(45),
telefon varchar(20),
aciklama text
);

DROP Komutu

Drop komutu bir nesneyi silmek için kullanılır.
bir veritabanını silmek istiyorum.

drop database deneme

bir table silmek istiyorsam ise

drop table uyeler



ALTER Komutu

Alter kullanımı T-SQL konusu olduğu için burada bahsedip kafa karıştırmayacağım. Bununla ilgili bilgiye aşağıdaki linkden yada birgün yazacağım T-SQL kategorisindeki ilgili makalemden ulaşabilirsiniz.

http://msdn.microsoft.com/tr-tr/library/ms174269(v=sql.100).aspx – İlgili MSDN sayfası





SELECT, İNSERT , UPDATE VE DELETE KOMUTLARI

SELECT Komutu

Select komutu bir tablomuzdan kayıt çekmemizi sağlar.Veritabanı sorgulamaları yaparken öncelikle ne işlem yapacağımızı berlitmemiz gerekir. Örneğin okuma işlemi yapacaksak;

select diye başlamalayız. Sonrasında tablomuzda hangi field’ları yani hangi sütunları istediğimizi söylemeliyiz.

id,isim,telefon gibi field’larımızı belirttikden sonra ise hangi tablomuzdan bu verileri çağıracağımızı belirtmeliyiz. bunun için from deyimi kullanılır. FROM deyimi, herhangi bi işlemi hangi tablo üzerinde gerçekleştireceğimizi belirtmemize yarar. Standart kalıp…

from uyeler diyerek uyeler tablomuzdan veri çekiceğimizi söyledik. Son olarak sorgumuzun geldiği durum;

select id,isim,telefon from uyeler Bakın bu kadar basit işte…

Not: Eğer tablonun her sütununu çekmek istersek * sembölünü kullanabiliriz. Bu sembol aynı zamanda SQL’de “Hepsi” anlamına gelmektedir.

Örneğin;
select * from uyeler



INSERT Komutu

İnsert komutu ise bir tabloya veri eklemek amacı ile kullanılmaktadır. Bu komutun çok çeşitli kullanımları vardır, tabi bu kullanımların sonucu aynı olsada yerine göre hangisi kolayımıza gidiyorsa onu kullanırız.

Basit bir insert işleminde, select’de ve her sorguda olduğu gibi önce insert işlemi yapacağımızı bildiriyoruz.

insert bu noktada artık veritabanı bizim insert yapacağımızı biliyor. Şimdi hangi tabloya yapacağımızı söyleyeceğiz. bunun için into komutu kullanılır.

into uyeler artık RDBMS bizim uyeler tablosuna bir kayıt ekleyeceğimizi biliyor. Şimdi hangi field’ların bu işden etkileneceğini, yani hangi field’ların verilerini göndericeğimizi söyleyeceğiz.

(isim,telefon) diyerek isim ve telefon field’larına veri göndereceğimi açıklamış oldum. Şimdi ise yapmam gereken hangi veriler? değerlerimizi bildireceğiz. Bunun için values deyimi kullanılarak veriler gönderilir.

values(“Can”,”0123456789″) Buradada verilerimizi bildirmiş olduk. Dikkat edilmesi gereken bir husus; Tamsayı veri tipli alanlarımız için tırnak işareti kullanılmamalıdır. String tipli veriler için ise tırnak işareti kullanılmalıdır. Burada id sütunumun değerini göndermedim, auto_increment özelliği atadığım için otomatik artacaktır. Bu özelliğe detaylı olarak daha sonra değineceğiz…

son olarak sorgumuzun yapısı şu şekilde olucaktır;

insert into uyeler(isim,telefon) values(“Can”,”0123456789″)

Başka bir kullanım;

insert into uyeler values (”,”Can”,”0123456789″,”Bu bir açıklama yazısıdır”)
Bu şekil kullanımda ise her field’ ın değerini vermek zorundayız…

UPDATE Komutu

Bu komut tabloda bir veri yada bir grup veriyi düzenlemek amacı ile kullanılır. Her zaman ki gibi önce veritabanına bir güncelleme işlemi yapacağımızı update ile bildiriyor, sonrasında hangi tablomuz için kullanıcağımızı söylüyoruz.

update uyeler buradan sonra yapmamız gereken değişecek field’lar ve yerine yazılacak değerleri göstermemiz gerekiyor. bu işlemi yapmak içinde set kelimesi ile bildiride bulunuyoruz.

set isim=’Can’, telefon=’0123456789′ gibi. Sorgumuzun son durumu ise;

update uyeler set isim=’Can’, telefon=’0123456789′
şeklinde olucaktır.

Unutmayın! update ve delete işlemlerinde where kelimesi kullanılmaz ise tablonun tüm kayıtları etkilenecektir. Çünkü veritabanı sizin bu güncelleme veya düzenleme işlemini hangi kayıt üzerinde yapacağını bilemez. Ayrıca; where komutununda etkileyeceği kayıtları göz önünde bulundurarak sql kodunuzu yazınız. Örneğin tek bir kayıt etkilenecek ise mutlaka benzersiz bir sütun adı tanımlayın.

DELETE Komutu

Diğer komutlar gibi delete komutunda da öncelikle veritabanına silme işlemi yapacağımızı söylemeliyiz. Örneğin;

delete Sonrasında hangi tablo üzerinde kayıt siliceğimizi söylemeliyiz.

delete from uyeler Burdada uyeler tablosundan kayıt sil demek istedik.

Fakat bu şekilde tüm kayıtları sileceği için where deyimi ile tanımlayacağımız kriterlere sahip verileri sil diyebiliriz. Örneğin;

delete from uyelere where id=1
Şeklinde… Yada;

delete from uyelere where isim=’Can’
Gibi….





Bu Yazımızda basit sql komutlarını anlamış olduk. Biraz uygulama, deneme yanılma yöntemleri ile öğrendiklerimizi uygulamamız gerekiyor ki, daha sonra unutmayalım :)

Bir sonraki dersimde where deyimini anlatacağım. Görüşmek üzere…

Devexpress GridControl - Satır Kilitleme (Row Lock)

Merhaba;


GridControl üzerinde satır kitleme işlemini gerçekleştirebilmek için GridView nesnesinin ShowingEditor Event'ını Kullanmamız gerekiyor.Aşağıda Paylaştığım Kod Bloğu ile bu işlemi kolaylıkla gerçekleştirebilirsiniz.


if ((Convert.ToString(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["Kod"])) == "Deger1" || (Convert.ToString(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["Kod"])) == "Deger2"))) 
e.Cancel = true;


Kısaca Özetlersek;

seçili Satırdaki Kod Kolonunun Değerini Alır,
Kolon Değeri "Değer1" veya "Değer2" ye eşitse Satır Kilitlenir.



e.Cancel=true;  
Kilitleme İşlemini Gerçekleştirir.



Hepinize Kolay Gelsin.
Can Çevikoğlu








2 Ağustos 2013 Cuma

Devexpress GridControl - Çoklu Satır Seçimi (Row Multiselect)

Merhaba;
bu yazımda devexpress gridcontrol üzerinde çoklu seçim işleminin nasıl yapılacağını kısaca inceleme imkanımız olacak.


GridControl üzerinde çoklu seçim işleminin yapılabilmesi için öncelikle MultiSelect özelliğinin True olarak ayarlanması gerekmektedir.Çoklu seçim işlemini nasıl yapmak istiyorsanız, MultiSelectMode Özelliğini İstediğiniz gibi değiştirebilirsiniz.satır seçimi için RowSelect,Hücre Seçimi için CellSelect olarak ayarlayabilirsiniz.



Oluşturduğumuz formumuza 1 adet GridControl 1 Adet Button Nesnesi atalım.butona tıkladığımızda GridView üzerinde seçtiğimiz satırlardaki SiraNo değerlerini ekrana mesaj olarak verdirelim;


İlk Adımda Bu Seçenekleri ayarlamalıyız.ben satır bazlı seçim üzerinden gideceğim.siz istediğiniz şekilde değiştirebilirsiniz;


gridView1.OptionsSelection.MultiSelect = true;
gridView1.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.RowSelect;


private void simpleButton1_Click(object sender, EventArgs e)
{

//Seçili satırların RowHandle değerlerini tutmak için int türden bir dizi tanımlıyoruz.
int[] RowHandles=gridView1.GetSelectedRows();


//foreach ile bu RowHandle'lar içerisinde dönerek istediğimiz işlemi gerçekleştiriyoruz.
foreach (int i in RowHandles)
{
MessageBox.Show(gridView1.GetRowCellValue(i, gridView1.Columns["SiraNo"]).ToString());
}

}



İşte Bu Kadar Basit.siz daha da geliştirerek farklı uygulamalar yapabilirsiniz.


Kolay Gelsin.





15 Temmuz 2013 Pazartesi

Devexpress Gridview GetFocusedRowCellValue (Seçili Satırdan Değer Almak)

Merhaba;

Devexpress ASPxGridview'da seçili satırdan istediğimiz değeri almak için şu kod bloğunu kullanabiliriz ;

ASPxGridView1.GetRowValues(ASPxGridView1.FocusedRowIndex, "KolonAdı")

Seçili kolona ait değeri bu şekilde alabiliriz.Tek değer verebileceğimiz gibi hiç değer de vermeyebilir,veya string Array olarak da tanımlayabiliriz.hiç değer vermezsek seçili satırın tüm kolonlarını getirecektir.

12 Temmuz 2013 Cuma

C# - Akıcı Kodlama ve Bellek Yönetimi Üzerine

Merhaba;

hepimizin bildiği gibi csharp gerek kullanım kolaylığı gerekse güncel bir programlama dili olması sebebiyle yazılım dünyasının en çok tercih ettiği Programlama dilleri arasında geliyor.Microsoft'un sağladığı desteğin yanı sıra İnternette bulabildiğimiz birçok kaynak (tabi başta MSDN), %100 OOP olması ve .NET Framework'ün güçlü yapısı C#'ın neden bu kadar tercih edildiğini anlatmaya yetiyor aslında.Fakat sadece Programlama dili bilmek uygulama geliştirmek için yeterli olabilirmi acaba? veya projenizin taslağını oluşturmanız,kafanızda "evet bu iş böyle olur" diyebilmeniz gerçekten uygulama geliştirmek için yeterlimidir ? eminim bu soruya her biriniz farklı cevaplar verebilirsiniz fakat benim cevabım kesinlikle "Hayır".

C#'ta Akıcı Kodlama Önerileri

Initializer Kullanın ; Initializer kullanımı kodlarınızın daha rahat okunmasını ve kod yığınının ortadan kalkmasını sağlar.Örnek vermek Gerekirse;
Button btn = new Button();
btn.Text = "Metin";
Yerine;

Button btn = new Button() { Text = "Metin" };
Şeklinde Kullanabilirsiniz.

Gereksiz Event ve Fonksiyon Yığınından Kaçının;
Eğer uygulamanız Visual Application ise arka plandaki iş yapmayan Event'ları veya metodları temizleyin.Yine kullandığınız Eventlardaki Kullanmadığınız Değişkenleri (object sender) gibi silerek daha performanslı uygulamalar yazabilirsiniz.

CAST Kullanımına Öncelik verin; tekrar tekrar değişkenler oluşturmak yerine eğer kodunuz cast işlemi görebiliyorsa değişken tanımlamak yerine cast işlemini yapabilirsiniz.


Dispose Kullanımı; nesneler ve nesnelere bağlı işlemlerde mutlaka dispose metodunu kullanın.dispose metodu; oluşturduğunuz nesnelerin işleri bittiğinde nesnelerin Garbage Collector tarafından bellekten silinmesini sağlar.

Fazla Sayıda Try-Catch Bloklarından Kaçının ; Try - Catch Blokları çoğu zaman işimizi görse de program içerisinde fazla sayıda kullanıldığında performans kaybına sebep olur.geliştirdiğiniz programın yapısını düzgün şekilde kurmak yazılımsal anlamda try-catch kullanımını azaltacağı için performans artışı sağlayacaktır.

Using Kullanımını Sağlayın;
nesnelerinizi oluştururken using deyimi ile oluşturursanız,nesneleriniz işleri bittiğinde otomatik olarak Garbage Collector Tarafından bellekten silinecektir.bu sayede ekstradan dispose kullanmanıza gerek kalmaz. Örneğin;
using(MyClass sinif=new MyClass()) { sinif.Ad="asd"; sinif.Lokasyon="İzmir"}

Açık Bağlantıları Mutlaka Kapatın;
Genellikle veritabanı işlemlerinde sıkça yapılan hatalardan bir tanesi de açılan bağlantıların kapatılmamasıdır.açık bağlantılar arka tarafta yığılmaya yol açabilir.Bu; hem client tarafında yavaşlamaya yol açar hemde SQL Server'ı gereksiz yere meşgul eder.

Static Metodlar ; Örneğini oluşturmanızın gerek olmadığı nesnelerin tipini static olarak vermek eğer bu nesneden başka bir örnek oluşturmaya ihtiyacınız yok ise mutlaka gereklidir.Oluşturduğunuz her nesne için bellekte ayrı bir bölge kullanılacağından (Programsal Mantığınıza Göre) bir defa kullanılacak bir nesnenin static olması performans artışı sağlayacaktır.


String.Format Kullanımı ; Özellikle parametre olarak verdiğiniz stringlere String.Format uygulamak,hem kodlamanızın daha düzgün çalışmasını sağlayacak,hemde kodlarınızın okunuşunu daha rahat hale getirerek akıcı kodlama sağlayacaktır size.Yine aynı şekilde başka bir programcı da bu sayede sizin yazmış olduğunuz kodlar üzerinde daha rahat işlem yapabilir hale gelecektir.


Yukarıda belirttiğim aklıma gelen maddeler hariç sizlere tavsiye edebileceğim DXCore var bu işler ile ilgilenen.Devexpress Eklentisinin Kodlama işlemleri ile ilgili bir Tool'u. kendim kullanıyorum sizede tavsiye ediyorum.açıkçası manuel yapmak zorunda olduğumuz bir çok işi tek tıklama ile gerçekleştirebiliyoruz.Kodlama yaparken yukarıda saydığım maddeleri göz önünde bulundurmanız ve bunları kullanmaya alışmanız sizlere birçok konuda fayda sağlayacaktır diye düşünüyorum.


İyi Çalışmalar
Can Çevikoğlu
Yazılım Uzmanı















8 Temmuz 2013 Pazartesi

Visual C# - Zip İşlemleri

Merhaba; Bu yazımızda c# ortamında zip işlemlerinin nasıl yapıldığını inceleyeceğiz.bildiğiniz gibi winrar,7z gibi sıkıştırma programları günlük hayatta çokça kullandığımız türden uygulamalar. özellikle büyük boyutlardaki verilerimizi saklarken oldukça sık ihtiyacını hissediyoruz.bu makaleyi okuduktan sonra c# ortamında dosya sıkıştırma işlemlerinin ne kadar basit olduğunu görmüş olacağız.

öncelikle zip işlemlerinin yapılabilmesi için bunu sağlayan dll dosyasını projemize referans olarak eklememiz gerekiyor.
Buradan ilgili DLL'i indirebilir ve projenize referans olarak ekleyebilirsiniz.

şimdi gelelim kodlama kısmına;


seçtiğiniz dosyayı ziplemek için ;

using (ZipFile zip = new ZipFile())
{

zip.AddFile(@"Chrysanthemum.jpg");
zip.Save(@"C:\MyZipFile.zip");
}

zip.AddFile = oluşturmak istediğiniz ZİP Klasörüne dosya eklemek için kullanabilirsiniz.AddFiles ile tek satırda birden çok dosya ekleyebilmeniz mümkün.
Save = Oluşturduğunuz dosyaları barından ZİP Klasörünün kaydedileceği Lokasyonu seçmenizi sağlar.
Comment= zip dosyasına yorum ekleyebilmenizi sağlar.
CompressionMethod = Sıkıştırma Metodunuzu belirlemek için kullanılır. - BZip2,Deflate ve None olmak üzere 3 seçenek barındırır.
Password = oluşturduğunuz zip arşivine şifre eklemek için kullanılır.




Mevcut Zip Arşivini açmak için ;
using (ZipFile zip1 = ZipFile.Read(@"C:\Users\USER\Desktop\BAKISERP.zip"))
{
foreach (ZipEntry e in zip1)
{
e.Extract(@"C:\Users\USER\Desktop\zipcikar", ExtractExistingFileAction.OverwriteSilently);
}
}

ExtractExistingFileAction class'ı çıkartma işleminin yöntemini belirler.



işte csharp kullanarak zip arşivleri oluşturmak ve yönetmek bu kadar kolay.birçok özelliği var tabii hepsini burada paylaşmak zor.kendiniz deneyerek rahatlıkla öğrenebilirsiniz.

herkese kolay gelsin iyi çalışmalar.Bir sonraki makalede Görüşmek Üzere.


Can Çevikoğlu
.Net Yazılım Uzmanı










26 Haziran 2013 Çarşamba

C# Reflection Kullanımı

Reflection(Yansıma) .NET ortamındaki yapılara çalışma zamanı (Run-time) esnasında erişebilmemizi sağlayan bir yapıdır.reflection sayesinde classlar içerisinde dolaşabilir,içerdikleri yapılar hakkında bilgi alabilir ve değer alış verişinde bulunabilirsiniz.Özellikle çok sayıda field veya metod içereden class'lar ile çalışırken çok işinize yarayacaktır.



reflection işlemini yapabilmek için System.Reflection Kütüphanesini projemize dahil etmemiz gerekiyor.
using System.Reflection;
Basit Bir Class oluşturalım ;


public class KimlikBilgileri
{
private string Ad;

public string Ad1
{
get { return Ad; }
set { Ad = value; }
}
public string Soyad;



public int Topla(int sayi1,int sayi2)
{
return sayi1 + sayi2;
}



}


gördüğünüz gibi class yapımızda 2 adet field,1 adet property ve 1 adet fonksiyon bulunuyor.şimdi reflection kullanarak bu class içerisinde nasıl gezineceğimizi basitçe inceleyelim.

KimlikBilgileri kimlik = new KimlikBilgileri();



FieldInfo[] fields = kimlik.GetType().GetFields();
foreach (var fieldinfo in fields)
{
listBox1.Items.Add("Değişken Adı : " + fieldinfo.Name +" " + fieldinfo.FieldType);

}
yukarıdaki kod bloğu örneğini oluşturduğumuz KimlikBilgileri Class'ının içerisindeki Field'lara erişimi Sağlar. ve dönen değeri Listbox'a Atar.




Aşağıdaki Kodlama Yukarıda örneğini oluşturduğumuz Class içerisindeki Property'ler üzerinde işlem yapmamızı Sağlar.
PropertyInfo[] propinfo = kimlik.GetType().GetProperties();

foreach (var prop in propinfo)
{
MessageBox.Show(prop.Name + "----" + prop.PropertyType);



}


ve son olarakta Class içerisindeki Metodlarımıza şu şekilde Erişebiliriz;
MethodInfo[] metodInfo = kimlik.GetType().GetMethods();


foreach (var metod in metodInfo)
{
//MethodBody body = metod.GetMethodBody();
ParameterInfo[] param=metod.GetParameters();

for (int i = 0; i < param.Length; i++)
{
MessageBox.Show(param[i].Name+Environment.NewLine + param[i].ParameterType);
}

}



şimdilik buraya kadar.Reflection konusu geniş bir konu.ben burada sadece bazı özelliklerini paylaştım.kullandıkça ne kadar çok özelliğinin olduğunu zaten sizde görebileceksiniz.









17 Haziran 2013 Pazartesi

CommandBuilder Nedir?, Nasıl Kullanılır?

CommandBuilder nesnesi Ado.Net mimarisi içerisinde bulunan ve veri tabanı işlemlerimizi kolaylaştırmak için Microsoft Tarafından Geliştirilmiş bir nesnedir.amacı tekil tablolarda otomatik sql sorguları üretmektir.CommandBuilder Çoklu yani Relation İçeren tablolarda Kullanılmaz.Bizim yerimize DataAdapter'a bağlı olduğu tablo bazında sql sorguları üretmek için kullanılır.Çok Fazla detaya girmeden hemen bir örnek verelim ;



MySqlCommandBuilder builder = new MySqlCommandBuilder();
builder.DataAdapter = odaTableAdapter.Adapter;
odaTableAdapter.Fill(oda_ds.oda);
odaTableAdapter.Adapter.DeleteCommand = builder.GetDeleteCommand();
odaTableAdapter.Adapter.InsertCommand = builder.GetInsertCommand();
odaTableAdapter.Adapter.UpdateCommand = builder.GetUpdateCommand();



yukarıdaki kodlamada ilk olarak CommandBuilder nesnesi yaratılıyor.Ardından CommandBuilder nesnesinin hangi dataAdapter nesnesini referans alacağını yani hangi dataAdapter'a bağlanacağını seçiyoruz.
daha sonra Adapter nesnemizin Delete,Update ve Insert Komutlarına CommandBuilder tarafından üretilen Sorgular Atanıyor.Ben bu örnekte DataSet kullandığım için Select Sorgusunu bağlamayı gerek görmedim.Dataset Kullanıyorsanız(ki tavsiye etmiyorum) zaten Fill Metoduyla DataAdapter Select Sorgusunu otomatik olarak generate Ediyor.

6 Haziran 2013 Perşembe

GridControl - Kolon Genişliklerini Ayarlamak

merhaba;

gridcontrol üzerinde çalışırken bütün kolonların; kolon adlarını ve içerdikleri hücre değerlerinin tam olarak görünmesini sağlamak için ilgili formun load kısmına aşağıdaki kodu yapıştırmanız yeterlidir.

for (int i = 0; i < gridView2.Columns.Count; i++) gridView2.Columns[i].BestFit();


Kolay Gelsin.

4 Haziran 2013 Salı

Visual C# - Kayıt Defteri (Registry) İşlemleri

Herkese Merhaba;


bu dersimizde C# Dilini kullanarak registry yani kayıt defteri işlemlerini nasıl yapabileceğimizi inceleyeceğiz.C# ile registry işlemlerini yapabilmemiz için win32.dll'i projemize referans göstermemiz gerekiyor.registry ağacının CurrentUser Kısmında Software altında bir klasör açacak ve içerisinde okuma/yazma işlemlerini gerçekleştireceğiz.


öncelikle projemize Registry işlemlerini yapabilmek için win32.dll'i ekliyoruz.

using Microsoft.Win32;

RegistryKey reg = Registry.CurrentUser.CreateSubKey("Software\\REGTEST", RegistryKeyPermissionCheck.ReadWriteSubTree) 
reg isminde CurrentUser bölümünde bir registry nesnesi yarattık ve bu nesneyi Software\\REGTEST klasörüne eşitledik.yani şuanda reg nesnesi CurrentUser\Software lokasyonundaki REGTEST klasörünün yansıması.

CreateSubKey
- Belirtilen lokasyonda subkey yani alt anahtar oluşturmamıza yarar.eğer belirtilen lokasyonda alt anahtar mevcutsa verilen permission yani izin tipine göre anahtarı okumak veya yazmak için açar.



reg.SetValue(kullaniciadi,"can çevikoğlu", RegistryValueKind.String);
belirtilen anahtara değer atamak için kullanılır.kullaniciadi isimli anahtar oluşturur,can çevikoğlu değerini string türünde kaydeder.SetValue değer atamak için kullanılır.


reg.GetValue(Anahtar)
adı verilen ahtardaki değeri almak için kullanılır.GetValue fonksiyonu parametre olarak aldığı string anahtar adına ait değeri kullanıcıya geri verir.


tüm bunları toplayıp fonksiyon haline getirirsek ortaya şöyle bir yapı çıkacaktır.


Değer atama işlemleri için ;


public static void SetValue(string Anahtar, string Deger)
{
using (RegistryKey reg = Registry.CurrentUser.CreateSubKey("Software\\REGTEST", RegistryKeyPermissionCheck.ReadWriteSubTree))
{
reg.SetValue(Anahtar, Deger, RegistryValueKind.String);
}
}

bu fonksiyon anahtar parametresine aldığı anahtar adında bir anahtar oluşturur ve Değer parametresi ile oluşturduğu bu anahtara değer atar.




public static string GetValue(string Anahtar, string YokiseDeger = "anahtaryok")
{
string qreturn =YokiseDeger;
using (RegistryKey reg = Registry.CurrentUser.CreateSubKey("Software\\BAKISERP", RegistryKeyPermissionCheck.ReadWriteSubTree))
{
qreturn = (string)reg.GetValue(Anahtar);
reg.Close();
}
return qreturn;
}
bu fonksiyon da yine Anahtar Parametresine aldığı parametreyi anahtarlar içerisinde arar,eğer ilgili anahtar kayıtlı ise değerini döndürür,anahtar yok ise "anahtaryok" string'ini döndürür.


win32 dll'i içerisinde birçok fonksiyon bulunmakla beraber temel işlemler için yukarıdaki fonksiyonlar kullanılabilir.

28 Mayıs 2013 Salı

C# - MobilDev üzerinden SMS Gönderimi

merhaba.bu yazımda sizlere mobildev firmasının sağladığı SMS API üzerinden nasıl sms gönderebileceğimizi inceleyeceğiz.bu işlem için WebRequest sınıfından faydalanabileceğiz.






WebRequest request = WebRequest.Create("http://gateway.mobilus.net/com.mobilus");
request.Method = "POST";

string postData = "kullaniciadiniz-bayikodunuzşifreniz0mesaj icerigi05543332211";

byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";

request.ContentLength = byteArray.Length;

Stream dataStream = request.GetRequestStream();

dataStream.Write(byteArray, 0, byteArray.Length);

dataStream.Close();

WebResponse response = request.GetResponse();

MessageBox.Show(((HttpWebResponse)response).StatusDescription);

dataStream = response.GetResponseStream();

StreamReader reader = new StreamReader(dataStream);

string responseFromServer = reader.ReadToEnd();

MessageBox.Show(responseFromServer);

reader.Close();
dataStream.Close();
response.Close();

yukarıdaki kod parçasının ilgili yerlerini doldurduğunuz zaman mobildev üzerinden sms gönderimi yapabilirsiniz.

9 Mayıs 2013 Perşembe

GridControl Kolonlara Özet Bilgi (Summary) Ekleme

gridcontrol üzerinde genellikle parasal veya sayısal kolonlarda; toplam,ortalama vb. özellikleri görebileceğimiz ve gridcontrol nesnemizin footer bölümünde bulunan alanlara summary yani özet bilgi diyoruz.


Not :GridControl üzerinde özet bilgi görüntüleyebilmek için Gridcontrol Footer görünür olmak zorundadır.Run Designer sekmesinden Footer'ı aktif edebilirsiniz.


Aşağıdaki kodlar yardımıyla gridcontrol üzerine özet bilgi ekleyebilmeniz mümkün;

gridView1.Columns["toplam"].Summary.Add(DevExpress.Data.SummaryItemType.Sum, "toplam", "Toplam : {0:C2}");

yukarıdaki kod gridcontrol üzerindeki "toplam" kolonuna "Toplam : xxx miktar" şeklinde özet bilgi ekler.

SummaryItemType özelliği özet bilginizin tipini belirtir;

Sum : ilgili kolonun bilgilerinin toplamını verir.parasal toplamlar gibi.
Max : Kolondaki en yüksek değeri verir.
Min : Kolondaki en düşük değeri verir.
Count : Kayıt Sayısını verir.
Average : Ortalama verir.
None : Özet bilgi işlemini pasif yapar.








Devexpress XtraPrinting - DevExpress Yatay Raporlama

Merhaba;

bazen çalıştığınız uygulamada çıktı almanız gerekebilir.az bilgi bulunan veya tasarımı normal sayfalara göre yapılmış raporlarda bir sıkıntı yaşanmasada; genellikle bir datatable,dataset veya gridcontrol gibi dinamik veri nesnelerinde çok sayıda bilgi bulunabileceğinden raporlamada sıkıntılar çıkabiliyor.satır veya sütunlar sayfaya sığmayabiliyor.bunun çözümü de yazdırma işleminin kağıt üzerinde yatay şekilde yapılmasından yani landscape reporting işleminden geçiyor.

devexpress bizlere bunun için 2 adet nesne sunuyor.

bunlardan biri PrintingSystem : adındanda anlaşılacağı gibi bu nesne yazdırma işlemi ile ilgili olayları ve döküman ile ilgili işlemleri kapsıyor.

PrintableComponentLink : kağıt seçimi,belge adı,export işlemleri gibi aktiviteleri bu nesne sayesinde yapabiliyoruz.

aşağıdaki kod bloğu gridcontrol üzerindeki verinin pdf formatında yatay olarak çıktısını verir.

  PrintingSystem ps = new PrintingSystem();
PrintableComponentLink link = new PrintableComponentLink(ps);
link.Component = gridControl1;
link.Landscape = true;
link.CreateDocument();
link.PrintingSystemBase.ExportToPdf("C:\dokuman.pdf");

Devexpress - 3 Adımda Uygulama Bazlı Dinamik LookandFeel Değişikliği

devexpress ile yaptığımız projelerde bazen çalışma zamanında(runtime) temanın değiştirilebilmesini isteyebiliriz.son kullanıcı istediği zaman combobox'ta listelediğimiz temaları programa uygulayabilir ve birdahaki değişikliğe kadar aynı temalayı kullanabilir.aşağıda göreceğimiz örnek ile bunu nasıl yapabileceğimizi göreceğiz;

öncelikle projemize bir adet settings dosyası ekliyoruz.kullanıcının seçtiği temanın adını buraya kaydedeceğiz.bu sayede 2. bir değişikliğe kadar proje en son seçilen tema ile kullanılacak.


bir form oluşturuyor ve bu forma;

1 adet combobox,
1 adet button
1 adet defaultBarAndDockingController ekliyoruz.

Not : defaultBarAndDockingController kontrolü seçili lookandfeel özelliğinin uygulama bazlı olmasını sağlar.bunun için formunuzun lookandfeel özelliğini skin olarak ayarlamanız gerekmektedir.

Not : Listelenen bazı LookandFeel skin'leri BonusSkin olarak geçer ve bunları kullanabilmek için  projenize ilgili versiyonun BonusSkins.dll dosyasını eklemeniz gerekir.Bu İşlemi program.cs dosyasına ;
DevExpress.UserSkins.BonusSkins.Register();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
kodlarını ekleyerek yapabilirsiniz.

1- form load olayında combobox değişkenimize tema adlarını dolduruyoruz.
private void lookandfeel_Load(object sender, EventArgs e)
{
this.comboBoxEdit1.Properties.Items.AddRange(new object[] {
"Metropolis",
"Money Twins",
"DevExpress Style",
"DevExpress Dark Style",
"VS2010",
"Seven Classic",
"Office 2010 Blue",
"Office 2010 Black",
"Office 2010 Silver",
"Office 2013",
"Coffee",
"Liquid Sky",
"London Liquid Sky",
"Glass Oceans",
"Stardust",
"Xmas 2008 Blue",
"Valentine",
"McSkin",
"Summer 2008",
"Pumpkin",
"Dark Side",
"Springtime",
"Foggy",
"High Contrast",
"Seven",
"Sharp",
"Sharp Plus",
"The Asphalt World",
"Whiteprint",
"Caramel",
"Lilian",
"iMaginary",
"Black",
"Office 2007 Blue",
"Office 2007 Black",
"Office 2007 Silver",
"Office 2007 Pink",
"Blue",
"Darkroom",
"Blueprint",
"Metropolis Dark"});
}


2 - Button nesnemizin click olayına aşağıdaki kodları yazıyoruz.
//seçtiğimiz tema adını settings dosyasına taşıyoruz
Properties.Settings.Default.lookandfeel = comboBoxEdit1.SelectedText;
//settings dosyasındaki değişikliği kaydediyoruz
Properties.Settings.Default.Save();
// değiştirdiğimiz temanın projemizdeki tüm formlarda aktif olmasını sağlıyoruz.
defaultBarAndDockingController1.Controller.LookAndFeel.Style = DevExpress.LookAndFeel.LookAndFeelStyle.Skin;
// uygulayacağımız temayı defaultBarAndDockingController nesnemize atıyoruz.
defaultBarAndDockingController1.Controller.LookAndFeel.SkinName = Properties.Settings.Default.lookandfeel.ToString();

3 - proje açılışında en son seçilen aktif temanın kullanımı;

program.cs dosyamız içerisinde yapacağımız tanımlama ile en son seçilen aktif temayı program açılırken formlara uyguluyoruz.
mainForm frm = new mainForm();
frm.defaultBarAndDockingController1.Controller.LookAndFeel.Style = DevExpress.LookAndFeel.LookAndFeelStyle.Skin;
frm.defaultBarAndDockingController1.Controller.LookAndFeel.SkinName = Properties.Settings.Default.lookandfeel;

Bu makalede 3 adımda LookandFeel Teknolojisinin profesyonel olarak nasıl kullanılabileceğini görmeye çalıştık hepinize iyi çalışmalar.





Nasıl Yapılır? 2 - GridControl Dışa Aktarma (Exporting)

merhaba;

bazen gridcontrol üzerindeki verilerimizi farklı formatlarda dışa aktarmaya(exporting) ihtiyaç duyabiliriz.devexpress bu konuda gridcontrol nesnesine oldukça güzel özellikler eklemiş.Başlıca Export seçenekleri ;

  • ExportToCsv()  -
  • ExportToExcelOld()
  • ExportToHtml()
  • ExportToHtmlOld()
  • ExportToMht()
  • ExportToPdf()
  • ExportToRtf()
  • ExportToText()
  • ExportToXls()
  • ExportToXlsx()

Her birinin kullanımı hemen hemen aynı olduğu için sadece birinin üzerinde güzel bir örnek vereceğim.yapacağımız uygulamada gridcontrol'ü dolduracak,contextmenu ekleyerek gride atayacak ve çalışma esnasında kullanıcı grid üzerinde sağ tuş ile açılacak olan menüden gridcontrol içeriğini pdf olarak istediği lokasyona kaydedebilecek.

formumuza

  • 1 adet gridcontrol
  • 1 adet ContextMenuStrip
  • 1 adet SaveFileDialog 

ekleyelim.

gridcontrol ü veritabanınıza bağlayıp verileri çektiğinizi varsayıyorum.bunun için diğer makalelerimde bilgi bulabilirsiniz.


ContextMenu içeriğine "PDF'e Aktar" isminde bir menü ekleyelim.

contextmenu bileşenini gridcontrol'e bağlamak için;
gridControl1.ContextMenuStrip = contextMenuStrip1;

ContextMenu bileşeninin oluşturduğumuz "PDF'e Aktar" seçeneğine çift tıklayalım ve kodlarımızı yazalım ;
private void pdfOlarakAktarToolStripMenuItem_Click(object sender, EventArgs e)
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
saveFileDialog1.Filter = "(*.pdf)|*.pdf";
saveFileDialog1.FilterIndex = 0;
saveFileDialog1.Title = "PDF Olarak Aktar";
saveFileDialog1.InitialDirectory = path;
saveFileDialog1.ShowDialog();

gridView1.ExportToPdf(saveFileDialog1.FileName);
}

kısaca özetlemek gerekirse;
path ile savefiledialog açılışında masaüstünün görünmesini sağladık.
saveFileDialog1.Filter : savefiledialog penceresinde yanlızda pdf uzantılı dosyaları gösterdik.

saveFileDialog1.FilterIndex : birden fazla uzantı göstermek isteseniz aktif olarak hangisini kullanacağınızı burdan belirleyebilirsiniz.

saveFileDialog1.Title : Pencere Başlığını Ayarladık.

saveFileDialog1.InitialDirectory : ilgili konum ataması yaptık. yani Environment.GetFolderPath(Environment.SpecialFolder.Desktop) ile dönen masaüstü yolunu savefiledialog nesnesine atadık ki açılışta masaüstünü göstersin.

saveFileDialog1.ShowDialog() : pencereyi açtık.

gridView1.ExportToPdf(saveFileDialog1.FileName) : kullanıcının seçtiği lokasyona seçtiği isim le gridview'ın pdf formatında export işlemini gerçekleştirdik.

bu makalemizin de sonuna geldik.Sağlıcakla Kalın.








Nasıl Yapılır ? - DataTable İçerisinde Arama Yapmak ve Hücre Değerlerini Değiştirmek

merhaba;

bazen gridcontrol içerisindeki verilerde değişiklik yapmak isteyebiliriz.bu işlem için birden fazla yöntem bulunmakla birlikte bu makale bu işlemi en basit ve farklı bir yoldan nasıl yapabiliriz onu açıklamaya çalışacağım.


gridcontrol içerisindeki verileri değiştirmek için izlenebilecek yollardan bir tanesi T-SQL sorgusunu değiştirmektir.

örnek vermek gerekirse bir ürün tablomuz olsun.bu ürün tablomuzda ürünün geldiği şehir id si bulunsun.şehir tablosundada ilgili id nin şehir adı bulunsun.normalde t-sql sorgusu ile bunu joinlerle yapabiliriz fakat eğer çok fazla join işlemi bulunuyorsa bu sorguyu birden fazla alt sorgu haline getirmek ve dönen kayıtları tek datatable içerisinde toplamak gerekebilirken aşağıda anlatacağım yöntem ile bunu basitçe halledebiliriz.


ben kodlama işlemine; sizin verilerinizi çekip,datatable içerisine aktardığınızı varsayarak başlıyorum;

1-DataTable içerisinde arama
int sayac = 0;
foreach (DataRow dr in tablo.Rows)
{

string sehir = db.Valreturn("select ADI from il where ID='" + dr["sehir"].ToString() + "'");
db.tablo.Rows[sayac][db.tablo.Columns["sehir"]] = sehir;
sayac++;

}



yukarıdaki örnekte datatable içerisinde foreach döngüsü yardımıyla arama yaptık ve datatable içerisindeki her satır için id değerini aldığımız şehir bilgisini datatable'ın ilgili hücresine yazdık.yani önce
string sehir = db.Valreturn("select ADI from il where ID='" + dr["sehir"].ToString() + "'");
satırıyla datatable ın "sehir" kolonunda bulunan şehir id sini aldık ve şehir tablosundan ilgili id nin adı na ulaşıp bunu sehir değişkenine atadık.Daha Sonra;
db.tablo.Rows[sayac][db.tablo.Columns["sehir"]] = sehir;

satırıyla ilgili hücreyi değiştirerek id yerine şehir adının yazılmasını sağladık.
sayac++;
kodu ile de sayacı arttırarak bu işlemin tüm satırlar için yapılmasını sağladık.

isterseniz bu işlemi belirli değerler için de yapabilirsiniz örneğin ;


if (tablo.Rows[sayac][db.tablo.Columns["sehir"]] == "İzmir")
{
\\ kodlar buraya
}
şeklinde bir ifade kullanırsanız foreach içerisinde sehir bilgisi İzmir'e veya başka bir değere eşit olduğunda yapılacak işlemleri belirtebilirsiniz.


bu makalemin de sonuna gelmiş bulunuyorum.sağlıcakla kalın.

9 Nisan 2013 Salı

GridControl - Satır Renklendirme

hepinize merhaba.bu yazımda gridcontrol üzerindeki satırları nasıl renklendirebileceğinizi anlatacağım elimden geldiğince.

öncelikle gridcontrol içerisinde bulunan gridview nesnesinin rowstyle event'ını kullanmamız gerekiyor.hücrelerin özellikleriyle oynamak isterseniz de customdrawcell event'ını kullanabilirsiniz.

aslında buradaki işlemde sadece renklendirme değil aklınıza gelebilecek her türlü özelliği ayarlayabilmeniz mümkün.bu konuda türkçe kaynak sayısı çok olmadığından dolayı renklendirme konusunda bilgi vermeyi daha uygun görüyorum.

şimdi gelin gridcontrol üzerindeki satırların nasıl renklendirildiğini görelim.
   private void gridView1_RowStyle(object sender, RowStyleEventArgs e)
{
GridView View = sender as GridView;
if (e.RowHandle >= 0)
{
string okunma = View.GetRowCellDisplayText(e.RowHandle , View.Columns[0]);
if (okunma == "Bos")
{
e.Appearance.BackColor = Color.Red;

}
else
{
e.Appearance.BackColor = Color.Purple;

}

}
}


öncelikle gridview kontrolüne ulaşmamızı sağlayacak yine gridview türünden bir değişken tanımlıyoruz.
rowhandle değerini kontrol ediyoruz.
gridview'ın geçerli view'ı üzerinde bulunan 0. indeksteki kolonun içeriğini alıyoruz.siz isterseniz index ile oynayarak başka kolonların da içeriğini alabilirsiniz.koşul şart işlemini bu kolon değerine göre yapıyoruz. durum='satıldı' gibi.
dönen değeri bir değişkene atıyor ve değişken değerine göre işlemlerimizi yaptırıyoruz.işte bu kadar basit.arzu ederseniz değişken tanımlamadanda;
if(View.GetRowCellDisplayText(e.RowHandle , View.Columns[0]).toString()=='değerimiz')
şeklindede yapabilirsiniz istediğiniz işlemi.

bir sonraki yazımızda görüşmek üzere.



30 Mart 2013 Cumartesi

Visual C# - XML verisi çekmek

winforms projelerinizde web üzerinden çeşitli xml dosyaları çekmeniz ve bunlar üzerinde işlem yapmanız gerekebilir.bu örneğimizde döviz kurlarını xml aracılığıyla projemize aktarıp form üzerinde kullanıcıya gösterelim;


ilk olarak xml kütüphanemizi projemize ekleyelim;

using System.Xml;


rdr adında xmltextreader nesnesi oluşturalım(bu nesne xml dökümanlarını okumak için kullanılır) ve kullanacağımız xml'in URL sini belirtelim;
XmlTextReader rdr = new XmlTextReader(@"http://www.tcmb.gov.tr/kurlar/today.xml");

yeni bir dataset oluşturup oluşturduğumuz bu dataset'in içini ReadXml metodu ile xmltextreader'in çektiği veriler ile dolduralım.
DataSet ds = new DataSet();
ds.ReadXml(rdr);


bu adımdan sonra verileri istediğimiz şekilde kullanabiliriz dataset aracılığı ile.biz verileri gridcontrol üzerinde göstereceğimizden dolayı bir datatable tanımlıyor ve bu datatable'a dataset içerisindeki bilgileri aktarıyoruz.

DataTable tbl = new DataTable();
tbl = ds.Tables[1];



gridControl1.DataSource = tbl;

artık verilerimiz gridcontrol üzerinde gözükecektir.işlem tamam.isterseniz datatable tanımlamadan gridcontrol'ün datasource özelliğine ds.Tables[1] de yazabilirsiniz ben daha kolay olması açısından bu yolu izledim.

29 Mart 2013 Cuma

DevExpress GridControl - Seçili satırdan değer almak

gridcontrol nesnesi üzerinde kullanıcının seçmiş olduğu satırdan değer almak için;

private void gridView1_FocusedRowChanged(object sender, FocusedRowChangedEventArgs e)
{
string deger = gridView1.GetFocusedRowCellValue("kolonadi").ToString();

}

metodunu kullanabilirsiniz.

26 Mart 2013 Salı

ADO.NET Veritabanı Bağlantı Nesneleri Yazı Dizisi 2 - SqlCommand

bu yazımızda SqlConnection nesnesi ile bağlantı kurduğumuz veritabanı üzerinde sorgulama işlemleri yapmamız için gerekli olan ado.net nesnelerinden SqlCommand nesnesi üzerinde duracağız.SqlCommand nesnesinin en temel özellikleri veritabanı üzerinde;

  1. Ekleme (INSERT)
  2. Silme (DELETE)
  3. Güncelleme (UPDATE)
  4. Seçme (SELECT)

gibi işlemleri yapabilmemize yarar.

Connection Özelliği;

SqlCommand nesnesinin hangi connection üzerinde çalıştığını belirlemek için kullanılır.SqlCommand nesnesi bağlantısı sağlanmış bir SqlConnection nesnesi üzerinden veritabanı işlemlerini gerçekleştirebilir.






connection nesnemizi yapılandıralım
SqlConnection baglanti=new SqlConnection();
baglanti.ConnectionString="Server=localhost;Port=3306;Database=candb;Uid=root";


nesne örneğimizi yaratalım ;
SqlCommand komut=new SqlCommand();

nesnemizin connection özelliğini kullanarak nesnemizi SqlConnection nesnemize bağlayalım;
komut.Connection=baglanti;


SqlCommand nesnemizin sorgu tipini belirtelim;
komut.CommandType=CommandType.Text;


Veritabanında işlemek istediğimiz sorgumuzu nesnemizin CommandText özelliğine Atayalım;
komut.CommandText="SELECT * FROM tabloadi";


buraya kadar yaptığımız işlemler sqlcommand nesnemizin bağlantısını ve çalıştırmak istediğimiz sorguyu set etmekten ibaret.şimdi yapacağımız işlemler ile sorgumuzun işlendikten sonra tarafımıza dönecek değerleri kontrol etmeye yarayacak.SqlCommand nesnemizin execute metodları ile yaptığımız işlemlerin sonuçlarını alabiliriz.(Döndürmek istediğimiz sorgu sonuçları gibi).

SqlCommand nesnemizin başlıca execute metodları;


  • ExecuteScalar();
  • ExecuteReader();
  • ExecuteNonQuery();
  • ExecuteXmlReader (): 

ExecuteScalar();Execute scalar metodu sqlcommand nesnemizin bize tek bir değer döndürmesini sağlar.

Kullanımı ;


komut.ExecuteScalar();



ExecuteReader();
Execute reader metodu Sqlcommand nesnemizin sorgu sonucunda dönen tüm değerleri tarafımıza iletmesi için kullanılır.

Kullanımı ;
komut.ExecuteReader();


ExecuteNonQuery();
Execute non query metodu Sqlcommand nesnemizden geriye değer dönmesini istemediğimizde kullanılır.insert update delete işlemlerinde tercih edilir.

Kullanımı ;
komut.ExecuteNonQuery();

ExecuteXmlReader ();
Bu metod kullanımında geriye dönen değer xml formatında olur. veritabanından XML formatlı değerler elde edebilmek için command nesnemizin bu özelliği kullanılır

Kullanımı ;
komut.ExecuteXmlReader ();


*command nesnemizden dönen değerleri değişkene atayarak kullanabilirsiniz

ayrıca sqlcommand nesnemizin parametre oluşturma özelliği ile veritabanı tipine uygun parametreler oluşturarak işlemlerimizi daha hızlı ve güvenli şekilde yapabiliriz.özellikle injection gibi konularda parametre kullanmak yararımıza olur.normal koşullarda inputları direk olarak sorgu içerisine aldığınızda (özellikle insert(ekleme) işlemlerinde) SqlCommand nesnesi kullanıcıdan almış olduğu değerin veritabanındaki kolon tipi ile uygun olup olmadığını kontrol etmektedir.fakat verilerinizi sqlcommand parametreleri içerisinde set ederseniz,girdiğiniz değer parametre tipine uygun değilse size hata verecektir.parametre kullanımı bence önemlidir.

parametre tanımlama ve değer aktarımı en basit şekilde;

cmd.Parameters.Add("@Name", SqlDbType.VarChar, 50).Value = "Can Çevikoğlu";
şeklinde yapılır.

Bir sonraki Yazımızda görüşmek üzere hepinize iyi çalışmalar.

ADO.NET Veritabanı Bağlantı Nesneleri Yazı Dizisi 1 - SqlConnection

bu yazımızda .net üzerinde veritabanı bağlantı işlemlerimizdeki olmazsa olmaz nesnelerden biri olan Connection nesnesini inceleyeceğiz.Her veritabanı için farklı configure edilmiş connection nesnesi bulunduğundan yazıdaki SqlConnection nesnesi SQL Server bağlantıları içindir.Sqlconnection nesnesi sql server bağlantılarını configure eder ve en genel anlamda bağlantımızı açmamız ve kapamamız için mutlaka kullanmamız gerekmektedir.


SqlConnection nesnesi; sahip olduğu ConnectionString özelliğine atanan bağlantı cümlesine göre ilgili bağlantı üzerinde;

  • bağlantı açma
  • bağlantı kapama
  • bağlantıya ping atma
  • bağlantı süresi
gibi birçok işlemi gerçekleştirebilir.


dilerseniz ufak bir örnekle önce bir veritabanına bağlanalım,bağlantı durumunu kullanıcıya bildirelim ve ardından bağlantımızı kapatalım.

programımız içerisinde ado.net bileşenlerini kullanabilmek için aşağıdaki namespace'leri üst kısıma ekleyiniz.
using System.Data.SqlClient;
using System.Data;

nesne örneğimizi oluşturalım;
SqlConnection baglanti=new SqlConnection();


SqlConnection nesnemizi bağlayacak olduğumuz veritabanına yönlendirelim.
baglanti.ConnectionString="Server=localhost;Port=3306;Database=candb;Uid=root";

bağlantımızı açalım;
baglanti.Open();
kullanıcıya mesajımızı verdirelim;
MessageBox.Show("Bağlantı Açık");
Bağlantımızı Kapatalım;
baglanti.Close(); 


SqlConnection nesnesi için bağlantı kontrolü şu şekilde Yapılabilir

if(baglanti.IsOpen)
{

MessageBox.Show("baglantınız açık");

}
else
{
MessageBox.Show("baglantınız kapalı");
}




sqlconnection nesnesinin en temel özelliği budur.benzer birçok özelliği bulunmakla birlikte en çok yukarıdaki saydığım özellikler için kullanılmaktadır.


.NET Veritabanı Bağlantısı Yazı Dizisi - 1

uzun bir aradan sonra yeni bir yazı dizisiyle tekrar karşınızdayım.çevremden gördüğüm kadarıyla (özellikle bu işe yeni başlayan arkadaşların) yazılım alanında en çok anlamakta sıkıntı çektikleri konuların başında geliyor veritabanı işlemleri.internet üzerinde açıklamasız yayınlanan kodlar,çalıştırılamayan uygulamalar vs. lerde bu işin içine girdiğinde sorun içinden çıkılmaz bir hal alıyor.bu yazı dizisini okuduktan sonra CSharp.NET üzerinde veritabanı işlemleri ile ilgili bir sıkıntınızın kalmayacağını düşünüyorum.umarım faydalı olur diyerek ilk konumuza Başlayalım.

(konuları mümkün olduğunca sadece ve anlaşılır bir dille anlatmayı ve mümkün olduğunca çok örnek vermeyi hedefliyorum ki yazılanlar daha iyi anlaşılsın.

1-Veritabanı Nedir ?

en kısa açıklamasıyla veritabanı yüksek miktarlardaki verileri belirli bir düzen içerisinde saklayan,üzerlerinde işlemler yapan,kendisinden bağımsız diğer uygulamalarla veri alış verişi sağlayabilen bir uygulamadır.

2- ADO.NET (ActiveX Data Objects.NET) Nedir ?

ADO.Net microsoft firması tarafından kullanıcılara sunulan ve veritabanları ile uygulamalarımız arasında bağlantı kurmamıza yarayan bir sistemdir.Ado.net ile veritabanı bağlantısı yine ADO.NET in içerisinde barındırdığı nesneler ile gerçekleşir.çeşitli işlemler için çeşitli nesneler vardır ve kullanıcı bu nesneleri istediği gibi düzenleyerek veritabanı işlemlerini gerçekleştirir.Esnekliği,kolay kullanımı ve sürekli olarak geliştirilmesiyle en tercih edilen mimarilerin başında gelmektedr.

bir sonraki yazımda teker teker ADO.NET bileşenlerinin tanımlarını,bunların hangilerinin ne işe yaradığını ve nasıl kullanıldıklarını örnekler ile incelemeye çalışacağız.

24 Mart 2013 Pazar

Can Çevikoğlu - .NET Programlama: DXPerience v12.1 İndir

Can Çevikoğlu - .NET Programlama: DXPerience v12.1 İndir: Developer Express ürünü windows tabanlı geliştirmiş olduğunuz projeler için kullanabileceğiniz güzel bir component barındırır.aşağıda verece...

Can Çevikoğlu - .NET Programlama: ASPxCaptcha ile Captcha Oluşturun

Can Çevikoğlu - .NET Programlama: ASPxCaptcha ile Captcha Oluşturun: ASPxCaptcha kontrolü devexpress in bizler için sağladığı en güzel kontrollerden biri bana sorarsanız.eskiden üye sayfalarında doğrulama kodu...

Can Çevikoğlu - .NET Programlama: Devexpress Universal v2012.2 Crack ile Beraber

Can Çevikoğlu - .NET Programlama: Devexpress Universal v2012.2 Crack ile Beraber: Uzun süredir beklediğiniz yeni devexpress sürümü olan universal 2012 nin crackini sizlerle paylaşıyorum. Aşağıdaki adımları takip ederse...

Can Çevikoğlu - .NET Programlama: SQL Server 2008 Serial - Tüm Sürümler için

Can Çevikoğlu - .NET Programlama: SQL Server 2008 Serial - Tüm Sürümler için: Microsoft SQL Server 2008 Enterprise JD8Y6-HQG69-P9H84-XDTPG-34MBB Microsoft SQL Server 2008 Developer PTTFM-X467G-P7RH2-3Q6CG-4DMYB ...

15 Mart 2013 Cuma

.NET MySQL Bağlantısı


.NET Ortamında MySQL veritabanına bağlantı için şu adımları takip edebilirsiniz :

mysql'in yani ORACLE firmasının .NET için geliştirmiş olduğu mysql.net connector isimli bir program mevcut.öncelikle bu programı indirip bilgisayarınıza kurmanız gerekmekte.

Buradan  en son mysql .NET Connector programını indirip bilgisayarınıza kurabilirsiniz.


ardından projenize referans eklemek için ;

Solution Explorer üzerinde projenize sağ tıklayıp "Add Reference" ekranını açın.

.NET Sekmesi altında







http://www.cihanyakar.com/wp-content/uploads/2009/05/4.jpg

Şekildeki .dll leri bulabilirsiniz.




Arzu ederseniz bu dll'leri internet üzerinden indirip kendinizde projenize referans olarak ekleyebilirsiniz.

3 Şubat 2013 Pazar

ASP.NET İçerisinden Javascript Çağırmak

Javascript tüm web tabanlı projelerde olduğu gibi asp.net içerisindede rahatlıkla kullanılabilir.server tabanlı kontrollerinizden rahatlıkla js fonksiyonlarını çağırtabilir,istediğiniz işlemleri kolaylıkla yaptırabilirsiniz.ben ufak bir örnek ile asp.net içerisinden javascript nasıl çağırılır bunu göstereceğim.örneğimizde javascript içerisinden textbox içerisindeki değeri alacak ve buton yardımıyla ekrana mesaj olarak verdireceğiz. sayfamıza bir adet textbox ve bir adet buton yerleştirelim.


Javascript Fonksiyonumuz;





şimdide butonumuzun OnClientClick olayından ilgili js fonksiyonumuzu çağıralım;



işlem bu kadar basit.Hepinize kolay gelsin.

16 Ocak 2013 Çarşamba

Progressbar Kontrolü - İşlem esnasında progressbar gösterimi

bazı projelerimizde ki özellikle winforms tabanlı projelerde zaman alıcı işlemleri yaparken kullanıcının kasılıp kalan bir form görmesi yerine kişiye programın yaptığı işlem hakkında bilgi veren işlemlemler yapmak isteyebiliriz.bu noktada progressbar kontrolü bizlere kolaylık sağlamaktadır. progressbar kontrolünü backgroundworker nesnesi ile beraber kullanabilir,bu sayede profesyonel projelerdeki bilgi ekranlarını yaratabiliriz.

aşağıda ufak bir örnek paylaştım konunun daha iyi anlaşılabilmesi için;

formumuza bir adet progressBar, 1 adet buton ve 1 adet listbox yerleştirelim.


 ////işlemi başlattığımız butonumuz.reportprogress özelliği true olmazsa işlem bilgisi alamayız.
private void button1_Click(object sender, EventArgs e)

        {

            backgroundWorker1.RunWorkerAsync();

      

            backgroundWorker1.WorkerReportsProgress = true;

        }

/*işin yapılacağı kısım olan BackgroundWorker nesnemizin DoWork Event'ı.yapılmasını istediğimiz işlemi bu alana yazıyoruz*/
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            for (int i = 0; i <= 100; i++)
            {
                listBox1.Items.Add("Üretilen Sayı" + " " + e.Result);
               backgroundWorker1.ReportProgress(i,e.Result);
              System.Threading.Thread.Sleep(new Random().Next(10) * 100);

              
            }
        }
 ///// backgroundworker nesnesi üzerinde herhangi bir değişiklik olduğunda(işlem yapıldığında)
      private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            progressBar1.Value = e.ProgressPercentage;
          
        }
 ////işlem bitiminde yapmak istediğiniz işlemler için kullanabilirsiniz.
        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            MessageBox.Show("İşlem Tamamlandı");
        }


//// bu attribute false değerini almadığı takdirde aynı thread üzerinden yaratılan nesnelere erişmek istediğinizde cross thread exception alırsınız.
        private void Form1_Load(object sender, EventArgs e)
        {
            CheckForIllegalCrossThreadCalls = false;
        }




14 Ocak 2013 Pazartesi

ASPxCaptcha ile Captcha Oluşturun

ASPxCaptcha kontrolü devexpress in bizler için sağladığı en güzel kontrollerden biri bana sorarsanız.eskiden üye sayfalarında doğrulama kodu olarak üretilen algoritmalar artık tarihe karıştı.bu kontrol ile istediğiniz yerde doğrulama yapabilirsiniz.

yukarıda gördüğünüz gibi sayfanıza 1 adet ASPxCaptcha ekleyin.

bazı özellikleri de şunlar :


CodeLenght : kod uzunluğunu buradan değiştirebilirsiniz.


ASPxCaptcha1.Code   kodu ile captcha da gösterilen kodu programsal olarak  alabilirsiniz.

IsValid : en çok kullanılan attribute olaraktan textbox'a girilen değerin üretilen değer ile doğru olup olmadığını döndürür size.bir çeşit validation da diyebiliriz.

ASP.NET Sayfalar arası veri taşıma işlemleri

merhaba;

bu yazımda sizlere asp.net üzerinde sayfalar arasında veri taşıma işlemlerinden bahsetmek istiyorum.hepimizin bildiği gibi uygulamarımızda sayfalarımız arası haberleşmeler büyük önem arzetmektedir.bazı sayfalarda bazı işlemlerin yerine getirilebilmesi için diğer sayfalardan gelecek verilere ihtiyaç duyulabilir(GET).ASP.NET üzerinde veri taşıma işlemleri aşağıdaki şekillerde yapılabilir.

1-)QueryString : en yaygın ve basit kullanıma sahip olanıdır.istenilen verileri sayfayı post ettiğiniz zaman yönlendirildiğiniz sayfaya URL üzerinden taşır.

Kullanımı :

a sayfasından b sayfasına isim taşıyalım.

a sayfasında linkinizi şu şekilde değiştirirseniz:
Response.Redirect("gidileceksayfa.aspx?isim=can");

Tarayıcınızın URL kısmına baktığınızda:

www.siteadi.com/b.aspx?isim=can
olarak görürsünüz.a sayfasından veri aktarımı tamamlanmıştır.bundan sonraki adım b sayfasından gelen veriyi almaktan ibarettir.o da şu şekilde yapılır:

b sayfasında "isim" adında bir değişken tanımlayalım ve gelen veriyi bu değişkene aktaralım:


string isim=Request.QueryString["isim"];

querystring hakkında çok fazla söylenecek birşey yok aslında kullanımı bu kadar basit.


2-)Session : Session aslında "Oturum" demek.kullanıcının oturumu boyunca tutulmak istenen şahsi verilerinin saklandığı kavramlara session adı veriyoruz.genellikle üye işlemleri içeren sitelerde kullanılan sessionlar güvenlik ve yönetimi açısındanda tercih edilmektedir.

en basit session oluşturma örneği:

Session["session_adi"]=session_degeri
;   şeklindedir.

bir session tanımlar,istediğiniz yerde içeriğini düzenler istediğiniz yerde de çağırarak kullanabilirsiniz kısacası.Sessionların bazı özellikleri ;

 Session.Timeout = dakika bazından session'ın canlı tutulmasını belirtir.belirttiğiniz dakika dolduğunda session sistem tarafından bellekten silinir..Default değeri "20" dir.

Session.RemoveAt : Session koleksiyonunuzda verdiğiniz id deki session'ı bellekten silmek için kullanılır.

Session.Clear()
: Sessionlar İçerisindeki tüm verilerinizi bellekten siler.



3-)Server Transfer Kullanarak Veri Taşıma : bu yöntemle yapılan veri transferinde URL niz aynı kalır.yani querystring örneğindeki gibi URL nizde değerler gözükmez ve POST ettiğiniz sayfa aynı şekilde tarayıcınızda gözükücektir.

Server.Transfer("2incisayfa.aspx");
  şeklinde kullanılır.bu komut işlendiğinde tarayıcınızda halen 1incisayfa.aspx yazılıdır.










ConnectionString'i Web.config dosyasında saklamak

Merhaba;

veritabanı bağlantılı birçok uygulamada(özellikle büyük ölçekli uygulamalar) bağlantı cümlesini tek biryerde saklamak hem zamandan hemde yönetim konusunda büyük kolaylıklar sağlamaktadır.bu işin ASP.NET içerisindeki çözümlerinden birtanesi ConnectionString'in web.config dosyasında saklanmasıdır.bu şekilde projenizin istediğiniz yerinden bu string'i çağırabilir ve gerekli işlemleri kolaylıkla yapabilirsiniz.yine değiştirme esnasında'da sadece bu kısmı değiştirerek projenizdeki tüm ConnectionString'leri değiştirmiş olursunuz.Oldukça pratik yani..
 

connectionString'i web.config dosyasında şu şekilde tanımlayabilirsiniz.



taglarının altına



bunu çağırmak içinse;

öncelikle System.Configuration kütüphanesini projenize dahil etmeniz gerekiyor.

using System.Configuration;

public SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString);

şeklinde tanımlama yapabilmeniz mümkün.

Kolay gelsin.

DXPerience v12.1 İndir

Developer Express ürünü windows tabanlı geliştirmiş olduğunuz projeler için kullanabileceğiniz güzel bir component barındırır.aşağıda vereceğim linki kullanarak Developer Express'in güncel sürümlerinden v12.1 i indirerek kurabilir,projelerinizde kullanmaya başlayabilirsiniz.ayrıca blogumu da takip ederek developer express component'i ile ilgili yeni bilgiler öğrenebilir,paylaşımlar yapabilir ve takıldığınız yerlerde yardım alabilirsiniz.

Developer Express v12.1 indir

ASP.NET Tarafından SQL Server Stored Procedure Parametresine ulaşmak

Merhaba;

sql tarafında oluşturmuş olduğunuz bir prosedürünüz varsa ve bu prosedürün içerisindeki değerlere asp.net tarafından ulaşmak istiyorsanız aşağıdaki adımları izlemeniz yeterli olacaktır.

sql'de prosedür parametrelerinden değer alabilmek için öncelikle o parametrelerin(yani değişkenlerin) OUTPUT(Türkçe anlamı "çıkış" tır) olarak tanımlanmış olması gerekir ki bu işlem şu şekilde olur;

@değişken_adı tipi(size değeri) output

@sonuc nvarchar(50) output


sql prosedürleri standartta geriye yanlızca int değer döndürebilirler bu nedenle return ifadesi ile int olmayan bi değeri elde edebilmeniz mümkün değildir.Bunu aşmanın yoluda değerini almak istediğiniz parametrenizi output olarak tanımlamanız gerekmektedir.İsterseniz gelin şimdi beraber ufak bir örnek yapalım ve 2 stringi birleştiren ve bize sonucu döndüren bir stored procedure yazalım.

SQL kodumuz;

USE [firma_rehberi]
CREATE PROCEDURE [dbo].[sp_isimdondur](@str1 nvarchar(50),@str2 nvarchar(50),@sonuc nvarchar(50) output)
AS
set @sonuc=@str1+@str2

 ASP.NET Tarafında sp içerisinde tanımladığımız sonuç değişkeninin içeriğine ;

 SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString);
    SqlCommand cmd = new SqlCommand();

con.Open();
        cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "sp_StringDondur";

cmd.Parameters.Add("@kelime1", SqlDbType.NVarChar,50);
            cmd.Parameters["@kelime1"].Value = 'an';

cmd.Parameters.Add("@kelime2", SqlDbType.NVarChar,50);
            cmd.Parameters["@kelime2"].Value = 'kara';

cmd.Parameters.Add("@sonuc ",SqlDbType.NVarChar,50);
            cmd.Parameters["@sonuc "].Direction = ParameterDirection.Output;
 cmd.ExecuteNonQuery();

Response.Write(cmd.Parameters["@sonuc "].Value.ToString());

işlem bu kadar arkadaşlar. cmd.Parameters["@sonuc "].Value komutu bizlere prosedürümüz içerisindeki sonuc değişkeninin değerini döndürür.