C# Bilen Arkadaşlara bir sorum var??

Kodla Büyü

mustafayilmaz28

Süper Üye
Süper Üye
Seçkin Üye
Mesajlar
1,425
(1) satır.....
SqlCommand komut = new SqlCommand("insert into genelbilgiler)(adi,soyadi,sirketadi,sirketunvani,yasi,cinsiyeti,medenihali,adresi,notlar,vergidairesi,verginumarasi,evtel,istel,fax,cep1,cep2,cep3,kartvizit)
values('"+kisiadi+"','"+kisisoyadi+"','','','"+txtyasi.Text+"','"+cmbcinsiyeti.Text+"','"+cmbmedenihali.Text+"','"+txtadresi.Text+"','"+txtnotlar.Text+"','"+txtvergidairesi.Text+"','"
+txtverginumarasi.Text+"','"+mboxevtelefonu.Text+"','"+mboxistelefonu.Text+"','"+mboxfax.Text+"','"+mboxcep1.Text+"','"+mboxcep2.Text+"','"+mboxcep3.Text+"',
'@resim')",baglantı);
(2)satır.... komut.Parameters.AddWithValue("@resim",(object)resimbytedizisiolustur());
komut.Connection.Open();
komut.ExecuteNonQuery();
komut.Connection.Close();
baglantı.Close();
şimdi benim sorum çok basit bu parametre ile değer atamak konusunda :)
ikinci satırın birinci satırdan önce eklenmesi gerekmez mi??normal çalışma mantığında(yani 1 satır a geldiğinde komut resim parametresi kırmızı ile işaretlediğim yer boş değer almaz mı?
 
hocam yapmak istediğin nedir anlayamadım ama sözdizimi doğru böyle olması gerek new ifadesi ile yeni bir sqlcommand oluşturmadan 1. satırı öne nasıl alacaksın hata vermesi lazım.
 
hocam bende yeni öğrenen birisiyim ezberlemekten se mantığını anlamak istiyorum.
ama anlamadığım niye
=yapıp
=2+a
a=5
yapıp toplam sonucunu 7 beklemek gibi bişi oluyor bu da
normalde
a=5;
=2+a;
dememiz gerekmez mi?
 
Hayır almaz... Çünkü komut.ExecuteNonQuery(); dedğinde çalışır... daha önce boş veya dolu olması bir şey ifade etmez...

sqlcommand cmd = new sqlcommand("kafam bozuk", connection); yazsan bu satırda değil komut.ExecuteNonQuery(); satırında hata verir.

Ayrıca "asd='"+cmd.text+"'" gibi bir mantık çalışsada aslında risk içerir hepsini parametre ile ata.
 
aynı şeyler değil hocam, 2. satırı başa aldığında komut diye bir sqlcommand ifaden olmadan parametre eklemeye çalışıyorsun,
bende şuna benzeteyim arabayı yapmadan lastiğini takmaya çalışıyorsun bir nevi
 
kullanmış olduğunuz ( ; ) ilgili satır-komut sonu değil mi ?
Öyle ise 2. kullanım olması lazım.Ancak celikumit öğretmenimizin dediği üzere komut=new command diyerekten tanımlamak icab etmiyor mu?
 
Sınıf mantığı böyle çalışıyor. Senin yazdığın kod sistemi framework 2.0'a ait. bence yeni başladı isen framework 4.0 dan başlamalısın.

sorunun cevabına gelirsek C# ta nesne şöyle tanımlanır.(eski sistemlerde)
Label etiket=new Label();
etiket.Text="Ben bir etiketim"; // bu özellik belirtir
etiket.Focus(); // bu fonksiyon belirtir.
baştan bir nesne oluşturursun sonra onun fonkisyon ya da özellikleri üzerinde işlemler yaparsın.

sorduğun soruda
SqlCommand komut = new SqlCommand.....// nesne tanımlandı
komut.Parameters.AddWithValue....// tanımladığın nesneye ait özellikler belirtiyorsun

konuyu daha da genelleştirirsek araba örneğinden gidelim.
bir araba üretilmeden onun var olan hızından renginden söz edebilir miyiz ?
Araba benim_arabam= new Araba(); //araba sınıfından bir tane araba ürettiyoruz
benim_arabam.Hız(); //araba ile ilgili fonksiyon tanımlıyoruz
benim_arabam.Renk="mavi"; //araba ile ilgili özellik tanımlıyoruz
 
teşekkür ederim hocalarım verdiğiniz bilgiler için biraz anladım olayı :)
bu kodu çalıştırdıpımda hata alıyorum neden dir acaba?
 
SqlConnection baglantı = new SqlConnection("Data Source=(local);Initial Catalog=ajandam;Integrated Security=True;Pooling=False");
SqlCommand komut = new SqlCommand();
SqlDataAdapter adaptor = new SqlDataAdapter();
try
{

if (baglantı.State == ConnectionState.Closed)
baglantı.Open();

SqlCommand komut = new SqlCommand("insert into genelbilgiler(adi,soyadi,sirketadi,sirketunvani,yasi,cinsiyeti,medenihali,adresi,notlar,vergidairesi,verginumarasi,evtel,istel,fax,cep1,cep2,cep3,kartvizit)
values('"+kisiadi+"','"+kisisoyadi+"','','','"+txtyasi.Text+"','"+cmbcinsiyeti.Text+"','"+cmbmedenihali.Text+"','"+txtadresi.Text+"','"+txtnotlar.Text+"','"+txtvergidairesi.Text+"','
"+txtverginumarasi.Text+"','"+mboxevtelefonu.Text+"','"+mboxistelefonu.Text+"','"+mboxfax.Text+"','"+mboxcep1.Text+"','"+mboxcep2.Text+"','"+mboxcep3.Text+"','@resim')",baglantı);

komut.Parameters.AddWithValue("@resim",(object)resimbytedizisiolustur());
//komut.Connection.Open();
komut.ExecuteNonQuery();
//komut.Connection.Close();
baglantı.Close();
MessageBox.Show("Kaydınız Eklendi!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
baglantı.Close();
}

byte[] resimbytedizisiolustur()
{

string strYol =pictureBox1.Tag.ToString();//Seçilen Resmin Yolunu Atıyoruz
byte[] veri = null;
//Dosya uzunluğunda byte dizi oluşturucağımız için Aşağıdaki
//Koda ihtiyacımız var
FileInfo fDosyaBilgi = new FileInfo(strYol);
long lngSayac = fDosyaBilgi.Length;
//Dosyamızı Stream Olarak Acıyoruz
FileStream fStream = new FileStream(strYol, FileMode.Open, FileAccess.Read);
BinaryReader fRead = new BinaryReader(fStream);
veri = fRead.ReadBytes((int)lngSayac); //Byte Dizi içine Atıyoruz
return veri;
}
kodlar bunlar hocam
hata ise
 

Ekli dosyalar

  • Adsız.png
    Adsız.png
    13.3 KB · Görüntüleme: 1,209
Ne yapmak istediğinizi pek anlayamadım ama bu hatayı alan genişliği az olan bir alana daha uzun bir genişlikte veri girmeye çalışırsanız alırsınız.

Ayrıca injectiona karşı güvenlik açığı vermemek ve kod estetiği sağlamak için sorgudaki tüm girdileri parametre olarak alın derim. Sadece @resim için değil hepsi için.

ÖRNEK:
SqlCommand komut = new SqlCommand();
komut.Connection = baglanti;
komut.CommandType = CommandType.Text;
komut.CommandText = "INSERT INTO tablo (ad, soyad, telefon) values (@AD, @SOYAD, @TELEFON)";
komut.Parameters.AddWithValue("@AD", adTextBox.Text);
komut.Parameters.AddWithValue("@SOYAD", soyadTextBox.Text);
komut.Parameters.AddWithValue("@TELEFON", telefonTextBox.Text);

baglanti.Open();
komut.ExecuteNonQuery();
baglanti.Close();

Kolay gelsin..
 
Parhelion hocam veritabanına resim kaydetmeye çalışıyorum.. :)
refleto hocam teşekkr ederim ama olmadı :( aynı hatayı veriyor
 
komut.Parameters.AddWithValue("@resim",(object)resimbytedizisiolustur());

yerine

sqlparameter sql_par = new sqlparameter("@resim", SqlDbType.Image);
sql_par.Value = resimbytedizisiolustur();
komut.Parameters.Add(sql_par); dene yanlız şuan bulunduğum bilgisayarda visual studio yok yazımda yanlış olabilir control edersin
 
evet hocam veritabanına resim kaydedilmez, daha doğrusu yöntem olarak. hocamın dediği gibi yonunu kaydet yolundan resimi çağır,
veritabanı gereksiz şişer
 
mustafayilmaz28' Alıntı:
AMA ben öğrenmek istiyorum bu yöntemide :)

Hocalar doğru söylüyor uygulamada kaynakların çok çok çok iyi değilse fena patlar... siteyi tutduğun server hariç 2 sadece sql server çalıştıran makine ve katman mimarisiyle haledile bilir band genişlikleri yüksek olacak (Maliyeti aylık 1500 TL felan). veya kullanıcın günlük çok az olacak

Ama öğren dosyalar diarında bytelar ile oynaması zevklidir.

hata fonksiyona bakayim yanlız vs yok makinada havada kalabilir.

sen bir fonksiyonun başına break point ekleyip ile siteyi çalıştırıp fonksiyonun içinde hangi satırda hata veriyordiye bak.

Belki bilmiyorsundur diye ek bilgi...
Break point satır numaralarının solundaki gri alana tıklayarak ekleyebilirsin...
Breakpoint yere geldiğinde site duracaktır duracaktır..
Sonra f11 re basarak fonksiyonu satır satır çalıştır... Hangi satırda hata olduğunu bul... ona göre fikir yürütelim
 
Çıkar ilk yazdıklarımdan ilk paragrafı diğerleri aynı...

öğren dosyalar diarında bytelar ile oynaması zevklidir.

hata fonksiyona bakayim yanlız vs yok makinada havada kalabilir.

sen bir fonksiyonun başına break point ekleyip ile siteyi çalıştırıp fonksiyonun içinde hangi satırda hata veriyordiye bak.

Belki bilmiyorsundur diye ek bilgi...
Break point satır numaralarının solundaki gri alana tıklayarak ekleyebilirsin...
Breakpoint yere geldiğinde site duracaktır duracaktır..
Sonra f11 re basarak fonksiyonu satır satır çalıştır... Hangi satırda hata olduğunu bul... ona göre fikir yürütelim
 
HOCAM
KODLARI değiştirdim
başka bir makaleden alıntı yaptım ama aynı hata devam..
:) :(
kodlar
if (baglantı.State == ConnectionState.Closed)
baglantı.Open();

//Resimimizi FileStream metoduyla okuma modunda açıyoruz.
FileStream fs = new FileStream(resimpath, FileMode.Open, FileAccess.Read);
//BinaryReader ile byte dizisi ile FileStream arasında veri akışı sağlanıyor.
BinaryReader br = new BinaryReader(fs);
/*ReadBytes ile FileStreamde belirtilen resim dosyasındaki byte lar
byte dizisine aktarılıyor.
*/
byte[] resim = br.ReadBytes((int)fs.Length);
br.Close();

fs.Close();

SqlCommand komut = new SqlCommand("insert into genelbilgiler(adi,soyadi,sirketadi,sirketunvani,yasi,cinsiyeti,medenihali,adresi,notlar,vergidairesi,verginumarasi,evtel,istel,fax,cep1,cep2,cep3,kartvizit)values
('"+kisiadi+"','"+kisisoyadi+"','','','"+txtyasi.Text+"','"+cmbcinsiyeti.Text+"','"+cmbmedenihali.Text+"','"+txtadresi.Text+"','"+txtnotlar.Text+"','
"+txtvergidairesi.Text+"','"+txtverginumarasi.Text+"','"+mboxevtelefonu.Text+"','"+mboxistelefonu.Text+"','"+mboxfax.Text+"','"+mboxcep1.
Text+"','"+mboxcep2.Text+"','"+mboxcep3.Text+"','@image')",baglantı);

komut.Parameters.Add("@image", SqlDbType.Image, resim.Length).Value = resim;
komut.ExecuteNonQuery();
baglantı.Close();
MessageBox.Show("Kaydınız Eklendi!");

hata resmi dediğiniz yolla aldım hatayı
 

Ekli dosyalar

  • Adsız.png
    Adsız.png
    30.9 KB · Görüntüleme: 507
Hocam son önerim küçük boyutlu bir resim gir önce.... 100x100 bir jpeg eğer resim boyutundan değilse... projeyi database ile birlikte bir gönder... bakıp sana hatının neden olduğunu söyleyeyim...
 
refleto hocam teşekkür ederim.allah razı olsun..sorunu buldum resim kaydetmekte değilmiş soru:(
bAŞK a bir sorun varmış..
maskedboxlara değerinden kü.ük bir alan açmışım:( onuda deneme yanılma ile buldum..
size birşey daha sormak istiyorum buda c# wiev mdda benim yazdıklarım satır sonuna gelince kendiliğinden yazdklarımın aşağı kaymasını istiyorum nasıl yapıacam bunu??
 
hocam estağfirullah :oops:
kod yazdığımız yer varya hocam;
ben oraya mesela yanyana birşeyler yazdığımda yatay kaydırma çubuğun geliyor ve yazı sağa doğru ben entera basıncaya kadar devam ediyor..
ben istiyorum ki
yatay kaydırma çbuğu eklemesin satır görünen yerden alta geçsin kendiliğinden ??
 
refleto hocam tekrar teşekkürler
tools -options- text editör- all languages altında word wrapı buldum sorunum halloldu.teşekkürler.
 
mustafayilmaz28' Alıntı:
refleto hocam tekrar teşekkürler
tools -options- text editör- all languages altında word wrapı buldum sorunum halloldu.teşekkürler.

visual Studio 2010 da benim dedğim gibi... Version farkından herhalde...
 
BBNET
Geri
Üst