c# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
c# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

2 Kasım 2008 Pazar

Dosyadan Okuma Ve Dosyaya Yazma İşlemleri

Bu yazımda System.IO isim alanı altında bulunan StreamReader ve StreamWriter sınıflarıyla herhangi bir text dosyasından okuma ve dosyaya yazma konularına değineceğim. Programımız bir Windows uygulaması olacak.

Dosyaya Yazma

İlk olarak programımıza System.IO kütüphanesini ekleyelim. Daha sonra formumuza 3 adet TextBox ekleyelim ve Name özelliklerini sırasıyla txtAd, txtSoyad, txtNo olarak belirleyelim. Ek olarak 1 adet Button ekleyelim ve Name özelliğini btnYaz olarak belirleyelim.
Form üzerine çit tıkladıktan sonra kod tarafında yol isimli string türünde bir genel değişken tanımlayalım ve aşağıdaki değeri verelim.
string yol = @"C:Kayıt.txt";
Bu yolla C sürücüsünde Kayıt.txt isimli bir metin belgesi oluşturacağız. Daha sonra yine genel değişken olarak StreamWriter tipinde yaz isimli bir değişken tanımlayalım. Bu değişkeni, bizim dosyamıza yazma işlemini gerçekleştirebilmek için tanımladık.
StreamWriter yaz;
Formu çift tıkladığımızda oluşan Form1_Load olayı içine aşağıdaki satırı yazalım.
yaz = new StreamWriter(yol, true);
Burada daha önce tanımladığımız yaz ismindeki değişkenden StreamWriter tipinde bir nesne oluşturuyoruz. Bu nesnedeki yol değeriyle C sürücüsünde Kayıt.txt isimli bir metin belgesi oluşuyor. true değeri ise bu metin belgesine veri ekleme işleminin olabileceğini belirtiyor. Yani içinde bir veri varsa onun sonraki satırından itibaren girdiğimiz veriyi ekliyor. Eğer false değeri girersek metin belgesinin içeriğini temizler ve yerine bizim girdiğimiz yeni verileri yazar.
Forma dönüp butonun üzerine çift tıklayarak btnYaz_Click olayını oluşturalım. Bu olay yordamının içine aşağıdaki satırları girelim.
string veri = txtAd + " " + txtSoyad + " " + txtNo;
yaz.WriteLine(veri);
yaz.Flush();
Bu satırlarda veri isimli değişkene TextBox’ lardaki veriler aralarında birer boşluk bırakılarak giriliyor. Daha sonraki satırda ise veri isimli değişkenin değeri metin belgesine aktarılmak üzere belleğe yazılıyor. Son satırda ise veri metin belgesine aktarılıyor. Son satır olmazsa veri bellekten bir süre sonra silinir ve belgeye yazılmaz.

1 Kasım 2008 Cumartesi

XML Dokümanlarını Kodla Oluşturmak

Bu yazımda günümüzde çok kullanılan XML dökümanlarını kodla oluşturmaya değineceğim.

Bir XML dökümanı hazırlamak için C# dilinde XmlTextWriter sınıfını kullanabiliriz. Bu sınıf yardımıyla XML olarak biçimlendirmek istediğimiz verileri istersek elle, istersek bir kaynaktan alarak kullanabiliriz. Ben bu yazımda verileri bir veri tabanından alarak XML formatına dönüştürmeyi tercih ettim. Kodlarımı konsol uygulaması şeklinde yaptım. Dilerseniz bir Windows uygulaması açıp sadece bir buton atıp, o butonun Buton_Click olayına bu kodları kopyala yapıştır yapabilirsiniz. Ve burada oluşturulacak dosyaların adresleri, aksi belirtilmedikçe program klasörünün kök dizini olarak belirlenmiştir. Neyse fazla uzatmadan konuya geçelim.

Programda kullanmak için ilk önce aşağıdaki gibi “Dünyadan” isimli bir veri tabanını ve bu veri tabanında “Ülkeler” isimli bir tabloyu oluşturup verileri girelim.

Burada Access veritabanı kullandım. SQL veritabanı kullanıldığında da çok fazla değişen bir şey olmayacaktır.

Kodları yazmaya başlamadan önce, ilk olarak programımıza
using System.Xml;
using System.Data;
using System.Data.OleDb;
kütüphanelerini ekleyelim. Bu kütüphaneler veri tabanından veri çekmek ve XML dökümanını oluşturmak için gereklidir aksi halde programımız derlenmez.

29 Ekim 2008 Çarşamba

ASP.NET de Image'e Veritabanından Resim Yüklemek

Web sitelerinde genellikle Image kontrollerine yüklemek istediğimiz resimler server’da dosya sisteminden çekilir.

Image1.ImageUrl = "C:Resim.jpg";

gibi bir kod parçasıyla istediğimiz resmi yükleriz. Ama bazen resimlerimizi veritabanında tutuyor olup oradan dinamik olarak yüklememiz gerekebilir. (Dynamically load image to Image control from database with Asp.NET) Böyle bir durumda doğrudan atama yapamayız. Ama şu şekilde bir çözüm bulabiliriz.

İlk olarak Default.aspx sayfasını açalım ve bir dynamicImage adlı bir Image kontrolü ekleyelim. Daha sonra yeni bir sayfa ekleyelim ve adını DynamicallyLoadImage.aspx olarak verelim. Eklediğimiz Image kontrolünün ImageUrl özelliğine DynamicallyLoadImage.aspx?ImageID=1 değerini verelim. Default.aspx sayfamızın kodları aşağıdaki gibidir.

Default.aspx



Ve yapacağımız ikinci şey ise DynamicallyLoadImage.aspx.cs dosyasına aşağıdaki kodları yazmak.

using System.Data.OracleClient;
public partial class DynamicallyLoadImage: System.Web.UI.Page {
 protected void Page_Load(object sender, EventArgs e) {
  DataTable dTable = new DataTable();
  string sql = “SELECT ImageData FROM ImageDatabase“;
  sql += “WHERE ImageID = ‘” + Request.QueryString["ImageID"] + ”‘”;
  OracleConnection con = new OracleConnection(“SERVER = (DESCRIPTION = (ADDRESS = “ + “ (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))” +  “ (CONNECT_DATA = (SERVICE_NAME = XE)));“ +  “uid = TAYFUN; pwd = TT123;”);
  OracleDataAdapter adp = new OracleDataAdapter(sql, con);
  adp.Fill(dTable);
  byte[] ImageData = (byte[])(dTable.Rows[0]["ImageData"]);
  try {
   Response.ContentType = “image / jpeg”;
   Response.BinaryWrite(ImageData);
  } catch {
   Response.Write(“Resim Bulunamadı”);
  }
 }
}

İlk olarak, ben Oracle veritabanı kullanmıştım, ama SQL Server kullanılırsa da bir şey fark etmez. İkinci olarak da ben sadece jpeg veya jpg uzantılı resimler için yaptım, farklı bir uzantı gelirse hata verecektir. Dilerseniz uzantıyı da veritabanında kaydederek herhangi bir uzantıya sahip resim için bunu yapabilirsiniz.

Resimlerin veritabanında tutulması güvenlik açısından iyidir, ama performans açısından iyi değildir. Resimleri dosya sisteminde tutup veritabanında da adresini tutarsanız programcılık mantığına daha uygun bir yapı oluşturmuş olursunuz.

9 Ağustos 2007 Perşembe

MDI Formlarda Parent Formun Arka Planını Değiştirme

Bu yazımda MDI formlarda parent formun arkaplan rengini değiştirmeyi anlatmaya çalışacağım. Eminim ki birçoğunuz parent formun arkaplan rengini ve ya resmini değiştirmeyi properties penceresinde ve kod tarafında denedi ama muhtemelen olmadı. Yaptığım bir projede bunu kullanmam gerekmişti. Aşağıdaki kodların işe yaramadığını görmüş olabilirsiniz. (Visual Studio .Net 2005’te öyle)

this.BackgroundImage = Image.FromFile("C:\\Resim.jpg");
this.BackColor = Color.Blue;

Ben yaptığım projede bazılarınızın da aklına geldiği gibi kalıtım kullandım. Ama kalıtımda da yukarıdaki kodları doğrudan yazınca (sadece renk değiştirmede) işe yaramıyor. Bunun için uyguladığım yöntemi kodları kısaltıp size aktarmak istiyorum.

İlk olarak MdiBackGround isimli yeni bir Windows projesi oluşturalım. Ve Form1’in kodlarını aşağıdaki gibi yazalım. (Form1 miras alınacak sınıf olarak kullanılacak)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
namespace MdiBackGround {
 public partial class Form1: Form {
  public Form1() {
   InitializeComponent();
  }
  protected override void OnPaint(PaintEventArgs e) {
   //if (!DesignMode)//eğer tasarım anında hata olursa bunu aktifleştirin.
   PaintBackground(e.Graphics);
  }
  [DefaultValue(false)]
  public new bool IsMdiContainer {
   get {
    return base.IsMdiContainer;
   }
   set {
    base.IsMdiContainer = value;
    if (!value) return;
    for (int i = 0; i < this.Controls.Count; i++) {
     MdiClient mdiClient = this.Controls[i] as MdiClient;
     if (mdiClient != null) {
      mdiClient.Paint += new PaintEventHandler(this.MdiClient_Paint);
      break;
     }
    }
   }
  }
  private void MdiClient_Paint(object sender, PaintEventArgs e) {
   //if (!DesignMode)//eğer tasarım anında hata olursa bunu aktifleştirin.
   PaintBackground(e.Graphics);
  }
  private void PaintBackground(Graphics g) {
   //this.BackgroundImage = Image.FromFile("C:\\Resim.jpg");
   //Burada doğrudan bu yazılınca çalışıyor.
   Rectangle rect = this.ClientRectangle;
   rect.Inflate(2, 2);
   SolidBrush sb = new SolidBrush(Color.Blue);
   g.FillRectangle(sb, rect);
   sb.Dispose();
  }
 }
}
Related Posts Plugin for WordPress, Blogger...