Coder

29 Eylül 2011

Tabloda toplam fiyat hesaplama

Filed under: Declare,Sql — Etiketler:, , — Murat M.oğlu @ 19:18

Basit ama hatırlama amacıyla değinmek istediğim bir konu ile merhaba. Konuyu en basitinden örnekle açıklayıp kısa yoldan bitirmek istiyorum. Adisyon hesabı olan kafenin veritabanın da toplam gelir veya topla gider hesaplamasını isteyebiliriz. Bunu yapabilmek için, işlemin en küçük yapısını oluşturan DB(veritabanı) de kaydedilmiş olan ürün tablosundaki fiyat kolonunun toplam fiyatını hesaplamak için;

[cc lang="sql"]declare @sonuc money
select @sonuc=SUM(fiyatkolonadi) from urunlertablosu
select @sonuc[/cc]

Bu örnek ile sql de değişken atamayıda tekrar etmiş olduk…

19 Eylül 2011

Kısa yoldan toplu textbox temizleme

Bu konu hakkında birçok yazı yazılmıştır. Daha önce yazılanları unutun demeyeceğim, yedekte kalması babında kaynaklanarak yazdığım en kısa toplu textbox temizleme metodu şimdilik bu olsa gerek;

Projelerimizde ki formlarda birden çok textbox kullanmışızdır. Malum işlem yapıldıktan sonra kendiliğinden temizlemediği için iş yazılımcıya düşmekte. Foreach ile yapacağımız bu işlemi resimdeki gibi form tasarlayıp buton yardımı ile gerçekleştirebilirsiniz.

[cc lang="c#"] private void button1_Click(object sender, EventArgs e)
{
foreach (Control ktn in this.Controls)
{
if (ktn is TextBox)
{
ktn.Text=”";
}
}
}[/cc]

Form içindeki tüm textboxları temizleme ihtiyacı duymaya bilirsiniz. Mesela belirli textboxları temizlemek için form a panel ekleyip toplu temizlemek istediğiniz textboxları panel içine koyabilirsiniz. Bunun için yapmamız gereken this(form içindeki tüm kontrolleri kontrol etmek için kullanırız) yerine panel1 şeklinde kontrol etmek;

[cc lang="c#"] foreach (Control ktn in panel1.Controls)
{
if (ktn is TextBox)
{
ktn.Text=”";
}
}[/cc]

16 Eylül 2011

Asp.net Membership özellikleri

Machine.config dosyasında bulunan daha çok üyelik için kullanılan Asp.net Membership yapısındaki özellikleri inceleyelim. Uygulamamızda Web.Config içerisinde system.web blogunun içine eklediğimiz Membership providers’ın da bulunan özellikler ve açıklaması;

connectionStringName : Uygulamada kullanılan veritabanını bağlayan connectionstring isminin yeri.

enablePasswordRetrieval : Unutulan şifreyi geri alma yapılsın mı. True olursa eski şifre gönderilecek, false olursa kullanıcıya yeni şifre gönderir. Ayrıca passwordFormat hasked olursa burası true olamaz.

enablePasswordReset : Şifreyi sıfırlama için kullanılır.

enablePasswordRetrieval false ise bunun true olaması gerekir.

requiresQuestionAndAnswer : Gizli soru; true soru olsun, false gizli soru olmasın.

applicationName : Kullanılacak uygulamalar buraya yazılır. Şimdilik üyelik uygulamsını kullanacağımız için / işareti ile devam ediyoruz.

requiresUniqueEmail : Aynı mail hesabı ile birden fazla üye olsun mu. True yaparsanız kullanılan mail adresiyle bir tane hesap açılır.

passwordFormat : Üye şifrelerinin veritabanında tutacağı format yeri. Burada 3 tane şifreleme tipi bulunmakta. Bunlar Clear, yaptığımızda şifre olduğu gibi veritabanında görülür, encrypt yaptığımızda geri çevirebilir şekilde şifreyi şaklıyo, hashed ile yapılan paralo geri döndürülemez yani yazılan şifre tekrardan eski haline gelemez.

maxInvalidPasswordAttempts : En fazla kaç kere yanlış parola girilebilir. Bu özellik sonucunda passwordAttemptWindow özelliğini çalıştırarak anlam kazanmakta. Normalde passwordAttemptWindow =10 dakika yani 5 kez yanlış parola giren üye 10 dakika login olması yasaklanacak.

minRequiredPasswordLength : Şifrenin en az kaç karakterli olacağını belirten özellik.

minRequiredNonalphanumericCharacters : Şifrede alfa numerik karakter olsun mu yani semboller = ? / gibi olmasını isterseniz 1(kaç tane alfa numerik karakter olmasını istiyorsanız o kadar sayı) yapmanız gerekir, istemiyorsanız değeri 0 yapmanız yeterli olacak

passwordStrengthRegularExpression : Şifrenin güvenilirliğini buradan ayarlanmakta

12 Eylül 2011

Csharp ile uzaktaki veritabanına bağlanma

Basit bir yazı ile merhaba. Basit diyorum, çünkü daha önce projelerinde; masaüstü veya web uygulamaların da, localhost’taki yani kendi bilgisayarınızdaki veritabanına bağlanıp veri çekip gönderen uzaktaki sunucudaki veritabanına da benzer şekilde bağlana bilmekte.

Localhosta ki veritabınana bağlantı için şu şekilde Connectionstring’i oluşturuyorduk;

[cc lang="c#"]SqlConnection sql = new SqlConnection(“server=.; database=northwind; trusted_connection=true;”);[/cc]

Buradaki bağlantı bilgisayarda bulunan veritabanına güvenli ve şifresiz bağlantı şekli. Herhangi hosting firmasından Windows hosting aldığımızda mssql kullandığımızı varsayarak web veya masaüstü uygulamalarımız da yukarıdaki bağlantı şekli yerine bunu kullanırız;

[cc lang="c#"] SqlConnection sql = new SqlConnection(“Data Source=BağlanılanSunucuAdresi;Initial Catalog=VeritabanıAdı;Persist Security Info=True;User ID=VerilenIDNo;Password=VerilenSifre”);
[/cc]

Burada bağlanılan sunucu adresi hosting firmanızın size verdiği bilgilerde bulunmakta. Başında Http olmadan Ör; mssql01.hostingfirmasi.com şeklinde yazmanız yeterli. Diğer açıklamaları da bağlantı üzerinden görebilirsiniz. Bu bağlantı şeklini masaüstü veya web uygulamaların da kullanabilirsiniz.

Diğer bağlantı şekillerine http://www.connectionstrings.com/sql-server-2008 adresinden ulaşabilirsiniz.

03 Eylül 2011

Stored procedure output ile mail kontrolü

Veritabanımızda sık sık sp’leri kullanırız. Bir çok işlemi sp üzerinde yapabilmekteyiz. Örnek verecek olursak; ürün giriş veya üye kayıt kısmında; masaüstü veya web sitemiz dolayısı ile parametre gönderip işlemi Stored procedure ile bitiriyoruz.

Sp’deki output ile veri tabanından parametre alabiliyoruz. Şöyle ki; e-posta adreslerini tutan veritabanımız ve C# da yazılmış masaüstü uygulamamız olsun. Form yardımı ile girilen e-posta adresini veritabanından kontrol edip, mail adresi varsa kullanıcıya kayıtlı olduğunu belirtip, yoksa kayıt ettirebiliriz. Benzer şekilde Stored procedure output ile arama yaptırabiliriz. Burada yapılan olay parametrenin databasee gidip tekrar geri dönmesinden ibarettir.

Başlıkta belirttiğim üzere mail kontrolü yapan Stored procedure‘li masaüstü uygulaması yapalım;

Resimdeki gibi form ekranı oluşturduktan sonra kod kısmına geçmeden veritabanımıza output parametreli Stored procedure yazalım;

[cc lang="sql"]create proc sp_coder_output (@dmail nvarchar(50), @var int output)
as
begin
if exists (select mail from tblmail where mail=@dmail)
begin
select @var=1
end
else
begin
insert into tblmail (mail) values (@dmail)
end
end[/cc]

Burada @dmail ve output parametreli tabloda olmayan @var isimli int tipli değişken tanımladık. İf ile kontrol edip, eğer mail adresi daha önceden eklenmiş ise @var değişkenine 1 atamakta, yoksa kayıt etmekte (Database adı: coder, tablo adı: tblmail, kolon adı: mail, tabloda id ve mail kolonları bulunmakta). Sql ile işimi bitirip formda kaldığımız yerden devam edelim.

Butonu çift tıklayıp kod tarafına geliyoruz.
[cc lang="c#"]
string varmi;
SqlConnection sql = new SqlConnection(“server=.; database=coder; trusted_connection=true;”);
SqlCommand cmd = new SqlCommand();
cmd.Connection = sql;

cmd.CommandText = “sp_coder_output”;
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add(“@dmail”, SqlDbType.NVarChar, 50);
cmd.Parameters.Add(“@var”, SqlDbType.Int);

cmd.Parameters["@dmail"].Value = textBox1.Text;
cmd.Parameters["@var"].Direction = ParameterDirection.Output;

sql.Open();
cmd.ExecuteNonQuery();
varmi = cmd.Parameters["@var"].Value.ToString();

if (varmi == “1″)
{
MessageBox.Show(“Daha önce eklenmiş mail adresi…”);
}
else
{
MessageBox.Show(“Mail adresi kayıt edildi…”);
}
sql.Close();
[/cc]

SqlConnection yardımı ile veri tabanına bağlandık. SqlCommand ile Procedure’ü çalıştırdık. Değişkenleri kolonlar ve tiplerine uygun olarak ekledik. ParameterDirection.Output ile parametrenin geri gelmesini sağlıyoruz. Burada gelen parametreyi Label1′e yazdırıyoruz. Değeri 1 olursa daha önceden eklenmiştir mesajı alınacak, eğer label1′in değeri 1 olmaz ise kayıt edip, edildi mesajı verecek.

Powered by WordPress