none
sqlden not defterine veri aktarımı RRS feed

  • Soru

  • soru başlığındanda anlaşılacağı üzere ben winformda kullanıcının ' Aktar ' adlı butona basmasıyla veri tabanına kaydettiği bütün verileri not defterine eklemesini istiyorum .... nasıl yapabilirim ?
    • Düzenleyen Aithusa 3 Temmuz 2012 Salı 12:33
    3 Temmuz 2012 Salı 12:26

Yanıtlar

  • using(SqlConnection conn=new SqlConnection("connectionString"))
    {
    SqlCommand cmd=new SqlCommand("select * from Tablo",conn);
    SqlDataReader rdr=cmd.ExecuteReader();
    StreamWriter sw=File.CreateText("c:\\MyTextFile.txt");
    
    while(rdr.Read())
    {
      sw.WriteLine(rdr[0].ToString() + " " +rdr[1].ToString());
    }
    sw.Close();
    }
    3 Temmuz 2012 Salı 12:40
  • Ibrahim,

    Sorun inan aslinda hic anlasilmiyor:) Hemen aklima gelen sorular:

    Notepad'e aktarmak derken:

    1) Maksat onu oyle cala kalem (belki de biraz formatlanmis) yazip bir notepad ile ekranda gostermek mi?

    2) Yoksa maksat veriyi, bilinen text formatlarindan birine aktarip baska ortamlardan okunmasini saglamak? (en cok kullanilan formatlar: SDF - System Data Format ya da diger adiyla Fixed Width Format - Sistem Veri Formati,  CSV - Comma Separated Value - Virgulle Ayrilmis Format, XML ).

    Sanirim demek istedigin 2.cisi yani bir veri ihrac rutini (data export). Eger oyleyse aslinda kolay. Asagida SQL server ornek Nortwind veri tabaninin Customer tablosundaki verileri, "Customer.csv" isimli bir dosyaya aktaran ornek var - excel bunu dogrudan okuyabilir mesela):

    var header = "Address,City,CompanyName,ContactName,ContactTitle,Country,"+
      "CustomerID,Fax,Phone,PostalCode,Region\n";
    
    var data = from c in Customers
      select string.Format("\"{0}\",\"{1}\",\"{2}\",\"{3}\",\"{4}\",\"{5}\",\"{6}\",\"{7}\",\"{8}\",\"{9}\",\"{10}\"",
      c.Address,
      c.City,
      c.CompanyName,
      c.ContactName,
      c.ContactTitle,
      c.Country,
      c.CustomerID,
      c.Fax,
      c.Phone,
      c.PostalCode,
      c.Region );
      File.WriteAllText(@"c:\Temp\CustomerData.csv", header,Encoding.Default);	
      File.AppendAllLines(@"c:\Temp\CustomerData.csv", data,Encoding.Default);	

    Not: Bu kod linq kullaniyor. Aynen bu haliyle LinqPad'de calisir. VS'da gerekli Linq classinin eklemen gerekecek ama fikir acik.


    3 Temmuz 2012 Salı 13:12
    Yanıtlayıcı
  • verdiğiniz kodlar çalışıyo ama sadece 1 kolonunkini alıyo bende 2 tane kolon var 2 sinide text dosyasına aktarmasını istiyorum şöyleki

    benim bi tarih bide yazı kolonlarım var text dosyasına aktardığında veri tabanında sırayla aynı id ye sahip olan kolonların içeriğini altalta aktarmasını istiyorum ..... yardımcı olursanız sevinirim ...

    Opps! Sorunu ben de anlamadim tam olarak :S Ama anladigim kadariyla tum kolonlari yazdirmak istiyorsun. Ben sadece ornek olmasi amaciyla bir kod yazmistim siz tablonuzun kolonlari hakkinda bilgi vermediginiz icin. Diger kolonlari  da rdr[0], rdr[1], rdr[2] .... seklinde yazdirabilirsiniz sw.WriteLine metodunda. Ben sadece ilk iki kolunu yazdirdim.
    • Yanıt Olarak İşaretleyen Aithusa 3 Temmuz 2012 Salı 13:30
    3 Temmuz 2012 Salı 13:20
  • verdiğiniz kodlar çalışıyo ama sadece 1 kolonunkini alıyo bende 2 tane kolon var 2 sinide text dosyasına aktarmasını istiyorum şöyleki

    benim bi tarih bide yazı kolonlarım var text dosyasına aktardığında veri tabanında sırayla aynı id ye sahip olan kolonların içeriğini altalta aktarmasını istiyorum ..... yardımcı olursanız sevinirim ...

    • Yanıt Olarak İşaretleyen Aithusa 3 Temmuz 2012 Salı 13:30
    3 Temmuz 2012 Salı 13:12
  • SQL sorgundan o tarihi filtreleyip getirirsin o zaman. Asagidaki gibi duzenlersen sorgunu tekrar duzenlersin,

    SqlCommand cmd=new SqlCommand("select * from Tablo where tarih=@tarih",conn);
    
    cmd.Parameters.AddWithValue("@tarih",Convert.ToDateTime(txtTarih.Text));

    TextBox'a girilen tarihteki kayitlari getirir.

    • Yanıt Olarak İşaretleyen Aithusa 3 Temmuz 2012 Salı 13:39
    3 Temmuz 2012 Salı 13:37

Tüm Yanıtlar

  • using(SqlConnection conn=new SqlConnection("connectionString"))
    {
    SqlCommand cmd=new SqlCommand("select * from Tablo",conn);
    SqlDataReader rdr=cmd.ExecuteReader();
    StreamWriter sw=File.CreateText("c:\\MyTextFile.txt");
    
    while(rdr.Read())
    {
      sw.WriteLine(rdr[0].ToString() + " " +rdr[1].ToString());
    }
    sw.Close();
    }
    3 Temmuz 2012 Salı 12:40
  • verdiğiniz kodlar çalışıyo ama sadece 1 kolonunkini alıyo bende 2 tane kolon var 2 sinide text dosyasına aktarmasını istiyorum şöyleki

    benim bi tarih bide yazı kolonlarım var text dosyasına aktardığında veri tabanında sırayla aynı id ye sahip olan kolonların içeriğini altalta aktarmasını istiyorum ..... yardımcı olursanız sevinirim ...

    • Yanıt Olarak İşaretleyen Aithusa 3 Temmuz 2012 Salı 13:30
    3 Temmuz 2012 Salı 13:12
  • Ibrahim,

    Sorun inan aslinda hic anlasilmiyor:) Hemen aklima gelen sorular:

    Notepad'e aktarmak derken:

    1) Maksat onu oyle cala kalem (belki de biraz formatlanmis) yazip bir notepad ile ekranda gostermek mi?

    2) Yoksa maksat veriyi, bilinen text formatlarindan birine aktarip baska ortamlardan okunmasini saglamak? (en cok kullanilan formatlar: SDF - System Data Format ya da diger adiyla Fixed Width Format - Sistem Veri Formati,  CSV - Comma Separated Value - Virgulle Ayrilmis Format, XML ).

    Sanirim demek istedigin 2.cisi yani bir veri ihrac rutini (data export). Eger oyleyse aslinda kolay. Asagida SQL server ornek Nortwind veri tabaninin Customer tablosundaki verileri, "Customer.csv" isimli bir dosyaya aktaran ornek var - excel bunu dogrudan okuyabilir mesela):

    var header = "Address,City,CompanyName,ContactName,ContactTitle,Country,"+
      "CustomerID,Fax,Phone,PostalCode,Region\n";
    
    var data = from c in Customers
      select string.Format("\"{0}\",\"{1}\",\"{2}\",\"{3}\",\"{4}\",\"{5}\",\"{6}\",\"{7}\",\"{8}\",\"{9}\",\"{10}\"",
      c.Address,
      c.City,
      c.CompanyName,
      c.ContactName,
      c.ContactTitle,
      c.Country,
      c.CustomerID,
      c.Fax,
      c.Phone,
      c.PostalCode,
      c.Region );
      File.WriteAllText(@"c:\Temp\CustomerData.csv", header,Encoding.Default);	
      File.AppendAllLines(@"c:\Temp\CustomerData.csv", data,Encoding.Default);	

    Not: Bu kod linq kullaniyor. Aynen bu haliyle LinqPad'de calisir. VS'da gerekli Linq classinin eklemen gerekecek ama fikir acik.


    3 Temmuz 2012 Salı 13:12
    Yanıtlayıcı
  • verdiğiniz kodlar çalışıyo ama sadece 1 kolonunkini alıyo bende 2 tane kolon var 2 sinide text dosyasına aktarmasını istiyorum şöyleki

    benim bi tarih bide yazı kolonlarım var text dosyasına aktardığında veri tabanında sırayla aynı id ye sahip olan kolonların içeriğini altalta aktarmasını istiyorum ..... yardımcı olursanız sevinirim ...

    Opps! Sorunu ben de anlamadim tam olarak :S Ama anladigim kadariyla tum kolonlari yazdirmak istiyorsun. Ben sadece ornek olmasi amaciyla bir kod yazmistim siz tablonuzun kolonlari hakkinda bilgi vermediginiz icin. Diger kolonlari  da rdr[0], rdr[1], rdr[2] .... seklinde yazdirabilirsiniz sw.WriteLine metodunda. Ben sadece ilk iki kolunu yazdirdim.
    • Yanıt Olarak İşaretleyen Aithusa 3 Temmuz 2012 Salı 13:30
    3 Temmuz 2012 Salı 13:20
  • benim yapmak istediğim şey şu kullanıcı tarih le birlikte bir yazı giriyo (günlük misali) ... kullanıcı istediği herhangi bizamanda yazdığı kayıtları okurken bir hata ortaya çaıkarsa ogünün kayıtlarını başka bi programda ( Tercihim Not defteri ) okumasını sağlamak ...

    yorumlarınızla sorumun cevabını buldum ilginiz için teşekkürler :)

    • Düzenleyen Aithusa 3 Temmuz 2012 Salı 13:30
    3 Temmuz 2012 Salı 13:28
  • SQL sorgundan o tarihi filtreleyip getirirsin o zaman. Asagidaki gibi duzenlersen sorgunu tekrar duzenlersin,

    SqlCommand cmd=new SqlCommand("select * from Tablo where tarih=@tarih",conn);
    
    cmd.Parameters.AddWithValue("@tarih",Convert.ToDateTime(txtTarih.Text));

    TextBox'a girilen tarihteki kayitlari getirir.

    • Yanıt Olarak İşaretleyen Aithusa 3 Temmuz 2012 Salı 13:39
    3 Temmuz 2012 Salı 13:37