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.

18 Ekim 2008 Cumartesi

SQL Server'da Veritabanı Tablo Bilgilerini Listelemek

Bu yazımda sizlere MS SQL Server’da oluşturduğumuz bir veritabanının içindeki tabloları ve seçtiğimiz bir tablonun içindeki alanları listeleyen bir program yazacağım.

Her şeyden önce böyle bir şeye neden ihtiyacımız olur onu anlatmaya çalışayım. Diyelim ki Microsoft’un sorgu oluşturma arayüzü olan SQL Server Management Studio’daki Query Builder’i ya da piyasadaki diğer programları beğenmiyorsunuz.(Ben böyle bir şey demedim :P) Ya da kendinize ait bir Query Builder yapmak istiyorsunuz. O zaman böyle bir şeye ihtiyacınız düşecektir. Staj yaptığım yerde benden böyle bir şey yapmam istenmişti. Ben ORACLE ile yapmıştım ama arada hiçbir fark yok. Tek değişen sorgu cümleleri. Server’a uygun sorguyu gönderdikten sonra size sadece verileri düzenlemek kalıyor.

Programda iki adet DataGridView olacak. Birincisinde veritabanındaki tablolar listelenecek, ikincisinde ise birincide seçilen tabloya ait alanlar listelenecek. Aşağıdaki kodları programımıza ekleyelim.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace TabloIslemleriSQL
{
public partial class Form1 : Form
{
   public Form1()
   {
    InitializeComponent();
   }

   string conStr = "DATA SOURCE=.; INITIAL CATALOG = veritabani;
     USER ID = tayfun; PASSWORD = tayfun; INTEGRATED SECURITY = TRUE";
   SqlDataAdapter adp;
   DataTable dt;
   SqlConnection sqlCon;

   private void Form1_Load(object sender, EventArgs e)
   {
    try
    {
     dt = new DataTable();
     string sorgu = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
      WHERE TABLE_TYPE =‘BASE TABLE’ AND TABLE_NAME != ’sysdiagrams’";
     sqlCon = new SqlConnection(conStr);
     adp = new SqlDataAdapter(sorgu, sqlCon);
     adp.Fill(dt);
     dgrdTablolar.DataSource = dt;
    }
    catch { }
   }
   private void dgrdTablolar_SelectionChanged(object sender,
     EventArgs e)
   {
    try
    {
     dt = new DataTable();
     string tabloAdi = dgrdTablolar.CurrentRow.Cells[0]
       .Value.ToString();
     string sorgu = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA
       .COLUMNS WHERE TABLE_NAME = ‘" + tabloAdi + "’";
     adp = new SqlDataAdapter(sorgu, sqlCon);
     adp.Fill(dt);
     dgrdAlanlar.DataSource = dt;
    }
    catch { }
   }
}
}

15 Ekim 2008 Çarşamba

O Da Bir Zamanlar Güneşti

Ve bir gün ayrılmak istedi dünya güneşten,
Yeni yerler keşfetmek, evrenin karanlıklarına ışık tutmak için.
Diğer birkaçı da onu takip etti,
Ayrıldılar sonunda.

İlk zamanlar o kadar iyiydi ki her şey,
Ne de parlaktı alevi.
Kardeşleri bile hayran kalmıştı ona.
Sevinçle ilerlemeye başladı uzaklara doğru…
Aydınlattıkça aydınlanıyor,
Aydınlandıkça aydınlatıyordu...

Uzaklaştıkça yaşlanmaya başladı dünya.
Zaman o kadar yavaş ve hızlı geçiyordu ki,
Nasıl olduğunu anlamıyordu bile.
Ama olsun, o çok büyük bir varlıktı,
Herkes ona saygı duyuyor, onu seviyordu…

Zaman geçtikçe aslını unutmaya başladı,
Ateşi sönmeye, etrafını karanlıklar kaplamaya…
Ve içini bir korku kapladı,
Kardeşlerinden de ayrılmış, yapayalnız kalmıştı.
Artık eskisi kadar mutlu da değildi.
Hiç ayrılmasa mıydı acaba?

İçindeki umutlar bir bir tükendi.
Tüm parlaklığı azaldı,
Halbuki uzaklara gidip, umut saçacaktı,
Yol açacaktı yolunu kaybetmişlere,
Hayat verecekti sonsuz enerjisiyle,
Ama olmadı…

Sonunda alevi tamamen söndü.
Korkuyla sürüklenmeye başladı,
Karanlığa doğru…
Yapacak hiçbir şey yoktu,
Yok oluyordu.
Dipsiz bir kuyunun dibine doğru
Çaresizce ilerliyordu.

Bir an uzaklarda bir ışık gördü,
Düşündü,
Eğer ona ulaşabilirse eskisi gibi mutlu olacaktı,
O ona kaybettiği her şeyi verecekti,
Onun kölesi bile olabilirdi tekrar mutlu olmak için.

"O ne büyük bir lider." dedi ve çıktı yola.
Zar zor yolunu çevirdi ona doğru,
Ama yeterince dönememişti.
"Olsun" dedi, "O bana yol göstersin de;"
"Gerekirse yanına varamayayım."

Baktı ki tanıdık birileri de var burada,
Kardeşleri…
Onlardan yakın zamanda ayrılmıştı.
Tanıdı hepsini.
"Tamam" dedi.
"Doğru yerdeyim. Güvende…"

Liderini de bulmuştu artık,
Onunla yol alıyor,
Onunla uykuya dalıp tekrar uyanıyor,
Onunla aydınlanıyordu.
İçinde hayat vardı ama,
Bir hayatı yoktu. Olsun bu da ona yeterdi.

Ama bilmediği bir şey vardı,
O da bir zamanlar güneşti.
Şimdi liderim dediği,
Kölesi olduğu varlığın bir parçasıydı.
Onun kadar güçlü ve parlaktı…

Nasıl olup da unutmuştu geçmişini,
Nasıl olup da korkuyla kaplanmıştı,
Nasıl olup da hayallerinden bir bir vazgeçmişti…
Bunun cevabını o da bilmiyordu.


TT.

7 Ekim 2008 Salı

Yalnızlığa Alışmalı...

Bavulları hep toplu durmalı insanın...
Bir gün telefonların hiç çalmayabileceği hesaplanmalı...
Tül perde arkasından misafir yolu gözlemekten vaz­geçmeli...
İhanetlere, terkedilmelere, bir başına bırakılmalara hazırlıklı olmalı...
Yalnızlığa alışmalı...

Çünkü "omuz omuza" günlerin vakti geçti. Dayanışma... günümüz borsasının değer kaybeden hisse senet­lerinden biri artık...
Bireyin keşif çağı, geride kı­rık dökük yalnızlıklar bıraktı.
Terörün bile bireyselleştiği çağdayız. Zaman, birlikten kuvvet doğurma zamanı değil; zaman, tek başına dimdik ayakta kalabilmeyi becerme zamanıdır.

İşte o yüzden alışmalı yalnızlığa...
Sokaklar dolusu ıssızlıkla başbaşa yaşamayı göze almalı insan... Güvendiği dağlardaki karlara bakıp ders çıkarmalı... Hüzünlü bir şarkıyla paylaşı­lan gecelerde başım dayayacak bir omuz arama huylarından vazgeçmeli... Sofrada tek tabağa, tabakta az yemeğe alışmalı...
Romanlardan yalnızlığı yücelten paragraflar asmalı evin en görünür duvarlarına...
"Yalnızlık paylaşılmaz/ Paylaşmılsa yalnızlık olmaz" dizeleriyle başlamalı güne...
Telesekretere "şu anda size cevap verebilecek kimse yok" denmeli, "... belki de hiçbir zaman olmayacak..."
Cevapsızlığa, sessizliğe ısınmalı...

Oysa sessizlik haksızlığa alkıştır.
Haklılığın onuru yaşatır insanı... Susmanın utancı öldürür.
O yüzden en sessiz gecelerde "doğruydu, yaptım"la teselli bulmalı insan...
Feryada komşuların yetişmemesine, soğuk duvar diplerinde sessizce ağlaşmaya alışmalı... Kendiyle hesaplaşmaya çalışmalı...
Gece yastıkla ağlaşmaya, sabah aynayla gülüşmeye, kendiyle hüzünlenip, kendiyle keyiflenmeye hazır olmalı...
Hep başını alıp gidebilecek kadar cesur, ama hep kalıp savaşacakmış kadar gözüpek olabilmeli...
Sessizliği, sese dönüştürebilmeli...

Ve sırt çantasını her daim hazır tutmalı insan...
Yollarla barışmalı...
Yalnızlığa alışmalı...

Can Dündar
Related Posts Plugin for WordPress, Blogger...