<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>ÖMER ZORLU</title>
	<atom:link href="http://zorlu48.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://zorlu48.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Fri, 22 Apr 2011 20:45:43 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='zorlu48.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>ÖMER ZORLU</title>
		<link>http://zorlu48.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://zorlu48.wordpress.com/osd.xml" title="ÖMER ZORLU" />
	<atom:link rel='hub' href='http://zorlu48.wordpress.com/?pushpress=hub'/>
		<item>
		<title>*-*</title>
		<link>http://zorlu48.wordpress.com/2010/03/22/107/</link>
		<comments>http://zorlu48.wordpress.com/2010/03/22/107/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 22:41:33 +0000</pubDate>
		<dc:creator>zorlu48</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://zorlu48.wordpress.com/?p=107</guid>
		<description><![CDATA[bilgisayar bölümündeki tüm arkadaslara vizelerdebasarılar 01standardizasyon_ve_kalite kalite güvence soruların cevapları c#-2008-2009-Bahar-I c#-2008-2009-Bahar-II_cevap çalışma bilgisayar hakkın da bildikleriniz ve bilmedikleriniz hepsi burada tıkla indir. anında bilgilen bilgilendir. A&#8217; dan Z &#8216; ye BİLGİSAYAR TERİMLERİ 3D STUDIO MAX 3DMAX 10 Derste Frontpage acadar acadaralikacadmart sınav1<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zorlu48.wordpress.com&amp;blog=12343662&amp;post=107&amp;subd=zorlu48&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>bilgisayar bölümündeki tüm arkadaslara vizelerdebasarılar</p>
<p><a href="http://zorlu48.files.wordpress.com/2010/03/01standardizasyon_ve_kalite.pdf">01standardizasyon_ve_kalite</a></p>
<p><a href="http://zorlu48.files.wordpress.com/2010/03/soru-cewap.doc">kalite güvence soruların cevapları</a></p>
<p><img title="mehmet akif ersoy" src="http://zorlu48.files.wordpress.com/2010/03/akifersoy.jpg?w=400&#038;h=300" alt="mehmet akif ersoy" width="400" height="300" /></p>
<p><a href="http://zorlu48.files.wordpress.com/2010/03/c-2008-2009-bahar-i.doc">c#-2008-2009-Bahar-I</a></p>
<p><a href="http://zorlu48.files.wordpress.com/2010/03/c-2008-2009-bahar-ii_cevap.doc">c#-2008-2009-Bahar-II_cevap</a></p>
<p><a href="http://zorlu48.files.wordpress.com/2010/03/calisma.docx">çalışma</a></p>
<p><strong><em><span style="color:#3366ff;"> </span></em></strong></p>
<p><a href="http://zorlu48.files.wordpress.com/2010/03/a-dan-z-ye-bilgisayar-terimleri.doc"></a></p>
<p>bilgisayar hakkın da bildikleriniz ve bilmedikleriniz hepsi burada tıkla indir. anında bilgilen bilgilendir.</p>
<p><a href="http://zorlu48.files.wordpress.com/2010/03/a-dan-z-ye-bilgisayar-terimleri.doc">A&#8217;  dan  Z &#8216; ye  BİLGİSAYAR TERİMLERİ</a></p>
<p><a href="http://zorlu48.files.wordpress.com/2010/03/3d-studio-max.doc">3D STUDIO MAX</a></p>
<p><a href="http://zorlu48.files.wordpress.com/2010/03/3dmax.doc">3DMAX</a></p>
<p><a href="http://zorlu48.files.wordpress.com/2010/03/10-derste-frontpage.doc">10 Derste Frontpage</a></p>
<p><a href="http://zorlu48.files.wordpress.com/2010/03/acadar.doc">acadar</a></p>
<p><a href="http://zorlu48.files.wordpress.com/2010/03/acadaralik.doc">acadaralik</a><a href="http://zorlu48.files.wordpress.com/2010/03/acadmart1.doc">acadmart</a></p>
<p>sınav1</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zorlu48.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zorlu48.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zorlu48.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zorlu48.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zorlu48.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zorlu48.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zorlu48.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zorlu48.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zorlu48.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zorlu48.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zorlu48.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zorlu48.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zorlu48.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zorlu48.wordpress.com/107/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zorlu48.wordpress.com&amp;blog=12343662&amp;post=107&amp;subd=zorlu48&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zorlu48.wordpress.com/2010/03/22/107/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41d54a7e6480ec76f756dbc97a53cba1?s=96&#38;d=wavatar&#38;r=G" medium="image">
			<media:title type="html">zorlu48</media:title>
		</media:content>

		<media:content url="http://zorlu48.files.wordpress.com/2010/03/akifersoy.jpg" medium="image">
			<media:title type="html">mehmet akif ersoy</media:title>
		</media:content>
	</item>
		<item>
		<title>SQL veri tabanı</title>
		<link>http://zorlu48.wordpress.com/2010/03/22/sql-veri-tabani/</link>
		<comments>http://zorlu48.wordpress.com/2010/03/22/sql-veri-tabani/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 21:21:22 +0000</pubDate>
		<dc:creator>zorlu48</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://zorlu48.wordpress.com/2010/03/22/sql-veri-tabani/</guid>
		<description><![CDATA[SQL Server&#8217;da yer alan veritabanlarınları verileri .mdf ya da .ndf uzantılı dosyalarda saklarlar ancak SQL Server&#8217;ın mimarisi gereği .ldf uzantılı bir dosya da logları yazmak amacı ile mutlaka kullanılır. Bu dosya tiplerinden .mdf ve .ldf uzantılı olanları bir veritabanında mutlaka yer alıyor olmalıdır. Veriler mdf uzantılı dosyada saklanacak ve gerçekleştirilecek olan her transaction&#8217;ında da ldf [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zorlu48.wordpress.com&amp;blog=12343662&amp;post=99&amp;subd=zorlu48&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://zorlu48.files.wordpress.com/2010/03/sqlserver2008.jpg"><img class="size-full wp-image-126 alignleft" title="SqlServer2008" src="http://zorlu48.files.wordpress.com/2010/03/sqlserver2008.jpg?w=305&#038;h=67" alt="" width="305" height="67" /></a>SQL Server&#8217;da yer alan veritabanlarınları verileri .mdf ya da .ndf uzantılı dosyalarda saklarlar ancak SQL Server&#8217;ın mimarisi gereği .ldf uzantılı bir dosya da logları yazmak amacı ile mutlaka kullanılır. Bu dosya tiplerinden .mdf ve .ldf uzantılı olanları bir veritabanında mutlaka yer alıyor olmalıdır. Veriler mdf uzantılı dosyada saklanacak ve gerçekleştirilecek olan her transaction&#8217;ında da ldf mutlaka kullanılıyor olacaktır. Gerek performans gerek de depolama alanın değiştirilmesi gereksinimleri ile bu dosyaların yerlerinin değiştirilmesi veritabanı kullanıma alındıktan uzunca bir süre sonra da gündeme gelebilir, peki bu şekilde bir senaryoda nasıl bir çözüme gideceğiz? Kullanıcı veritabalarında bu durumu iki farklı şekilde çözebiliriz, eğer veritabları farklı bir instance&#8217;a alınacak ise Detach ve Attach çözüm olacaktır ancak aynı eğer instance değişmiyor ise tek çözüm Detach &#8211; Attach değildir ki keza sistem veritabanlarını detach edemezsiniz. Sistem veritabanlarının dosyalarını ve bu dosyaların fiziksel adreslerini görüntülemek için aşağıdaki kodları kullanabilirsiniz, tabi ki kullanıcı veritabanlarında da aşağıda açıkladığımız kodlar çalışmaya devam edeceklerdir. SELECT name, physical_name AS CurrentLocation FROM sys.master_files WHERE database_id = DB_ID(N&#8217;tempdb&#8217;); GO Yukarıdaki kodlar TempDB&#8217;nin dosyalarını ve bu dosyaların bulunduğu fiziksel adresleri listeliyor olacaktır. Kodlar çalıştırıldıktan sonra aşağıdaki gibi bir sonuç kümesi ile karşılaşacaksınız.</p>
<p><a href="http://zorlu48.files.wordpress.com/2010/03/resim1.jpg"><img class="aligncenter size-full wp-image-127" title="resim1" src="http://zorlu48.files.wordpress.com/2010/03/resim1.jpg?w=400&#038;h=57" alt="" width="400" height="57" /></a><br />
Dosyaların lokasyonunu değiştirmek için ise aşağıdaki kodlar çalıştırılabilir. Aşağıdaki kodlarda yer alan FILENAME sözcüğü aracılığı ile belirtilen bölüm dosyaların yeni lokasyonu olacaktır.<br />
USE master; GO ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = &#8216;E:\SQLData\tempdb.mdf&#8217;); GO ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = &#8216;F:\SQLLog\templog.ldf&#8217;); GO<br />
SQL Server&#8217;ın servisi restart edilmeden bu ayarlar geçerli olmayacaktır. Bu kodlar çalıştırıldıktan sonra servis durdurulup dosyalar yeni lokasyonlarına taşınmalıdır, ardından servis yeniden start edildikten sonra tempdb&#8217;nin dosyalarının yeni yeri ayarlanmış olacaktır.<br />
Yukarıdaki kodlar yardımı ile kullanıcı veritabanları ile sistem veritabanlarının dosyalarının yerlerini sorunsuz bir şekilde değiştirebilirsiniz ancak kodları dikkatle incelerseniz USE master şeklinde başladığını göreceksiniz peki Master veritabanının dosyalarının yeri nasıl değişecektir? Master veritabanı üzerinde gerçekleştirilecek olan değişikliklerin pek çoğu startup parametreleri ile gerçekleştirilir, yani servis start edilirken ayarlanır. Startup parametrelerine erişip değiştirmek ya da yenilerini eklemek için Start Menü&#8217;den All Programs&#8211;&gt;Microsoft SQL Server 2008&#8211;&gt;Configuration Tools aracılığı ile gerekli kısa yolları görüntüleyip oradan da SQL Server Configuration Manager&#8217;ı açabilirsiniz. SQL Server Configuration Manager SQL Server&#8217;ın servislerini listeliyor olacaktır burada ayarlama yapılmak istenen instance&#8217;ın DataBase Engine servisinin üzerinde sağ tıklayıp, özellikleri görüntülendikten sonra açılan pencerede Advanced tabına geçilir. Advanced tabında da Startup Parameters bölümü değiştirilebilir. Bu bölümde zaten bir takım ayarların yapılmış olduğu gözlenmenecektir.<br />
-dC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\master.mdf; -eC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\LOG\ERRORLOG;<br />
-lC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\mastlog.ldf<br />
Bu parametrelerden -d Master veritabanın data dosyasının fiziksel adresini, -l log dosyasının fiziksel adresini ve -e parametresi de hata loglarının yer alacak olduğu dizini belirtir. Bu parametreler yenileri ile değiştirilip ayarları kaydedip ardından servisi durdurduktan sonra, master veritabanının dosyalarını yeni yerine taşınır. Servis yeniden start edildikten sonra master veritabanı belirtilen yeni path&#8217;deki dosyaları kullanıyor olacaktır.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zorlu48.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zorlu48.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zorlu48.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zorlu48.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zorlu48.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zorlu48.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zorlu48.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zorlu48.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zorlu48.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zorlu48.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zorlu48.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zorlu48.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zorlu48.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zorlu48.wordpress.com/99/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zorlu48.wordpress.com&amp;blog=12343662&amp;post=99&amp;subd=zorlu48&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zorlu48.wordpress.com/2010/03/22/sql-veri-tabani/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41d54a7e6480ec76f756dbc97a53cba1?s=96&#38;d=wavatar&#38;r=G" medium="image">
			<media:title type="html">zorlu48</media:title>
		</media:content>

		<media:content url="http://zorlu48.files.wordpress.com/2010/03/sqlserver2008.jpg" medium="image">
			<media:title type="html">SqlServer2008</media:title>
		</media:content>

		<media:content url="http://zorlu48.files.wordpress.com/2010/03/resim1.jpg" medium="image">
			<media:title type="html">resim1</media:title>
		</media:content>
	</item>
		<item>
		<title>Görsel Programlama Notları</title>
		<link>http://zorlu48.wordpress.com/2010/03/22/gorsel-programlama-notlari/</link>
		<comments>http://zorlu48.wordpress.com/2010/03/22/gorsel-programlama-notlari/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 21:17:34 +0000</pubDate>
		<dc:creator>zorlu48</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://zorlu48.wordpress.com/?p=97</guid>
		<description><![CDATA[shirbazla progarama vt ekleme ve dising VS de boş bir form açarak işe başlıyoruz. arkasından menü çubuğundan data seçili iken altındaki show data sources seçiyoruz. toolbax un çıktığı tarafta yeni bir ekran gelir. data source ekranı. içindeki yazıların altında bulunan add new data source tıklanarak işe başlanır. Gelen ekranda database seçin devama basın burada aşğıdaki [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zorlu48.wordpress.com&amp;blog=12343662&amp;post=97&amp;subd=zorlu48&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="color:#008080;">shirbazla progarama vt ekleme ve dising</span></p>
<p style="text-align:left;"><span style="color:#008080;"> <span style="color:#000000;">VS de boş bir form açarak işe başlıyoruz. arkasından menü çubuğundan data seçili iken altındaki show data sources seçiyoruz.</span></span></p>
<p style="text-align:left;"><span style="color:#008080;"><span style="color:#000000;">toolbax un çıktığı tarafta yeni bir ekran gelir. data source ekranı. içindeki yazıların altında bulunan add new data source tıklanarak işe başlanır. </span></span></p>
<p style="text-align:center;"><span style="color:#008080;"><span style="color:#000000;"> Gelen ekranda database seçin devama basın</span></span></p>
<p style="text-align:left;"><span style="color:#008080;"><span style="color:#000000;"> </span></span></p>
<p style="text-align:left;"><span style="color:#008080;"><span style="color:#000000;"><a href="http://zorlu48.files.wordpress.com/2010/03/ekran-alintisi1.jpg"><img class="aligncenter size-full wp-image-121" title="Ekran Alıntısı" src="http://zorlu48.files.wordpress.com/2010/03/ekran-alintisi1.jpg?w=313&#038;h=101" alt="" width="313" height="101" /></a></span></span></p>
<p style="text-align:center;">burada aşğıdaki resimde gördünüz yer işaretli iken Ok yapın</p>
<p style="text-align:left;"><span style="color:#008080;"><span style="color:#000000;"><a href="http://zorlu48.files.wordpress.com/2010/03/21.jpg"><img class="aligncenter size-full wp-image-122" title="2" src="http://zorlu48.files.wordpress.com/2010/03/21.jpg?w=497&#038;h=256" alt="" width="497" height="256" /></a></span></span></p>
<p style="text-align:left;">daha  sonrA gelen ekranda ise hangi veri tabanı dosyasıyla işiniz varsa tasarlamak istediğiniz vt yi bulmanız için browser buttonuna tıklayın</p>
<p style="text-align:left;">veri tabanını seçtikten sonra ise test connection arkasındanda ok buttonlarına basın. (aşağıdaki resimde bulunan )</p>
<p style="text-align:left;">
<p style="text-align:left;"><span style="color:#008080;"><span style="color:#000000;"><a href="http://zorlu48.files.wordpress.com/2010/03/41.jpg"><img class="aligncenter size-full wp-image-123" title="4" src="http://zorlu48.files.wordpress.com/2010/03/41.jpg?w=383&#038;h=389" alt="" width="383" height="389" /></a></span></span></p>
<p style="text-align:left;"><span style="color:#008080;"><span style="color:#000000;"> sonra gelen ekranda ise veri tabanı için de bulunan tablolar görünür burada ister işlem yapacağımız tek tablo seçilir ister hepsiniseçebiliriz bunun için başlarındaki tik leri işaretlemeniz gerekliarkasındanda ..  next&#8230;next&#8230; finish &#8230;.  tıklayarak işi bitiriyoruz  data source ekranında veri tabanı yada tablolar gözükecektir.  istediğimiz tabloyu sürükleyip bırakarak forma güzel bir görselliğe sahip program elde ederiz..</span></span></p>
<p style="text-align:left;"><span style="color:#008080;"><span style="color:#000000;"> </span></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zorlu48.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zorlu48.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zorlu48.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zorlu48.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zorlu48.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zorlu48.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zorlu48.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zorlu48.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zorlu48.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zorlu48.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zorlu48.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zorlu48.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zorlu48.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zorlu48.wordpress.com/97/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zorlu48.wordpress.com&amp;blog=12343662&amp;post=97&amp;subd=zorlu48&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zorlu48.wordpress.com/2010/03/22/gorsel-programlama-notlari/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41d54a7e6480ec76f756dbc97a53cba1?s=96&#38;d=wavatar&#38;r=G" medium="image">
			<media:title type="html">zorlu48</media:title>
		</media:content>

		<media:content url="http://zorlu48.files.wordpress.com/2010/03/ekran-alintisi1.jpg" medium="image">
			<media:title type="html">Ekran Alıntısı</media:title>
		</media:content>

		<media:content url="http://zorlu48.files.wordpress.com/2010/03/21.jpg" medium="image">
			<media:title type="html">2</media:title>
		</media:content>

		<media:content url="http://zorlu48.files.wordpress.com/2010/03/41.jpg" medium="image">
			<media:title type="html">4</media:title>
		</media:content>
	</item>
		<item>
		<title>aspx çalışmaları</title>
		<link>http://zorlu48.wordpress.com/2010/03/22/aspx-calismalari/</link>
		<comments>http://zorlu48.wordpress.com/2010/03/22/aspx-calismalari/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 21:14:03 +0000</pubDate>
		<dc:creator>zorlu48</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://zorlu48.wordpress.com/?p=93</guid>
		<description><![CDATA[DÖVİZ ÇEVİRİCİ UYGULAMASI Bu makalede, evrensel döviz kurlarının anlık bilgisini alan bir web servis kullanılarak, döviz çeviri uygulaması yapılmaktadır. Kullanacağımız web servis; bir dövizden diğer dövize dönüştürme oranı vermektedir. Bu değerler anlık olarak değişmekte ve dünya üzerindeki tüm döviz cinslerini barındırmaktadır. Web servisini kullanabilmek için öncelikle servisi projemize referans olarak tanımlayalım. Bu işlem için; proje [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zorlu48.wordpress.com&amp;blog=12343662&amp;post=93&amp;subd=zorlu48&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="color:#ff0000;"> DÖVİZ ÇEVİRİCİ UYGULAMASI</span><br />
<a href="http://zorlu48.files.wordpress.com/2010/03/1.jpg"><img class="aligncenter size-full wp-image-114" title="1" src="http://zorlu48.files.wordpress.com/2010/03/1.jpg?w=500&#038;h=366" alt="" width="500" height="366" /></a>Bu makalede, evrensel döviz kurlarının anlık bilgisini alan bir web servis kullanılarak, döviz çeviri uygulaması yapılmaktadır.</p>
<p>Kullanacağımız web servis; bir dövizden diğer dövize dönüştürme oranı vermektedir. Bu değerler anlık olarak değişmekte ve dünya üzerindeki tüm döviz cinslerini barındırmaktadır.</p>
<p>Web servisini kullanabilmek için öncelikle servisi projemize referans olarak tanımlayalım. Bu işlem için; proje sağ tuş menüsünden Add Web Reference komutunu çalıştıyoruz. Kullanacağımız servisin URL adresi; http://www.webservicex.net/CurrencyConvertor.asmx?WSDL</p>
<p>Komutu çalıştırdıktan sonra karşımıza çıkan penceredeki URL kısmına web servisinin adresini yazıp Go tuşuna basıyoruz. Servise bağlanıldığında servisin içindeki metodları görüntüleyen ekranla karşılaşıyoruz. Web reference name bölümüne istediğiniz herhangi bir isim yazarak, Add Reference düğmesine basıyoruz.</p>
<p>Object Browser bölümünden web servisi incelediğimiz de Currency adında döviz cinslerini barındıran bir Enum, CurrencyConvertor adında çeviri yapacağımız metodu barındıran bir class olduğunu görebiliriz.<br />
Web sayfasının tasarımı aşağıdaki gibidir;</p>
<p><img title="2" src="http://zorlu48.files.wordpress.com/2010/03/2.jpg?w=337&#038;h=468" alt="" width="337" height="468" /></p>
<p>&lt;table cellpadding=&#8221;3&#8243; cellspacing=&#8221;3&#8243; align=&#8221;center&#8221;&gt;<br />
&lt;tr style=&#8221;color: #000080&#8243;&gt; &lt;td align=&#8221;center&#8221;&gt; Bu Dövizden&lt;/td&gt; &lt;td style=&#8221;color: #000080&#8243; &gt; &lt;/td&gt;<br />
&lt;td align=&#8221;center&#8221;&gt; Bu Dövize&lt;/td&gt; &lt;/tr&gt;<br />
&lt;tr&gt; &lt;td&gt;<br />
&lt;asp:ListBox ID=&#8221;lstDoviz1&#8243; runat=&#8221;server&#8221; Height=&#8221;200px&#8221; Width=&#8221;150px&#8221; ForeColor=&#8221;#000066&#8243;&gt; &lt;/asp:ListBox&gt; &lt;/td&gt;<br />
&lt;td style=&#8221;color: #000080&#8243; &gt; &gt;&gt;&lt;/td&gt; &lt;td&gt;<br />
&lt;asp:ListBox ID=&#8221;lstDoviz2&#8243; runat=&#8221;server&#8221; Height=&#8221;200px&#8221; Width=&#8221;150px&#8221; ForeColor=&#8221;#000066&#8243;&gt; &lt;/asp:ListBox&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td align=&#8221;center&#8221; colspan=&#8221;3&#8243;&gt;<br />
&lt;asp:Button ID=&#8221;Button1&#8243; runat=&#8221;server&#8221; BackColor=&#8221;White&#8221; Font-Bold=&#8221;True&#8221; ForeColor=&#8221;#000066&#8243; Text=&#8221;Dönüştür&#8221; Width=&#8221;150px&#8221; /&gt; &lt;/td&gt; &lt;/tr&gt;<br />
&lt;tr&gt; &lt;td align=&#8221;center&#8221;&gt; &lt;asp:Label ID=&#8221;lblDoviz1&#8243; runat=&#8221;server&#8221; ForeColor=&#8221;#000099&#8243;&gt;&lt;/asp:Label&gt; &lt;/td&gt;<br />
&lt;td align=&#8221;center&#8221; style=&#8221;color: #000080&#8243;&gt; =&lt;/td&gt;<br />
&lt;td align=&#8221;center&#8221;&gt; &lt;asp:Label ID=&#8221;lblDoviz2&#8243; runat=&#8221;server&#8221; ForeColor=&#8221;#000099&#8243;&gt;&lt;/asp:Label&gt; &lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;/table&gt;<br />
Sayfa açıldığında, web servisteki döviz kurlarını listboxlarda görüntülemek için; Enum classını kullanarak döviz kurlarının isim ve değerlerini listbox öğesi olarak ekliyoruz.<br />
Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load</p>
<p><img title="3" src="http://zorlu48.files.wordpress.com/2010/03/3.jpg?w=500&#038;h=355" alt="" width="500" height="355" /></p>
<p>If Not Page.IsPostBack Then</p>
<p>Dim s As String<br />
Dim i As Integer = 0</p>
<p>For Each s In [Enum].GetValues(GetType(net.webservicex.www.Currency))</p>
<p>Dim oge As New ListItem<br />
oge.Value = s<br />
oge.Text = [Enum].GetName(GetType(net.webservicex.www.Currency), i)<br />
lstDoviz1.Items.Add(oge)<br />
lstDoviz2.Items.Add(oge)<br />
i += 1<br />
Next s</p>
<p>End If<br />
End Sub<br />
Bir döviz kurundan diğer döviz kuruna çeviri için servisin, ConversionRate metodu kullanılmaktadır. Metod için iki parametre belirtmek gerekmektedir; ilk parametre hangi döviz kurunun, ikinci parametre hangi döviz kuruna çevirileceğini belirtir. Sayfayı çalıştırdığınızda görüntü Resim1 &#8216;deki gibidir.<br />
Protected Sub btnDonustur_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnDonustur.Click</p>
<p><img title="4" src="http://zorlu48.files.wordpress.com/2010/03/4.jpg?w=432&#038;h=468" alt="" width="432" height="468" /></p>
<p>Dim kur As Double = CC.ConversionRate(lstDoviz1.SelectedValue, lstDoviz2.SelectedValue)<br />
lblDoviz1.Text = &#8220;1 &#8221; &amp; lstDoviz1.SelectedItem.Text<br />
lblDoviz2.Text = kur &amp; &#8221; &#8221; &amp; lstDoviz2.SelectedItem.Text</p>
<p>End Sub</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zorlu48.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zorlu48.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zorlu48.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zorlu48.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zorlu48.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zorlu48.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zorlu48.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zorlu48.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zorlu48.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zorlu48.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zorlu48.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zorlu48.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zorlu48.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zorlu48.wordpress.com/93/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zorlu48.wordpress.com&amp;blog=12343662&amp;post=93&amp;subd=zorlu48&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zorlu48.wordpress.com/2010/03/22/aspx-calismalari/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41d54a7e6480ec76f756dbc97a53cba1?s=96&#38;d=wavatar&#38;r=G" medium="image">
			<media:title type="html">zorlu48</media:title>
		</media:content>

		<media:content url="http://zorlu48.files.wordpress.com/2010/03/1.jpg" medium="image">
			<media:title type="html">1</media:title>
		</media:content>

		<media:content url="http://zorlu48.files.wordpress.com/2010/03/2.jpg" medium="image">
			<media:title type="html">2</media:title>
		</media:content>

		<media:content url="http://zorlu48.files.wordpress.com/2010/03/3.jpg" medium="image">
			<media:title type="html">3</media:title>
		</media:content>

		<media:content url="http://zorlu48.files.wordpress.com/2010/03/4.jpg" medium="image">
			<media:title type="html">4</media:title>
		</media:content>
	</item>
		<item>
		<title>pic program kodları</title>
		<link>http://zorlu48.wordpress.com/2010/03/13/90/</link>
		<comments>http://zorlu48.wordpress.com/2010/03/13/90/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 19:08:02 +0000</pubDate>
		<dc:creator>zorlu48</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://zorlu48.wordpress.com/2010/03/13/90/</guid>
		<description><![CDATA[dersten program 8 tek ledi tek butonla hem yama hem söndürme ; buradaki komutlar butana basılınca yanık olan ledi söndürmesi sönük olan ledi yakması mesela tek led bağlı ise .. list p=16f84A status equ 0&#215;03 porta equ 0&#215;05 portb equ 0&#215;06 trisa equ 0&#215;85 trisb equ 0&#215;86                 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zorlu48.wordpress.com&amp;blog=12343662&amp;post=90&amp;subd=zorlu48&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;"><span style="color:#ff6600;">dersten program 8 tek ledi tek butonla hem yama hem söndürme</span></p>
<p style="text-align:left;">
<p style="text-align:left;"><a href="http://zorlu48.files.wordpress.com/2010/03/ekran-alintisi.jpg"><img class="aligncenter size-full wp-image-112" title="Ekran Alıntısı" src="http://zorlu48.files.wordpress.com/2010/03/ekran-alintisi.jpg?w=500&#038;h=173" alt="" width="500" height="173" /></a>; <span style="color:#ff0000;"> buradaki komutlar</span> <span style="color:#ff0000;">butana basılınca yanık olan ledi söndürmesi sönük olan ledi yakması mesela tek led bağlı ise ..</span></p>
<p style="text-align:center;">list	p=16f84A<br />
status	equ	0&#215;03<br />
porta	equ	0&#215;05<br />
portb	equ	0&#215;06<br />
trisa	equ	0&#215;85<br />
trisb	equ	0&#215;86                                      	;tanımlamalar..<br />
yükleme ;etiket0<br />
clrf	porta<br />
clrf	portb<br />
bsf	status,5<br />
clrf	trisb<br />
movlw	0xFF<br />
movwf	trisa<br />
bcf	status,5                                 ;giriş çıkış ayarlamaları<br />
but_con ; etiket1<br />
btfss	porta,0<br />
goto	but_con<br />
but_bırak ;etiket2<br />
btfsc	porta,0<br />
goto	but_bırak<br />
btfss	portb,0<br />
goto	led_yak<br />
goto	led_kapa<br />
led_yak ;etiket3<br />
bsf	portb,0<br />
goto	but_con<br />
led_kapa ;etiket4<br />
bcf	portb,0<br />
goto	but_con<br />
end</p>
<p style="text-align:center;">dersten program 7:  8 ledin 4 ü yanık ve butona basılınca diğer 4 led yanacak ve yanan ledler sönecek.</p>
<p style="text-align:left;"><a href="http://zorlu48.files.wordpress.com/2010/03/a5-dising.jpg"><img class="aligncenter size-full wp-image-129" title="a5 dising" src="http://zorlu48.files.wordpress.com/2010/03/a5-dising.jpg?w=499&#038;h=210" alt="" width="499" height="210" />s</a>s</p>
<p style="text-align:center;">list	p=16f84A<br />
status	equ	0&#215;03<br />
porta	equ	0&#215;05<br />
portb	equ	0&#215;06<br />
trisa	equ	0&#215;85<br />
trisb	equ	0&#215;86                                          	;tanımlamalar..<br />
yükleme<br />
clrf	porta<br />
clrf	portb<br />
bsf	status,5<br />
clrf	trisb<br />
movlw	0xFF<br />
movwf	trisa<br />
bcf	status,5                         ;giriş çıkış ayarlamaları<br />
basla<br />
btfss	porta,0<br />
goto	led_yak<br />
goto	led_kapa<br />
led_yak<br />
movlw	0x0F<br />
movwf	portb<br />
goto	basla<br />
led_kapa<br />
movlw	0xF0<br />
movwf	portb<br />
goto	basla<br />
end</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zorlu48.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zorlu48.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zorlu48.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zorlu48.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zorlu48.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zorlu48.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zorlu48.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zorlu48.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zorlu48.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zorlu48.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zorlu48.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zorlu48.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zorlu48.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zorlu48.wordpress.com/90/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zorlu48.wordpress.com&amp;blog=12343662&amp;post=90&amp;subd=zorlu48&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zorlu48.wordpress.com/2010/03/13/90/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41d54a7e6480ec76f756dbc97a53cba1?s=96&#38;d=wavatar&#38;r=G" medium="image">
			<media:title type="html">zorlu48</media:title>
		</media:content>

		<media:content url="http://zorlu48.files.wordpress.com/2010/03/ekran-alintisi.jpg" medium="image">
			<media:title type="html">Ekran Alıntısı</media:title>
		</media:content>

		<media:content url="http://zorlu48.files.wordpress.com/2010/03/a5-dising.jpg" medium="image">
			<media:title type="html">a5 dising</media:title>
		</media:content>
	</item>
		<item>
		<title>C# ile setup oluşturma</title>
		<link>http://zorlu48.wordpress.com/2010/03/11/c-ile-setup-olusturma/</link>
		<comments>http://zorlu48.wordpress.com/2010/03/11/c-ile-setup-olusturma/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 11:51:15 +0000</pubDate>
		<dc:creator>zorlu48</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://zorlu48.wordpress.com/?p=65</guid>
		<description><![CDATA[Öncelikle setup ını alacağınız projenin tasarım durumunda çalışırken solution explorer pencereside solution &#8220;..&#8221;projectsekmesini sağ tıklayarak, gelen menüde ADD den&#62;&#62;new project&#8217;i seçin. gelen ekrandaise project type kısmında other project type yi açın, bu kısım altında bulunan setup end deploment i seçtikten sonra, templates kısmında setup project&#8217;i seçin ve altaki isim bloğuna projenize ait adı  yada istediğiniz [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zorlu48.wordpress.com&amp;blog=12343662&amp;post=65&amp;subd=zorlu48&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="attachment_82" class="wp-caption alignright" style="width: 257px"><a href="http://zorlu48.files.wordpress.com/2010/03/solexpo1.jpg"><img class="size-full wp-image-82 " title="solexpo" src="http://zorlu48.files.wordpress.com/2010/03/solexpo1.jpg?w=247&#038;h=106" alt="" width="247" height="106" /></a><p class="wp-caption-text">İŞARETLİ YERDE SAĞ TILAYARAK ..</p></div>
<p style="text-align:left;">Öncelikle setup ını alacağınız projenin tasarım durumunda çalışırken<span style="color:#ff0000;"> solution explorer</span> pencereside <span style="color:#ff0000;">solution &#8220;..&#8221;projectsekmesini</span> sağ tıklayarak, gelen menüde <span style="color:#ff0000;">ADD den&gt;&gt;new project&#8217;i</span> seçin. gelen ekrandaise <span style="color:#ff0000;">project type</span> kısmında other<span style="color:#ff0000;"> project type </span>yi açın, bu kısım altında bulunan <span style="color:#ff0000;">setup end deploment i</span> seçtikten sonra,<span style="color:#ff0000;"> templates </span>kısmında<span style="color:#ff0000;"> setup project&#8217;i </span>seçin ve altaki isim bloğuna projenize ait adı  yada istediğiniz farklı bir adı yazın. ve OK  tıklayın.<a href="http://zorlu48.files.wordpress.com/2010/03/ekran-alintisi-copy.jpg"><img class="aligncenter size-full wp-image-84" title="Ekran Alıntısı copy" src="http://zorlu48.files.wordpress.com/2010/03/ekran-alintisi-copy.jpg?w=477&#038;h=298" alt="" width="477" height="298" /></a></p>
<p style="text-align:justify;">şimdi gelen ekranda<span style="color:#ff0000;"> system on target machina</span> altındaki <span style="color:#ff0000;">applicasion folder</span> seçili iken properties kısmıda <span style="color:#ff0000;">defaultlocation</span> nu adresi isterseniz değiştiri isterseni olduğu gibi bırakabilirsiniz.  burada yazacağınız adres ile program setup halinde başka bir bilgisayarda kullanılacağı zaman kendisini verdiğiniz adrese kurar. değişiklik yapmazsanız ise program filese otamatik olarak kurulur.</p>
<p style="text-align:justify;">applicasionfolder seçili iken sağ tıklarsanız gelen menüden <span style="color:#ff0000;">ADD&gt;&gt;folder</span> seçip tıklarsanız bu kısmın altına bir klasör oluştuğunu görürsünüz o klasöre vereceğiniz isim program files yada nereye kuracaksanız orada görükecek olan ismidir.</p>
<p style="text-align:justify;">şimdide yine system on target machina bölümünden users desktop seçin ve sağ tılayın  <span style="color:#ff0000;">ADD&gt;&gt;folder</span> dan bir isim verin ve ine  <span style="color:#ff0000;"> ADD&gt;&gt;project output</span> seçin ve oradan primary output seçin ve OK basın. buradaki amaç ise setup kurulunca masaüstüne  programın kısayolunu atmasıdır.<span style="color:#ff0000;"> ADD&gt;&gt;folder </span>ile verilen isim de masaüstünde programın gözükecek olan isim dir.</p>
<p style="text-align:justify;">yine <span style="color:#ff0000;">system on target machina</span> bölümünden  users programs menü seçilerek sağ tıkanır aynı işlemler buradada yapılır.<span style="color:#ff0000;">ADD&gt;&gt;folderdan</span> isim ve <span style="color:#ff0000;">ADD&gt;&gt;project ouputtan</span> <span style="color:#ff0000;"> primary imput</span> seçilir.bundaki amaç ise setup  kurulunca başlat menüsüne eklenmesini sağlamaktır. ve verilen isimde başlat menüsünde görükecek olan ismidir.<a href="http://zorlu48.files.wordpress.com/2010/03/ssd-copy.jpg"><img class="aligncenter size-full wp-image-86" title="SSD copy" src="http://zorlu48.files.wordpress.com/2010/03/ssd-copy.jpg?w=443&#038;h=266" alt="" width="443" height="266" /></a></p>
<p style="text-align:justify;">şimdi ise solution explorer penceresinde SETUP dosyasının dikkat edin ismini kendinizin verdiği olan dosyayı seçin<span style="color:#ff0000;"> <span style="text-decoration:underline;">depences klasörünü değil</span></span><span style="text-decoration:underline;">.</span> sağ tılayarak gelen menüden <span style="color:#ff0000;">wiev&gt;&gt;user infarance</span> seçin.   gelen ekranda welcome seçili iken properties ten <span style="color:#ff0000;">copyrighwarning ve welcome text</span> isimlerini değiştrebilirsiniz. buradaki amaç setup kurulurken kurulum esnasında kulanıcıya verilen mesajdır. gerekli bilgilerde buraya yazılabilir.</p>
<p style="text-align:justify;">sırada isestupun son işlemi kaldı setupun olşması vegirdiğimiz bilgilerin kaydı için menü çubuğundan<span style="color:#ff0000;"> <span style="text-decoration:underline;"> build menüsüne girerek burada build &#8220;projeye verdiniz ad&#8221;</span> yada shift+f6 </span>ya basarak setup olşturun burada biraz bekleyin kaydetmeden çıkarsanız setup içeriği luşmaz. kaydetip kaydetmediğini öğrenmek için ekranın sağ alt kısmında bir işaret gözükür buişaretten sonra oluşturma çubuğu ortaya çıkar obitince kaydolmuş demektir.  c# kapatıp projeniz içindeki setup klasörünü içerisin den<span style="color:#ff0000;"> debug</span> içerisine bakarsanız setup ları göreceksiniz.  debuğu buradan kopyalayarak istediğiniz her yerde ve her bilgisayarda kullanabilirsiniz.  hayırlı uğurlu olsun&#8230;.</p>
<p style="text-align:left;">
<p style="text-align:left;">
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zorlu48.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zorlu48.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zorlu48.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zorlu48.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zorlu48.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zorlu48.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zorlu48.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zorlu48.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zorlu48.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zorlu48.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zorlu48.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zorlu48.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zorlu48.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zorlu48.wordpress.com/65/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zorlu48.wordpress.com&amp;blog=12343662&amp;post=65&amp;subd=zorlu48&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zorlu48.wordpress.com/2010/03/11/c-ile-setup-olusturma/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41d54a7e6480ec76f756dbc97a53cba1?s=96&#38;d=wavatar&#38;r=G" medium="image">
			<media:title type="html">zorlu48</media:title>
		</media:content>

		<media:content url="http://zorlu48.files.wordpress.com/2010/03/solexpo1.jpg" medium="image">
			<media:title type="html">solexpo</media:title>
		</media:content>

		<media:content url="http://zorlu48.files.wordpress.com/2010/03/ekran-alintisi-copy.jpg" medium="image">
			<media:title type="html">Ekran Alıntısı copy</media:title>
		</media:content>

		<media:content url="http://zorlu48.files.wordpress.com/2010/03/ssd-copy.jpg" medium="image">
			<media:title type="html">SSD copy</media:title>
		</media:content>
	</item>
		<item>
		<title>MİCROİŞLEMCİLER &#8211; PIC</title>
		<link>http://zorlu48.wordpress.com/2010/03/06/microislemciler-pic/</link>
		<comments>http://zorlu48.wordpress.com/2010/03/06/microislemciler-pic/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 16:33:15 +0000</pubDate>
		<dc:creator>zorlu48</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://zorlu48.wordpress.com/?p=29</guid>
		<description><![CDATA[﻿PİC 16F84 Komutlarının Açıklamaları ve Örnekleri 1- #define : Uygulamalarımızda #define komutunu daha çok port bitlerine değişken isimler atamada kullanacağız. Bu şekilde yazdığımız programlar da anlaşılır bir hal alacaktır. Örnek: #define buton porta,3 ; Bu komutla -PortA,3- yazacağımız yerlerde -buton- yazmamızda aynı işi görecektir. Böylelikle programımızı kontrol ederken -PortA,3- ün ne olduğunu araştırmamıza gerek kalmayacak [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zorlu48.wordpress.com&amp;blog=12343662&amp;post=29&amp;subd=zorlu48&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>﻿<a href="http://www.izoelektronik.com/pic-16f84-turkce-datasheet.htm">PİC 16F84</a> Komutlarının Açıklamaları ve Örnekleri</p>
<p>1- #define</p>
<p>:  Uygulamalarımızda #define komutunu daha çok port bitlerine değişken isimler<br />
atamada kullanacağız. Bu şekilde yazdığımız programlar da anlaşılır bir hal  alacaktır.<br />
Örnek:<br />
#define buton porta,3 ; Bu komutla -PortA,3-  yazacağımız yerlerde<br />
-buton- yazmamızda aynı işi görecektir. Böylelikle  programımızı kontrol ederken<br />
-PortA,3- ün ne olduğunu araştırmamıza gerek  kalmayacak ve bunun -buton- olduğunu<br />
anlayacağız.<br />
2- clrf : Sonrasına  yazılan portu tamamen sıfırlar.<br />
Örnek:<br />
clrf Porta ; A Portunu sıfırlar.  Genellikle programın başına yazılmasında<br />
;fayda vardır.<br />
3- bsf : Portların  çıkışına mantık 1 çıkışı vermeyi sağlar.<br />
Örnek:<br />
bsf Porta,3 ; A portunun  3. bitini mantık 1 yükler.<br />
4- bcf : Portların çıkışlarını mantık 0 (sıfır)  yapar.<br />
Örnek:<br />
bcf Portb,5 ; B portunun 5. bitini 0 (sıfır) yapar.<br />
5-  btfss : Program akışında portun belirtilen bitinin mantık 1 olup olmadığını  kontrol<br />
etmekte kullanılır.<br />
Örnek:<br />
main btfss Porta,2 ; A portunun  2. biti mantık &#8217;1&#8242; ise sonraki komutu atla.<br />
goto main ; Porta,2 mantık &#8217;0&#8242;  ise -main- etiketli bölüme geri dön.<br />
bsf Portb,6 ; B portunun 6. bitini çıkış  mantık 1 yap.</p>
<p>Bu komut setinde A portu mantık 1 olana kadar sürekli 1. ve  2. satır arasında döngüye<br />
girer. A portunun 2. biti mantık 1 olduğunda,  program 2. satırı uygulamayıp daha sonraki<br />
satırı işlemeye  başlayacaktır.</p>
<p>6- btfsc : btfss (5. komut) ile aynı özellikte, ancak  mantık 0 (sıfır) seviyesini<br />
kontrol eder.</p>
<p>7- goto : Programda istenen  yere gidilip işlemlerin oradan itibaren yürütülmesini sağlar.<br />
Örnek :<br />
main  bsf Portb,4 ; B portunun 4. bitini 1 yap.<br />
&#8230;.. &#8230;&#8230; ; Buraya bir  geciktirme rutini (Bkz. 10. madde)yerleştirilebilir.<br />
bcf Portb,4 ; B portunun  4. bitini 0 (sıfır) yap<br />
goto main ; -main- etiketli satıra gider ve işlem  oradan<br />
;sonra tekrar devam eder.<br />
8- equ : Bu komut PortA, PortB, ve  yazmaçların adreslerinin atanmasını sağlar.<br />
Örnek : PortA nın PIC16F84 teki  adresi 05 tir.<br />
porta equ 05 ;Bu komutla PortA nın PIC içerisinde bulunduğu  adresin<br />
;05 olduğunu tanımlamış olduk.<br />
portb equ 06 ; Bu komutlada PortB  nin adresini tanımlamış olduk.<br />
&#8230;&#8230;. &#8230;.<br />
9- movlw-monwf : Bu  komutlarla PIC içerisinde bulunan -W- yazmacına (Değişkenine) değer<br />
atanır.  Programın ilerleyen aşamalarında bu değer okunup portlara atanabilir. Gerekli<br />
görüldüğü yerlerde bu -W- yazmacının değeri arttırılıp-eksiltilerek değişik  değerlerin<br />
portlara atanmasınıda sağlarlar.<br />
Örnek:<br />
movlw 80H ; W  yazmacına 80H değeri yüklenir.<br />
movwf trisb ; W yazmacındaki 80H değeri PortB  ye yüklenmiş oldu.<br />
10- Geciktirme rutinleri : Geciktirme rutinleri; programın  işleyişi esnasında,<br />
herhangibir işlemden sonra belli bir süre beklemesini  istediğimiz zamanlarda<br />
kullanmamız gereken zamanlayıcı alt  programlarıdır.<br />
Örnek: Bir yürüyen ışık devresinde, her ledin yanmasından  sonraki satıra geciktirme<br />
rutini yerleştirmezsek ledlerin hepsini aynı anda  yanıyormuş gibi görürüz.<br />
Bunu önlemek için ledleri yakan her program  satırından sonra bir geciktirme rutini<br />
eklememiz gerekir. Aşağıda basit bir  örnek göreceksiniz. Butür alt rutinler<br />
genellikle programın sonuna  yazılır.<br />
&#8230;&#8230;.. &#8230;&#8230;<br />
&#8230;&#8230;.. &#8230;&#8230;<br />
delay0 equ 0DH ; delay1  yazmacını 0DH adresinde tanımladık.<br />
delay1 equ 0EH ; delay2 yazmacı 0EH  adresinde.<br />
delay2 equ 0FH ; delay3 yazmacı 0FH adresinde.<br />
&#8230;&#8230;&#8230; &#8230;..<br />
&#8230;&#8230;&#8230; &#8230;.. ; Ana programın işlediği program satırları.<br />
bsf portb,1 ;  Portb nin 1. bitini mantık &#8217;1&#8242; yap.</p>
<p>call DELAY ; DELAY etiketli alt  rutini çağır.<br />
ortb,1 ; Portb nin 1. bitini mantık &#8217;0&#8242; yap.<br />
bsf portb,2 ;  Portb nin 2. bitini &#8217;1&#8242; yap.<br />
call DELAY ; DELAY etiketli alt rutini  çağır.<br />
bcf portb,2 ; portb nin 2. bitini &#8217;0&#8242; yap.<br />
&#8230;.. &#8230;&#8230;&#8230; ;  Program bu şekilde devam edebilir.<br />
DELAY movlw .4 ; W yazmacına .4 değeri  atandı.<br />
movwf delay0 ; W yazmacındaki .4 değeri delay0 yazmacına  atandı.<br />
D0 movlw .200 ; W yazmacına .200 değeri atandı.<br />
movwf delay1 ; W  yazmacındaki .200 değeri delay1 yazmacına atandı.<br />
D1 movlw .200 ; W yazmacına  .200 değeri atandı.<br />
movwf delay2 ; W yazmacındaki .200 değeri delay2  yazmacına atandı.<br />
D2 decfsz delay2,F ; delay2 değerini azalt. &#8217;0&#8242; olduysa  sonraki komutu atla.<br />
goto D2 ; D2 etiketli satıra geri dön.<br />
decfsz  delay1,F ; delay1 değerini azalt &#8217;0&#8242; olduysa sonraki komutu atla.<br />
goto D1 ;  D1 etiketli satıra git.<br />
decfsz delay0 ; delay0 değerini azalt &#8217;0&#8242; olduysa  sonraki komutu atla.<br />
goto D0 ; D0 etiketli satıra git.<br />
retlw 00 ; rutinin  çağrıldığı satırın alt satırına dön.<br />
Bu program grubunda önce portb nin 2.  biti çıkışı &#8217;1&#8242; oluyor, ardından -call<br />
DELAY- komutuyla geciktirme rutini  çağrılıp çalıştırılıyor. DELAY rutininde<br />
3 ayrı döngü kurulmuştur. Her  döngüde -delayX- değerleri azaltılıp &#8217;0&#8242; değerine<br />
kadar düşmesi  sağlanmaktadır. -delayX- değerlerinin hepsi &#8217;0&#8242; değerine ulaştığında<br />
program  -retlw 00- komutuyla -call DELAY- komutunun altındaki satıra geri<br />
dönüp  işlemlerin o satırdan itibaren işlemesini sağlamaktadır.<br />
11- decfsz :  Sonrasına yazılan değişkenin değerini azaltıp &#8217;0&#8242; olup olmadığını kontrol  eder.<br />
Örnek: Aşağıdaki örnek tek döngülü bir geciktirme (Bekleme)  rutinidir.<br />
DELAY movlw .200 ; W yazmacına .200 değeri atandı.<br />
movwf delay0  ; W yazmacındaki .200 değeri delay0 yazmacına atandı.<br />
D0 decfsz delay0 ;  delay0 değerini azalt &#8217;0&#8242; olduysa sonraki komutu atla.<br />
goto D0 ; D0 etiketli  satıra git.<br />
goto x ; -x- etiketli satıra git</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zorlu48.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zorlu48.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zorlu48.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zorlu48.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zorlu48.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zorlu48.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zorlu48.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zorlu48.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zorlu48.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zorlu48.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zorlu48.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zorlu48.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zorlu48.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zorlu48.wordpress.com/29/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zorlu48.wordpress.com&amp;blog=12343662&amp;post=29&amp;subd=zorlu48&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zorlu48.wordpress.com/2010/03/06/microislemciler-pic/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41d54a7e6480ec76f756dbc97a53cba1?s=96&#38;d=wavatar&#38;r=G" medium="image">
			<media:title type="html">zorlu48</media:title>
		</media:content>
	</item>
		<item>
		<title>SQL programlama</title>
		<link>http://zorlu48.wordpress.com/2010/03/06/sql-programlama/</link>
		<comments>http://zorlu48.wordpress.com/2010/03/06/sql-programlama/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 15:50:16 +0000</pubDate>
		<dc:creator>zorlu48</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://zorlu48.wordpress.com/?p=21</guid>
		<description><![CDATA[SQL ID AD MAAS } Kolon adı (field) 1 Kazım 10000 } 2 Metin 75000 } Kayıt (rows) … …………….. ……….. } Kolon Kolon Kolon Table : Database&#8217;de saklanan kolonların birleşiminden oluşan kümedir. Table&#8217;ın data tipi yoktur. Row : Tek kayıt demektir. Column : Table&#8217;daki kolon adına ait kayıtlardır. Örneğin, &#8216;AD&#8217; kolonu demek &#8216;AD&#8217; kolonuna [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zorlu48.wordpress.com&amp;blog=12343662&amp;post=21&amp;subd=zorlu48&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h1>SQL</h1>
<p><span style="text-decoration:underline;">ID</span> <span style="text-decoration:underline;">AD MAAS </span>} Kolon adı (field)</p>
<p>1 Kazım 10000 }</p>
<p>2 Metin 75000 } Kayıt (rows)</p>
<p>… …………….. ……….. }</p>
<p>Kolon Kolon Kolon</p>
<p>Table : Database&#8217;de saklanan kolonların birleşiminden oluşan kümedir. Table&#8217;ın data tipi yoktur.</p>
<p>Row : Tek kayıt demektir.</p>
<p>Column : Table&#8217;daki kolon adına ait kayıtlardır. Örneğin, &#8216;AD&#8217; kolonu demek &#8216;AD&#8217; kolonuna girilen verilerin tümüdür.</p>
<p>Field : Kolon başlıkları ile kayıt başlığı olanlardır.</p>
<p>Primary Key : Unique + not null (Tek olmalı ve boş geçilemez.)</p>
<p>Foreign Key : Primary key gibidir. Fakat null değerler alabilir.</p>
<p>Table&#8217;lar ilişkisel veri tabanı(compact) olmalıdır. Tablolar arasında bir ilişki kurulmalıdır.</p>
<p>Oracle database&#8217;i ile kullanıcı arasında SQL_NET ilişki kurar. Protokoller belirlenir, bir isim altında konfigurasyonlar birleştirilir. Böylece database ismi tanımlanmasıyla ona ait tüm konfigurasyonlar oluşturulur.</p>
<p>RDBMS : Oracle&#8217;ın server tarafındaki protokoludür. Hızlı erişim sağlar. Güvenlik son derece güçlüdür. Client / server desteklidir.</p>
<p>TCP/IP : Oracle&#8217;ın server tarafındaki protokoludür.IP numaraları sayesinde client / server mimarisi iletişimi kurulur. RDBMS gibi ortak özellikler taşır.</p>
<p>Referantional : Tablolar arasındaki referansların belirtilmesidir. Bazen bir kolonun değerlerinin başka bir tablodaki kolonlardan veri laması gerekmektedir. bu durumda referans verilir.</p>
<p>Bir projeye başlarken şu aşamalar yapılır;</p>
<ol>
<li>İyi bir analiz</li>
<li>Analizin tablolara göre dizaynı      ve aralarındaki ilişkiler</li>
<li>Akış şeması ve döküman      hazırlanması</li>
<li>Test edilmesi</li>
<li>Üretime geçilmesi</li>
</ol>
<p>Database&#8217;e üzerinde giriş,değişiklik,silme vb. İşlemlersql ile olur. Tablolar fiziksel olarak gözükmezler. Database içinde saklıdırlar. Operatörler kullanılabilir.</p>
<p>Data Dictionary: Database&#8217;deki kullanıcılar, yaratılan tablolar vb. Nesneler hakkında detaylı bilgiler bulunan tablodur. Belli başlı fonksiyonlarla ulaşılabilir.</p>
<p>SQL : Tablolar arasında iletişim kurar, sorgulama yapar.</p>
<p>SQL *Plus : Ek olarak bloklar oluşturulabiliyor. Mantıksal döngüler ve komutlar oluşturulabiliyor. IF, FOR vb.</p>
<p>PL / SQL : Server&#8217;a bağlanıp insert, update, delete vb. Database üzerinde direkt işlemler yapılabilir. Database&#8217;e en hızlı ulaşım ve sorgulama biçimidir.</p>
<ul>
<li>Yazılan komutlar bufferda işlem      yapar. O yüzden her yeni komut yazıldığında önceki komutu siler.</li>
<li>Yazılım kontrolu(syntax) her      satırın sonunda kontrol edilir.</li>
<li>Çeşitli formatlarla çıktı      alınabilir.</li>
<li>Direkt komut sonunda sonuç      alınır.,</li>
<li>Select ile data okunur.</li>
<li>İnsert, update,delete (DML) ile      var olan bir tablo üzerinde değişiklikler yapılabilir.</li>
<li>Create,alter,drop,rename,      truncate(DDL) ile yapısal değişiklikler yapılabilir.</li>
<li>Commit,rollback,savepoint      (tranaction) ile yapılan işleri onaylar veya geri alır, iptal edilebilir.</li>
<li>Grant,revoke (DCL) ile objelerin      kullanılmasına hak vermek veya geri almak içindir. Güvenlik kurulur.</li>
<li>Exit (^D) ile SQL&#8217;den çıkış      sağlanır. Böylece yapılan işlemler iptal olur.</li>
</ul>
<p>NOT: Tnsnames.ora à Database hakkında bilgiler bu dosyada saklıdır.</p>
<p>Listener.ora à Server tarafında bulunan config dosyasıdır.</p>
<p>NOT: Komut yazılımdaki köşeli parantezler o alanın zorunlu olmadığını belirtir. {} işaretleri o alan için birden fazla değer alacağını gösterir. Büyük harf yazılanlar oldugu gibi yazılır. Küçük harf yazanlar açıklamadır.</p>
<hr size="2" />
<h1>SQL de değişken tanımlamak</h1>
<p>DESC tablo_adı;</p>
<p>Kolon tiplerinden bazıları;</p>
<p>NUMBER(rakam,ondalık) à Sayısal ifadelerdir. Rakam alanı sayının max alabileceği tamsayı kısmını verir. Ondalık alan ise max. decimal değerini verir.</p>
<p>VARCHAR2(sayı) à Karakter ifadelerdir. Sayı ile belirtilen alan, max. karakter sayısıdır.</p>
<p>DATE à Tarih ve saat ifadeleridir. Ülke kodu desteğiyle çeşitli formatlarda database’de tutulurlar.</p>
<p>CHAR(sayı) à Karakter ifadesidir. VARCHAR2’den tek farkı database’de saklanma şeklidir. Max 255 karakter alabilir. Sayı ile belirtilen alan, max. karakter sayısıdır.</p>
<hr size="2" />
<h1>SELECT komutu</h1>
<p>Select komutu ile database&#8217;den istenilen kriterlere göre veri getirlir.</p>
<p><span style="text-decoration:underline;">Yazılımı</span>:</p>
<p>SELECT [DISTINCT] {*,column [alias] ,….}</p>
<p>FROM Tablo</p>
<p>[WHERE koşullar]</p>
<p>[ORDER BY {column,expr} [ASC|DEXC] ] ;</p>
<p>SELECT :Seçilen kolonları alır.</p>
<p>DISTINCT :Belirtilen kolondaki aynı değerlere sahip verilerden sadece birini alır. Örneğin personel kodu xxx olanın personel adı gibi.</p>
<p>alias :Kolon adlarının daha açık olması için tanımlanır.</p>
<p>FROM table :Belirtilen tabloyu açar.</p>
<p>WHERE :Belirli kriterler koşullar oluşturulur. Tablolar arasında birleştirmeler yapılabilir.</p>
<p>ORDER BY :Seçilen kolona göre sıralı kayıt getirir.</p>
<p>ASC :Artan sırada listelenir. Varsayılan budur.</p>
<p>DESC : Artan sırada listelenir. Varsayılan budur.</p>
<p>* : Tüm kolonlar seçilmiş anlamındadır.</p>
<p>Listelemede rakamlar sağa yanaşık, karakterler sola dayalı gözükür. Kolon adları büyük harf görüntülenir.Aritmatik işlemler kullanılabilir (+,-,/,*). Örneğin;</p>
<p><em>Select maas+maas*0.10 From Personel_Table;</em></p>
<p>Bazen bir matematiksel işlemler daha uzun veya daha karmaşık olabilir. Fonksiyon tanımlayarak kolona sorgulatıp bir sonuç üretebiliriz. Matematiksel işlemlerde öncelik sırası;</p>
<ol>
<li>Parantezler (,)</li>
<li>*,/,+,-</li>
<li>soldan sağa doğru öncelik      sırası,</li>
</ol>
<p>şeklindedir.</p>
<p>Column Alias : Kolon başına açıklayıcı isim verilebilir. Tırnak işaretleri (&#8220;) ile açıklayıcı kelime belirtilir. Tek kelime için &#8221; işareti kullanılmasada olur. Örneğin;</p>
<p><em>Select ad AS &#8220;Adı&#8221; From Personel_Table;</em></p>
<p>Concatenation Operator: Birden fazla stringi veya kolonu yan yana birleştirip listelemek için kullanılır. İfadeler string olmalıdır. Zaten karakter ve tarih formatındaki değerler tırnak( &#8216; ) işaretleri içerisinde belirtilir. Örneğin;</p>
<p><em>Select ad||&#8217; &#8216; ||soyad AS &#8220;Adı Soyadı&#8221; From Personel_Table;</em></p>
<p>Null : Değeri hiç girilmeyen kolonlar NULL değerini alırlar. NULL sıfır veya boşluk karakteri değildir. Yokluk demektir. Bir rakam ile NULL değer üzerinde matematiksel işlemler yapılamaz.</p>
<p>NVL Fonksiyonu: Null değeri yerine yeni değer atar. Alan tipi ne turde ise alacağı değer o türde olmalıdır.</p>
<p><span style="text-decoration:underline;">Yazılımı</span>:</p>
<p>NVL (null_değeri_alan,yeni_değer)</p>
<p>Örneğin;</p>
<p><em>NVL(Maas,0);</em> à Maas kolonundaki null değerlerin yerine sıfır atar.</p>
<p>veya <em>NVL(Ad,&#8217; &#8216;);</em> à Ad kolonundaki null değerlerin yerine bos karakter atar.</p>
<p>En önemli kullanım amacı hesplamalara işlemin yarıda kesilmesini engellemek içindir. Örneğin maasa zam miktarı eklensin. Ama bazı personele zam yapılmadığı varsayılırsa bu kişiler icin zam kolon değeri null&#8217;dur. Buna göre;</p>
<p><em>SELECT maas+NVL(zam,0) From Personel_Table;</em></p>
<p>Tab : Tüm tabloların adlarının saklandığı alandır. Örneğin tüm tabloların listesini vermek için aşağıdaki iki yazılımı da kullanabiliriz.;</p>
<p><span style="text-decoration:underline;">Yazılımı</span>;</p>
<p><em>SELECT * From Tab;</em></p>
<p><em>SELECT table_name From user_tables;</em></p>
<p>Desc : Tablonun kolonlarının adlarını, kolonların tipini ve null değer alıp alamayacağı durumlarını gosterir.</p>
<hr size="2" />
<h1>Order by komutu</h1>
<p>ORDER BY : Seçilen kolona göre sıralama yapar. DESC artan sırada, ASC azalan sırada listeler. Null değerler sıralamaya alınmazlar. Örneğin azalan sırada ada gore liste alınsın;</p>
<p><em>SELECT ad,soyad FROM Personel_Table ORDER BY ad DESC;</em></p>
<p>Eğer kolonlar birden fazla ise kolon numarası ile de tanım belirtilebilir;</p>
<p><em>SELECT ad,soyad FROM Personel_Table ORDER BY 1 DESC;</em></p>
<p>Eğer birden fazla kolona göre sıralama yapılmak istenirse, önce yazılan kolon baz alınarak diğer kolona göre sıralı listeler.</p>
<p><em>SELECT ad,soyad FROM Personel_Table ORDER BY 1,2 DESC;</em></p>
<h1>Where komutu</h1>
<p>WHERE : Sorgulamaları sınırlandırmak amacıyla koşullar konulur. Örneğin departmanı 38 kodlu personel listesi;</p>
<p><em>SELECT ad ||&#8217; &#8216; ||soyad FROM Personel_Table WHERE Dept_Id=38;</em></p>
<p>&lt;,&gt;, &gt;=, &lt;= gibi karşılaştırma karakterleri kullanılabilir. Bunlar dışında bazı SQL operatörleri ile daha rahat koşullar konulabilmektedir.</p>
<h1>Between komutu</h1>
<p>BETWEEN Min AND Max: Belirtilen Min. ve Max. değerler arasında değer alabilir. Yani belirtilen iki değer arasında değerler alır. Örneğin yaşı 18 ile 30 arasındaki personeller;</p>
<p><em>SELECT ad ||&#8217; &#8216; ||soyad FROM Personel_Table</em></p>
<p><em>WHERE yas BETWEEN 18 AND 30;</em></p>
<hr size="2" />
<h1>IN komutu</h1>
<p>IN (liste) : Liste olarak tanımlanan değerleri alır. Yani bir şekilde OR ifadesine denktir. Örneğin yaşı 18, 25 ile 30 olan personeller;</p>
<p><em>SELECT ad ||&#8217; &#8216; ||soyad FROM Personel_Table</em></p>
<p><em>WHERE yas=18 OR yas=25 OR yas=30;</em></p>
<p>Veya</p>
<p><em>SELECT ad ||&#8217; &#8216; ||soyad FROM Personel_Table</em></p>
<p><em>WHERE yas IN(18,25,30);</em></p>
<hr size="2" />
<h1>Like komutu</h1>
<p>LIKE : Benzerlik vermek için kullanılır. &#8216;%&#8217; karakteri tum karakterler yerine geçer. &#8216;_&#8217; karakteri ise tek karakter yerine geçer. Sadece _ işaretini çıkarmak için &#8216; \_ &#8216; işareti kullanılır. Küçük büyük harf ayrımı vardır.</p>
<p>&#8216;%t&#8217; à t harfiyle başlayanlar.</p>
<p>&#8216;%t%&#8217; à t harfi geçen tüm kayıtlar.</p>
<p>&#8216;B_K%&#8217; à B baş harfi ile başlayan ve 3. Harfi K olan tüm kayıtlar.</p>
<p>karakterleri arasında değer girilirse kolon içinde Örneğin soyadı &#8216;M&#8217; ile başlayan personeller;</p>
<p><em>SELECT ad ||&#8217; &#8216; ||soyad FROM Personel_Table</em></p>
<p><em>WHERE soyad LIKE &#8216; M% &#8216; ;</em></p>
<h1>Is null komutu</h1>
<p>IS NULL : Kayıdın null olup olmadığını kontrol eder. Örneğin maaşı null <span style="text-decoration:underline;">olan</span> kayıtları listelesin;</p>
<p><em>SELECT ad ||&#8217; &#8216; ||soyad FROM Personel_Table</em></p>
<p><em>WHERE maas IS NULL ;</em></p>
<p>NOT : Belirtilen koşulun tam ters koşulunu verir. Örneğin maaşı null <span style="text-decoration:underline;">olmayan</span> kayıtları listelesin;</p>
<p><em>SELECT ad ||&#8217; &#8216; ||soyad FROM Personel_Table</em></p>
<p><em>WHERE maas IS NOT NULL ;</em></p>
<hr size="2" /><strong>SQL *Plus Üzerinde Sorgu Hazırlanmasında Kullanılacak</strong> <strong>Yardımcı Komutlar</strong></p>
<p>Sql komutları sadece hafızada tutulurlar. İşletilen her komut hafıza tutulur. O yüzden kullanıcının işini kolaylaştırmak için bazı ek komutlara ihtiyaç duyulmuştur.</p>
<p>Sql Plus’a girmek için komut satırında şu şekilde girilir;</p>
<p>SQLPLUS [kullanıcı adı [/şifre [@Database]]]</p>
<p>A[PPEND] Text à Satır sonuna kelime ekler.</p>
<p>C[HANGE] /eski/yeni à eski text yerine yeni text ekler. Yeni alanı boş bırakılırsa eski alan olarak belirtilen text silinir.</p>
<p>CL[EAR] BUFF[ER] à SQL hafızasındaki tüm satırları siler, hafızayı boşaltır.</p>
<p>DEL à Aktif olarak bulunduğu satırı siler. Satır no belirtilirse o satırı siler.</p>
<p>I[NPUT] Text à Satır arasına Text ifadesiyle belirtilen cumleyi ekler.</p>
<p>L[IST] à Hafızadaki tüm satırları listeler.</p>
<p>L[IST] m n à Sadece m ile n arasındaki satırları listeler.</p>
<p>R[UN] à Hafızadaki SQL satırını çalıştırır. Aynı işlevi &#8220;R,r,/, ; &#8221; karakterleride yapar.</p>
<p>n Text à n satırındaki cümleyi Text ifadesi belirtilen alana yazılan cümle ile değiştirir.</p>
<p>0 Text à Bulunduğu satırdan bir önceki satıra yeni alan açar ve texti oraya ekler.</p>
<p>SAVE Dosya à Hafızadaki komutu belirtilen dosya adı altında saklar.</p>
<p>GET Dosya à Belirtilen dosyayı hafızaya yukler.</p>
<p>START Dosyaà Belirtilen dosyayı direkt çalıştırır. Hafızaya yuklemez. @ işaretide aynıdır.</p>
<p>ED[IT] Dosyaà Belirtilen dosyayı bir editör içinde açar.</p>
<p>SPOOL à Ekranda yapılan her türlü işi dosyaya atar. SPOOL OFF ile dosyaya kayıt işlemini durdurur.</p>
<p>EXIT à SQL’den çıkış sağlar.</p>
<p>HELP Komut à Belirtilen komut için açıklayıcı bilgi verir.</p>
<hr size="2" /><strong>SQL Plus Fonksiyonları</strong></p>
<p>Fonksiyonlar sayesinde;</p>
<ul>
<li>Datalar üzerinde hesap      yapabilir,</li>
<li>Datalar üzerinde değişiklikler      yapılabilir,</li>
<li>Grup oluşturularak bu kayıtlar      için kullanılabilir.</li>
<li>Tarih datası çeşitli formatlarda      görüntülenebilir,</li>
<li>Kolon tipleri değiştirilebilir.</li>
<li>İç içe fonksiyonlar      tanımlanabilir. Öncelikle içteki fonksiyon çalışır. Çıkan sonuca göre      dıştaki fonksiyon işlem görür.</li>
</ul>
<p>Sys.Dual : Oracle database’inde bulunan tek kolon ve tek satırdan oluşan bir tablodur. Belirli bir tablodan değerler almadan fonksiyonların kullanılması gerektiginde bu tablo kullanılır.</p>
<hr size="2" /><strong>Karakter Fonksiyonları</strong></p>
<p>LOWER(Text) : Text olarak belirtilen alanı küçük harfe çevirir.</p>
<p>UPPER(Text) : Text olarak belirtilen alanı büyük harfe çevirir.</p>
<p>INITCAP(Text) : Text olarak belirtilen alanın baş harfini büyük diğerlerini küçük harfe çevirir.</p>
<p>CONCAT (Text1,Text2) : Text1 olarak belirtilen alan ile Text2 alanını birleştirir. ‘ || ‘ simgeside aynıdır.</p>
<p>SUBSTR(Text,m,n) : Text alanının m. karakterinden itibaren (m. karakter dahil) n kadar karakter alır.</p>
<p>LENGTH(Text) : Text alanın karakter uzunluğunu sayısal olarak verir.</p>
<p>NVL(KOLON,DEĞER) : Kolonun aldığı değer null ise değer alanında belirtilen değeri verir.</p>
<hr size="2" /><strong> </strong></p>
<p><strong> </strong></p>
<p><strong>Karakter Fonksiyonları</strong></p>
<p>LOWER(Text) : Text olarak belirtilen alanı küçük harfe çevirir.</p>
<p>UPPER(Text) : Text olarak belirtilen alanı büyük harfe çevirir.</p>
<p>INITCAP(Text) : Text olarak belirtilen alanın baş harfini büyük diğerlerini küçük harfe çevirir.</p>
<p>CONCAT (Text1,Text2) : Text1 olarak belirtilen alan ile Text2 alanını birleştirir. ‘ || ‘ simgeside aynıdır.</p>
<p>SUBSTR(Text,m,n) : Text alanının m. karakterinden itibaren (m. karakter dahil) n kadar karakter alır.</p>
<p>LENGTH(Text) : Text alanın karakter uzunluğunu sayısal olarak verir.</p>
<p>NVL(KOLON,DEĞER) : Kolonun aldığı değer null ise değer alanında belirtilen değeri verir.</p>
<hr size="2" /><strong>Sayısal Fonksiyonları</strong></p>
<p>ROUND(Sayı,m): Sayı alanına girilen rakam, m olarak belirtilen ondalık kadar yuvarlar. Örneğin; ROUND(45.923,2) à 45.92</p>
<p>ROUND(45.923,0) à 46</p>
<p>ROUND(45.923,-1) à 50</p>
<p>ROUND(45.951,2) à 45.92</p>
<p>ROUND(45.929,2) à 45.93</p>
<p>TRUNC(Sayı,m): Sayı alanına girilen rakam, m olarak belirtilen ondalık kadar sondan keser.</p>
<p>TRUNC(54.923,2) à 45.92</p>
<p>TRUNC(54.923,-1) à 40</p>
<p>TRUNC(54.929,2) à 45.92</p>
<p>MOD(m,n) : m sayısı n sayısına bolundugunde kalan rakamı bulur.</p>
<hr size="2" /><strong>Zamansal Fonksiyonları ve İşlemleri</strong></p>
<p>Tarih + sayı à Tarihe sayı kadar gun ekler.</p>
<p>Tarih &#8211; sayı à Tarihe sayı kadar gun çıkarır.</p>
<p>Tarih &#8211; Tarih à İki tarih arasındaki gün farkını sayısal olarak verir.</p>
<p>Tarih + sayı / 24 à Tarihe sayı kadar saat ekler.</p>
<p>SYSDATE à Sistem tarihini verir. Oracle’ın varsayılan tarih formatı ‘DD-MON-YY’ şeklindedir. Üzerinde aritmatiksel işlemler yapılabilir.</p>
<p>MONTHS_BETWEEN(tarih1,tarih2)à İki tarih arasını ay olarak bulur.</p>
<p>ADD_MONTHS (tarih,n) à Tarihe n kadar ay ekler.</p>
<p>NEXT_DAY(tarih,&#8217; gün&#8217; ) à tarih&#8217;den sonraki günün ilk tarihini verir.</p>
<p>LAST_DAY(tarih,&#8217; gün&#8217; ) à tarih&#8217;den önceki günün ilk tarihini verir.</p>
<p>ROUND(tarih[,' fmt '] ) à tarih&#8217;I belirtilen formata göre aya veya yıla göre yuvarlar.</p>
<p>TRUNC(tarih[,' fmt '] ) à tarih&#8217;I belirtilen formata göre aya veya yıla göre keser.</p>
<hr size="2" /><strong>Çevirme Fonksiyonları</strong></p>
<p>TO_CHAR(Sayı,[‘fmt’]) : Girilen tarih veya sayıyı karakter tipine çevirir.</p>
<p>Tarih parametreleri;</p>
<p>YYYY à Yılı rakamsal olarak gosterir.</p>
<p>YEAR à Yılı yazısal olarak verir.</p>
<p>BC à Millattan once ve sonrası icin zaman verir.</p>
<p>MM à Ayı rakamsal olarak gösterir.</p>
<p>MONTH à Ayı yazısal olarak verir. Belirtilen ülkenin tarih yazısıyla</p>
<ul>
<li>
<ul>
<li>verir.</li>
</ul>
</li>
</ul>
<p>MON à Ayı yazısal sadece ilk 3 harfini verir. Belirtilen ülkenin tarih</p>
<ul>
<li>
<ul>
<li>yazısıyla verir.</li>
</ul>
</li>
</ul>
<p>RM à Ayı roma rakamıyla gösterir.</p>
<p>DD à Günü rakamsal olarak gösterir.</p>
<p>DAY à Günü yazısal olarak verir.</p>
<p>Sayısal parametreleri;</p>
<ol>
<li>à Rakamdır.</li>
</ol>
<ol>
<li>à Sıfır rakamı verir.</li>
</ol>
<p>$ à Rakamın başına $ işareti koyar.</p>
<p>. à Ondalık haneye ayırır.</p>
<p>, à Rakamı 3’er hane ayırarark aralarına virgül koyar.</p>
<p>MI à Negatif sayılar için sonuna – itareti koyar.</p>
<p>Örneğin &#8221; x nolu kişi xxx&#8217;dir.&#8221; Formatında ekrana liste oluşturalım (id number);</p>
<p>SELECT TO_CHAR(id) || &#8216; nolu kisi &#8216; ||name||&#8217;dir.&#8217;</p>
<p>Örneğin sistem tarihini DD-MM-YYYY olarak gösterelim;</p>
<p>SELECT TO_CHAR(sysdate,&#8217; DD-MM-YYYY&#8217;)</p>
<p>Örneğin sistem zamanını HH:MI olarak gösterelim;</p>
<p>SELECT TO_CHAR(sysdate,&#8217; HH:MI&#8217; )</p>
<p>TO_NUMBER (Karakter) : Girilen karakteri sayısal ifadeye çevirir.</p>
<p>TO_DATE(char, [‘fmt’]) : Girilen karakteri belirtilen formatta tarih formatına çevirir.</p>
<p>Örneğin tarih kolonundaki değerleri, 7 /11/1998 tarihine eşit olanların listesini oluşturalım. Ama kolon değerleri string olarak ayın uzun ad, günü ve yılı sayısal olarak kayıtlıdır. Bu sorunu çözmek için kullanılır;</p>
<p>SELECT no, maas</p>
<p>FROM Personel</p>
<p>WHERE MAAS_TARIH=TO_DATE(&#8216;KASIM 7, 1998&#8242;, &#8216;Month dd,YYYY&#8217;)</p>
<hr size="2" /><strong> </strong></p>
<p><strong> </strong></p>
<p><strong>Tablolar Arasında İlişki Kurulması (JOIN)</strong></p>
<p>* Birden fazla tabloyla ilişki kurularak ortak sorgulama yapılmasıdır. Tabloları belli bir ortak kolona göre birleştirmek için join yöntemi kullanılır. Bunun için öncelikle tablolardaki kolonlar aynı tipte ve aynı büyüklükte olmalıdır.</p>
<p><span style="text-decoration:underline;">Yazılımı</span>:</p>
<p>SELECT table1.kolonları,table2.kolonları</p>
<p>FROM table1, table2</p>
<p>WHERE table1.kolon1=table2.kolon2</p>
<p>İki tabloyu birleştirmek için iki tabloda ortak bulunan kolonları where kotulu içinde etitleriz.</p>
<p>Örneğin personel adı ve bulunduğu departman listesi icin;</p>
<p>SELECT a.*,b.*</p>
<p>FROM personel a , departman b</p>
<p>WHERE a.dept_id=b.dept_id</p>
<p>Böylece personel tablosundan personel adı ve soyadı, departman tablosundan departman adı bilgisi getirilir.</p>
<p>* Bazı durumlarda tablo birleştirme koşulu bir aralık şeklinde oluşabilir. Yani tabloları birleştirirken anahtar sahaların belirli bir aralığı seçilebilir.</p>
<p>SELECT table1.kolonları, table2.kolonları</p>
<p>FROM table1, table2</p>
<p>WHERE table1.kolon1 BETWEEN table2.min2 AND table2. max2</p>
<p>* (OUTER JOIN) Bir diğer durumda tablodaki verilerin değerleri null olabilir. Fakat biz null değerlere sahip olanlarıda birlerştirmek istersek eksik olan tablonun yanına (+) işareti eklenir.</p>
<p>SELECT table1.kolonları, table2.kolonları</p>
<p>FROM table1, table2</p>
<p>WHERE table1.kolon1 (+) = table2.kolon2</p>
<p>* (SELF JOIN) Bir başka durumda aynı tablodaki kendi içindeki kolonlar arasında ilişki kurulabilir. Bazı durumlarda kolonlardaki değerleri eşit olma durumlarına göre sorgu düzenlenebilir.</p>
<p>SELECT table1.kolonları</p>
<p>FROM table1 a, table1 b</p>
<p>WHERE table1.a = table1. b</p>
<hr size="2" /><strong>Grup (GROUP) Fonksiyonları</strong></p>
<p>Bazen belli bir koşula uygun belli bir topluluk için sorgu kurulabilir. Bu durumda grup işlemi yapılır. Örneğin departmanlara göre grup oluşturulup o departmandaki personel sayısı hesaplanabilir. Grup fonksiyonları sadece grup ifadeleriyle kullanılabilir.</p>
<p><span style="text-decoration:underline;">Yazılımı</span>:</p>
<p>SELECT kolonlar, grup fonksiyonları</p>
<p>FROM table</p>
<p>[WHERE kotul]</p>
<p>[GROUP BY grup_kolonu]</p>
<p>[HAVING group_kotulu]</p>
<p>[ORDER BY kolon]</p>
<p>GROUP BY satırı ile kolonlar üzerinde küçük gruplar oluşturulur.</p>
<p>HAVING satırı ile bu oluşturulan grup için grup koşulları tanımlanabilir. Where koşulundan farkı WHERE kayıt üzerinde koşul koyar, HAVING ise sadece grup kayıtları üzerinde koşul konabilir ve grup fonksiyonları kullanılabilir.</p>
<p>AVG(Kolon) : Belirtilen kolonun ortalamasını bulur.</p>
<p>COUNT(Kolon) : Belirtilen kolonun kayıt sayısını bulur. Count(*) ile o grupta oluşturulan kayıt sayısı hesaplanır. Null değerler için nvl fonksiyonu kullanılır. Çünkü kolon içindeki null değerler işleme alınmaz.</p>
<p>MAX(Kolon) : Belirtilen kolondaki kayıtların değerlerinin maksimum değerini bulur. Sayısal, karakteristik veya tarihsel olarak kendi içinde sıralama yapabilir.</p>
<p>MIN(Kolon) : Belirtilen kolondaki kayıtların değerlerinin minimum değerini bulur. Sayısal, karakteristik veya tarihsel olarak kendi içinde sıralama yapabilir.</p>
<p>SUM(Kolon) : Belirtilen kolondaki kayıtların değerlerinin sayısal toplamını bulur.</p>
<p>VARIANCE(Kolon) : Belirtilen kolondaki kayıtların değerlerinin matematiksel varyansını bulur.</p>
<p>Örneğin bir personel listesindeki departmanların ayrı ayrı departman içindeki personelin max ve min maas alan kişilerin maaslarını isteyelim;</p>
<p>SELECT Departman_id, MAX(Maas) , MIN(maas)</p>
<p>TABLE Personel</p>
<p>GROUP BY Departman_id</p>
<p>Veya 38 nolu departmandaki personel sayısını bulalım;</p>
<p>SELECT COUNT(*)</p>
<p>TABLE Personel</p>
<p>WHERE Departman_id = 38</p>
<p>Veya tüm departmanlardaki maaşlarının ortalaması 80.000.000 ‘den büyük olanların listesini oluşturalım;</p>
<p>SELECT Departman_id, AVG(Maas)</p>
<p>TABLE Personel</p>
<p>GROUP BY Departman_id</p>
<p>HAVING AVG(maas) &gt; 80000000</p>
<p>Bazı durumlarda iç içe grup oluşturulması istenebilir. Bu durumda şu şekilde yazılır.</p>
<p>GROUP BY Kolon1, Kolon2 , …</p>
<p>Örneğin Departman adına ve personel yasına göre grup oluşturalım.</p>
<p>SELECT Departman_id, Yas</p>
<p>TABLE Personel</p>
<p>GROUP BY Departman_id, Yas</p>
<hr size="2" /><strong>Altsorgular(SUBQUERY)</strong></p>
<p>Subquery, bir sorgu oluşturulurken, bu sorguya ait kriterleri başka bir sorgu belirleme durumudur. Kısaca sonucu bilinmeyen koşullar olduğunda bu yöntem kullanılır.</p>
<p><span style="text-decoration:underline;">Yazılımı</span>:</p>
<p>SELECT …..</p>
<p>FROM ……</p>
<p>WHERE kolon=( SELECT …</p>
<p>FROM ….</p>
<p>WHERE ….)</p>
<p>Select cümlesi parantes içinde tanımlanır. = koşulu kondu ise select cümlesi tek değer döndürmek zorundadır. Eğer birden fazla değer için koşul konulması gerekirse &#8221; in, not in &#8221; kelimesi kullanılır. Tek kayıt döndüğünde = yerine &gt;,&gt;=, &lt;, &lt;=, &lt;&gt; kontrol ifadeleride kullanabiliriz. Bir önemli nokta da koşula eşitlenecek değer 2. Select cümlesi içindeki kolon değerine eş olmalıdır. Yani tipleri eşit olmalıdır.</p>
<p>Subquery sorgulama tekniğinde order by kullanılamaz.</p>
<p>Having grup kotulu içinde select cümlesi kullanabiliriz.</p>
<p>Örneğin;</p>
<ol>
<li>sorgu : Kazım&#8217; ın departman      numarası kaçtır?</li>
<li>SELECT dept_id,name</li>
</ol>
<p>FROM Personel</p>
<p>WHERE name=&#8217;Kazım&#8217;</p>
<ol>
<li>sorgu : Departman numarası 38      olan kişilerin listesinden adı kazım olan var mı incele?</li>
<li>SELECT dept_id,name</li>
</ol>
<p>FROM Personel</p>
<p>WHERE dept_id=38</p>
<ol>
<li>sorgu : Bu iki sorgunun      birleşimi istenirse, yani departmanı 38 olan kazım adlı personel bigisi ?</li>
</ol>
<ul>
<li>
<ul>
<li>SELECT dept_id,name</li>
</ul>
</li>
</ul>
<p>FROM Personel</p>
<p>WHERE dept_id=( SELECT dept_id</p>
<ul>
<li>
<ul>
<li>
<ul>
<li>
<ul>
<li>FROM Personel</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>WHERE name=&#8217;Kazım&#8217;)</p>
<hr size="2" /><strong>Çalışma Anında Sorguya Dışarıdan Değer Alma</strong></p>
<p>Bir sorgu oluşturulurken bazen bazı alanların değerleri değişkendir. Bu yüzden sorguya dışarıdan değer girilmesi ve bu değere göre bir sorgu oluşturulması gerekir. Bunun için anahtar kelimenin başına ‘ &amp; ‘ karakteri getirilir.</p>
<p>Örneğin istenilen departmankoduna göre personelin adı ve soyadı listeleyelim;</p>
<p>SELECT ad,soyad</p>
<p>FROM Personel</p>
<p>WHERE Dept_id = &amp;Departman_kodu</p>
<p><span style="text-decoration:underline;">Ekran</span>:</p>
<p>Departman_kodu için değer gir: 38</p>
<p>eski 1: select ad,soyad from Personel where Dept_id = &amp;Departman_kodu</p>
<p>yeni 1: select ad,soyad from Personel where Dept_id = 38</p>
<p>Eğer sorgu yazılımı sorunlu ise bu giriş yapıldıktan sonra anlaşılır ve kesinlikle girilen değer kolon tipine eş olmalıdır. Örneğin ‘&amp;anahtar_kelime’ şeklinde tırnak arasında belirtilmişse giriş olarak sadece text değer girilir. Ama &amp;anahtar_kelime tırnak içinde belirtilmemişse giriş yapılırken tırnak içinde giriş yapılmalıdır. Birden fazla &amp;anahtar_kelime tanımlanırsa sırayla sorgu sorulur ve tüm değerler girildikten sonra sorgu oluşturulur. Eğer where koşulunda &amp;anahtar_kelime’si kullanılmışsa giriş yapılırken matematiksel koşul şeklinde giriş yapabiliriz.</p>
<p>Eğer anahtar kelimenin başına ‘ &amp;&amp; ‘ konulursa sorgu sırasında sadece bir kerelik sorgu sorulur. Bundan sonra anahtar kelimenin değeri ilk girilen değer olarak geçerlidir.</p>
<p>DEFINE değişken=değer : Belirtilen değişkene karakter atanır.</p>
<p>ACCEPT : Kullanıcıya açıklayıcı mesaj verilerek istenilen tipte veri girişi yapılması sağlanır. &amp; işaretiyle yapılan işlemin daha kontrollu şeklidir.</p>
<p><span style="text-decoration:underline;">Yazılımı </span>:</p>
<p>ACCEPT değişken [datatipi] [ FORMAT ] [PROMPT text] [HIDE]</p>
<p>Değişken à Giriş yapılacak verinin değerinin tutulduğu anahtar kelimedir.</p>
<p>Datatipi à Girişi yapılacak verinin veri tipidir.</p>
<p>FORMAT à Giriş yapılacak verinin giriş düzeni sağlanır. Örneğin rakam için 9999 (4 haneli sayı) , karakter için A10 (10 karakterlik yer) .</p>
<p>PROMPT à Kullanıcıya gireceği değer için açıklayıcı mesaj görüntüler.</p>
<p>HIDE à Giriş yapılırken verinin görüntülernmeden giriş yapılması sağlanır. Örneğin şifre girişlerinde.</p>
<p>Örnekler;</p>
<p>ACCEPT adi PROMPT ‘Adınızı giriniz:’</p>
<p>ACCEPT yas NUMBER PROMPT ‘Yaşınızı giriniz:’</p>
<p>ACCEPT yil NUMBER FORMAT 9999 PROMPT ‘Bulunduğunuz yılı giriniz:’</p>
<p>ACCEPT sifre CHAR PROMPT ‘Tifrenizi giriniz:’ HIDE</p>
<p>Örnek: Personel adına göre personel bilgilerini gösterelim. Bunun için bir .sql uzantılı dosyada yazalım. Bu programı start ile çalıştıralım.</p>
<p>Ornek.sql</p>
<p>SET ECHO OFF</p>
<p>ACCEPT adi PROMPT ‘ Adınızı Giriniz:’</p>
<p>SELECT * FROM Personel</p>
<p>WHERE UPPER(Personel.ad) LIKE UPPER(‘&amp;adi’)</p>
<p>/</p>
<p>SET ECHO ON</p>
<p>“Start Ornek.sql “ yazılarak sql çalıştırılır.</p>
<p>Bazen parametre girişlerini daha başlangıçta vermek istenirse;</p>
<p>Start Dosya_adı Parametreler,…</p>
<p>Örneğin yukarıdaki örnek için Start Ornek Kazım</p>
<hr size="2" /><strong>Tabloların Yaratılması</strong></p>
<p>Database’de verilerin saklanması amacıyla tablolar yaratılır. Tablo yaratabilmek için o kullanıcının buna yetkisi olmalıdır. Aynı zamanda limitsiz tablespace hakkına sahip olmalıdır.</p>
<p><span style="text-decoration:underline;">Yazılımı </span>:</p>
<p>CREATE TABLE [kullanıcı.]table</p>
<p>(kolon datatipi(boyutu) [DEFAULT değer]</p>
<p>[CONSTRAINT constraint_name] constraint_type]</p>
<p>[table_constraint]</p>
<p>[PCTFREE integer] [PCTUSED integer]</p>
<p>[TABLESPACE tablespace] [STORAGE storage_clause]</p>
<p>[CACHE]</p>
<p>[ENABLE enable_clause]</p>
<p>[DISABLE disable_clause]</p>
<p>[AS subquery]</p>
<p>Kullanıcı à Tablonun yaratıcısıdır. Onun sahip olduğu haklara ve mekana sahiptir.</p>
<p>Kolon à Tablonun kolon adlarını belirler. Bir tablodaki kolon sayısı 1-254 arasında olmalıdır.</p>
<p>Datatipi à Bir kolonun veri tipini belirler.</p>
<ul>
<li>
<ul>
<li>Varchar2(boyut): Boyut ile belirtilen max miktar kadar karakterdir.Max
<ul>
<li>
<ul>
<li>değeri 2000’dir.</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>Char(boyut) : Boyut ile belirtilen max miktar kadar karakterdir.Max.</p>
<ul>
<li>
<ul>
<li>değeri 255’dir.</li>
</ul>
</li>
</ul>
<p>Number : e<sup>38</sup> ‘e kadar olan tüm sayısal değerlerdir.</p>
<ul>
<li>
<ul>
<li>Number(m,n) : m kadar (max e<sup>38) </sup>sayının n kadar ondalık alan için</li>
</ul>
</li>
</ul>
<p>değer alır.</p>
<p>Date : Tarih ve saat değerlerini bir tutar.</p>
<p>Boolean : Mantıksal ifadeleri saklar. Yani doğru ise True,</p>
<ul>
<li>
<ul>
<li>
<ul>
<li>
<ul>
<li>yanlış ise false.</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>Long : Max 2GB ‘a kadar büyük olan alanlar için yer tutar.</p>
<p>Raw : Grafiksel yapıdaki veriler için tanımlanır.</p>
<p>DEFAULT à Herhangi bir kolona değer girilmezse, direkt olarak değer atamaya yarar. Girilen değerin veri tipi ile aynı olması gerekir.</p>
<p>CONSTRAINT à O kolon için daha açıklayıcı olması açısından ve yapısı açısından kullanılır.</p>
<p>table_constraint à O tablo için daha açıklayıcı olması açısından belirtilen etikettir.</p>
<p>PCTFREE à Tablo üzerinde yapılan kayıt güncelleme işlemleri için, kayıt bloklarındaki ayrılacak rezervasyon yüzde değeridir. 1-99 arasında bir tamsayıdır. 0, tüm bloklara yeni kayıt girişine izin verilir. Varsayılan değer 10’dur. Yani güncelleme için her bloğun %10’unu rezerve eder. Geri kalan %90’nını ise yeni kayıt girişlerine ayırır.</p>
<p>PCTUSED à Tablonun her veri bloğu için Oracle’nin koruduğu, kullanılmış alanın min yüzdesini verir. 1-99 arasında bir tamsayıdır.Varsayılan değeri 40’dır. Verilen parametre değerinin altına düşek blok için, yeni kayıt girişi seçimliktir. PCTFREE+PCTUSED &lt;100 olmak zorundadır.</p>
<p>TABLESPACEà Oracle’ın tabloyu yaratacağı tablo boşluğunu belirler. Eğer tanımlanmazsa çalışılmakta olan kullanıcının tablo boşluğunda yaratılır.</p>
<p>STORAGE à Tablonun depolama karakteristiğini belirler. Büyük tablolarda perfonmans düzenleyici olarak kullanılır.</p>
<p>CACHE à Tablo üzerinde arama yapılırken, hafıza cache’nin en çok kullanılanlar üzerinde yer almasını sağlar.</p>
<p>ENABLE à Bütün sınırlamaları geçerli kılar.</p>
<p>DISABLE à Bütün sınırlamaları iptal eder.</p>
<p>AS query à Tablo yaratılırken, alt sorgu aracılığı ile geriye döndürülen satırlar tabloya yerlettirilir.(insert)</p>
<hr size="2" /><strong>Data Dictionary</strong></p>
<p>Database ile ilgili her türlü bilgiyi buraya atar. Buradan verilere ulaşabiliriz. Kullanıcılar, tablolar, indexler, constraintsler vb. birçok açıklayıcı bilgiler tutulur. Bütün tablo ve viewerların adlarını ve açıklamalarını görnek için ;</p>
<p>SELECT * FROM Dictionary;</p>
<p>Dictionary’nin yapısını görmek için;</p>
<p>DESC dictionary</p>
<p>İsim Tip</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>TABLE_NAME VARCHAR2(30)</p>
<p>COMMENTS VARCHAR2(2000)</p>
<p>Dictionary’de bulunan objelerden bazıları;</p>
<p>User_tables à Hangi kullanıcı ile login olundu ise o kullanıcıya ait tabloları listeler.</p>
<p>All_tables à Bütün kullanıcıların yarattığı tabloları listeler.</p>
<p>Dba_tables à Database ile ilgili her türlü tablolar listelenir.</p>
<p>V$_tables à Systemin performansını ölçmek için tutulan bilgilerdir.</p>
<p>V$_librarycacheà Cache’in yeterli olup olmadığını anlamak için bakılır.</p>
<p>V$_rollstat à Rollback segmentinin yeterli olup olmadığını anlamak için bakılır.</p>
<p>Örnek : Login sifresiyle giren kullanıcının yarattığı tabloların listesini alalım;</p>
<p>SELECT table_name FROM user_tables</p>
<p>Örnek: Tüm obje isimlerinin listesini alalım;</p>
<p>SELECT object_name FROM user_objects</p>
<hr size="2" /><strong>Database Üzerinde Transaction Kontrol Komutları</strong></p>
<p>Transaction, datanın tutarlı şekilde korunmasını sağlayan yöntemdir. Database üzerinde kayıt yapma , silme, düzeltme vb. işlemlerin yapılabilmesi için aşağıdaki komutlara ihtiyaç vardır;</p>
<p>INSERT INTO : Tabloya yeni bir kayıt eklenmesini sağlar.</p>
<p><span style="text-decoration:underline;">Yazılımı</span>;</p>
<p>INSERT INTO table [(kolon1, kolon2, …)] VALUES (değer1, değer2, …)</p>
<p>Kolon à Tablonun kayıt yapılacağı kolon adlarını belirler. Bir tablodaki kolon sayısı 1-254 arasında ve o tabloda var olmalıdır.</p>
<p>Değer à O kolon için alacağı değer verilir. Kolon tipiyle aynı olmalıdır. Eğer kolon adları belirtilmezse değerler kolon sırasına göre değer almalıdır. Değerlere sysdate, user vb. hazır fonksiyonlar aktarılabilir. Eğer bir alana değer verilmesi istenmiyorsa, yani boş değer verilmesi isteniyorsa NULL değeri verilir.</p>
<p>Örnek: Personel tablosuna yeni bir personel giriti yapalım;</p>
<p>INSERT INTO personel (ad,soyad,maas,ayrilma_tarihi,kayit_giris_tarihi)</p>
<p>VALUES (‘Kazım’,’Sarıkaya’,400000000,NULL,SYSDATE)</p>
<p>Aynı örnek için kolon sırasını bildiğimiz düsünülürse şu şekildede yazılabilir;</p>
<p>INSERT INTO personel</p>
<p>VALUES (‘Kazım’,’Sarıkaya’,400000000,NULL,SYSDATE)</p>
<p>Sadece tek kayıt girişi yapılıyorsa, rahat veri girişi yapılması için değerlere değişken tanımlayarak veri girişi sağlayabiliriz. Böylece table her çalıştığında yeni veri girişi yapılır.</p>
<p><span id="_marker"> </span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zorlu48.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zorlu48.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zorlu48.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zorlu48.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zorlu48.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zorlu48.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zorlu48.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zorlu48.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zorlu48.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zorlu48.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zorlu48.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zorlu48.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zorlu48.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zorlu48.wordpress.com/21/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zorlu48.wordpress.com&amp;blog=12343662&amp;post=21&amp;subd=zorlu48&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zorlu48.wordpress.com/2010/03/06/sql-programlama/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41d54a7e6480ec76f756dbc97a53cba1?s=96&#38;d=wavatar&#38;r=G" medium="image">
			<media:title type="html">zorlu48</media:title>
		</media:content>
	</item>
		<item>
		<title>java programlama</title>
		<link>http://zorlu48.wordpress.com/2010/03/05/asp-net/</link>
		<comments>http://zorlu48.wordpress.com/2010/03/05/asp-net/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 21:03:00 +0000</pubDate>
		<dc:creator>zorlu48</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://zorlu48.wordpress.com/?p=17</guid>
		<description><![CDATA[A&#8217;dan Z&#8217;ye Java Java sayesinde; animasyonlar, kayan yazılar, web sayfalarında chat, hesap makinesi, oyunlar, şifreleme programları, interaktif web sayfaları, müzik, kelime işlemci, küçük internet appletleri, kocaman paket programlar, resim işleme programları, tercüme programları, sipariş sistemleri, saatler, yazım kontrol programları yapılabilir. HTML&#8217;de Java Bir applet hazırladığınızda, bunu bir HTML dökümanına yerleştirmelisiniz. HTML 3.2 ile birlikte, Java [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zorlu48.wordpress.com&amp;blog=12343662&amp;post=17&amp;subd=zorlu48&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;"><strong><em>A&#8217;dan Z&#8217;ye Java</em></strong></p>
<hr size="2" />
<p style="text-align:center;">Java sayesinde; animasyonlar, kayan yazılar, web sayfalarında chat, hesap makinesi, oyunlar, şifreleme programları, interaktif web sayfaları, müzik, kelime işlemci, küçük internet appletleri, kocaman paket programlar, resim işleme programları, tercüme programları, sipariş sistemleri, saatler, yazım kontrol programları yapılabilir.</p>
<p style="text-align:center;"><strong>HTML&#8217;de Java</strong></p>
<p style="text-align:center;">Bir applet hazırladığınızda, bunu bir HTML dökümanına yerleştirmelisiniz. HTML 3.2 ile birlikte, Java appletlerin kullanılmasını sağlayan iki yeni eleman çıktı. Bunlar APPLET ve PARAM. Diğer HTML elemanları gibi bu iki elemanın da birçok özellikleri mevcuttur. Fakat ideali, sadece gerekli olan özelliklerin kullanılmasıdır.</p>
<p style="text-align:center;"><strong>APPLET Elemanının kullanılması</strong></p>
<p style="text-align:center;">APPLET elemanı, HTML dökümanına yerleştirdiğiniz appletin tanımlanmasını ve özelliklerinin tanımlanmasını sağlar. Her HTML elemanı gibi, APPLET elemanının da bir başlangıç tagı &lt;APPLET&gt; ve bitiş tagı &lt;/APPLET&gt; vardır.</p>
<p style="text-align:center;">APPLET elemanı için gerekli olan özellikler: CODE, WIDTH ve HEIGHT&#8217;tir. CODE özelliği kullanılacak appleti, WIDTH özelliği appletin genişliğini (pixel), HEIGHT özelliği ise appletin yüksekliğini (pixel) belirlemenizi sağlar. Aşağıda gerekli olan özellikleri ile bir appletin HTML dökümanına bağlanmış şeklini görüyorsunuz.</p>
<p style="text-align:center;"><strong>&lt;HTML&gt;<br />
&lt;HEAD&gt;<br />
&lt;TITLE&gt; Maximum Bilgi &lt;/TITLE&gt;<br />
&lt;/HEAD&gt;<br />
&lt;BODY&gt;<br />
&lt;APPLET CODE=&#8221;maximumbilgi.class&#8221; WIDTH=300 HEIGHT=100&gt;<br />
&lt;/APPLET&gt;<br />
&lt;/BODY&gt;<br />
&lt;/HTML&gt; </strong></p>
<p style="text-align:center;">Yukarıdaki örnekte HTML dökümanı ve &#8220;maximumbilgi.class&#8221; adlı java appleti aynı dizinde bulunmalıdırlar. Şayet java appleti farklı bir dizinde ise, opsiyonel CODEBASE özelliğini kullanmanız gerekir.</p>
<p style="text-align:center;">CODEBASE özelliği, appletin bulunduğu URL‘yi belirtmenizi sağlar. Aşağıdaki örnek, yukarıdaki örneğin hemen hemen aynısıdır. Tek farkı, java appleti başka bir dizinde bulunduğu varsayılarak CODEBASE özelliği kullanılmıştır.</p>
<p style="text-align:center;"><strong>&lt;HTML&gt;<br />
&lt;HEAD&gt;<br />
&lt;TITLE&gt; Maximum Bilgi &lt;/TITLE&gt;<br />
&lt;/HEAD&gt;<br />
&lt;BODY&gt;<br />
&lt;APPLET CODE=&#8221;maximumbilgi.class&#8221; CODEBASE=&#8221;"http://www.maximumbilgi.com/java/classlar/&#8221;" WIDTH=300 HEIGHT=100&gt;<br />
&lt;/APPLET&gt;<br />
&lt;/BODY&gt;<br />
&lt;/HTML&gt; </strong></p>
<p style="text-align:center;">Diğer opsiyonel özellikleri şöyle sıralayabiliriz:</p>
<p style="text-align:center;"><span style="text-decoration:underline;">ALIGN</span></p>
<p style="text-align:center;">Appletin konumunu belirlemizi sağlar. Alabileceği değerler ABSBOTTOM, ABSMIDDLE, BASELINE, BOTTOM, CENTER, LEFT, MIDDLE, RIGHT, TEXTTOP, TOP&#8217;tır.</p>
<p style="text-align:center;"><span style="text-decoration:underline;">HSPACE</span></p>
<p style="text-align:center;">Appletin altında ve üstünde ne kadar boşluk bırakabileceğinizi belirleyebilirsiniz. HSPACE‘e vereceğiniz değer, pixel olarak işlenir. Örnek: HSPACE=10</p>
<p style="text-align:center;"><span style="text-decoration:underline;">VSPACE</span></p>
<p style="text-align:center;">Appletin sağında ve solunda ne kadar boşluk bırakabileceğinizi belirleyebilirsiniz. VSPACE‘e vereceğiniz değer pixel olarak işlenir. Örnek: VSPACE=20</p>
<p style="text-align:center;"><span style="text-decoration:underline;">ALT</span></p>
<p style="text-align:center;">Appletleri gösteremeyen browserlarda, appletin yerine alternatif bir yazı çıkmasını sağlayabilirsiniz.</p>
<p style="text-align:center;"><span style="text-decoration:underline;">NAME</span></p>
<p style="text-align:center;">Applete bir isim vermenizi sağlar.</p>
<p style="text-align:center;"><strong>PARAM Elemanının kullanılması </strong></p>
<p style="text-align:center;">PARAM elemanı ile applete parametre gönderebilirsiniz. PARAM elemanının sadece başlangıç tagı vardır: &lt;PARAM&gt;. Applete göndermek istediğiniz her parametre için bir &lt;PARAM&gt; tagı kullanmalısınız. PARAM taglarını başlangıç tagı &lt;APPLET&gt; ile bitiş tagı &lt;/APPLET&gt; arasına yerleştirmelisiniz.</p>
<p style="text-align:center;">Appletler, &lt;PARAM&gt; tagında belirtilen parametrelere &#8220;getparameter()&#8221; metodu ile ulaşırlar. &lt;PARAM&gt; tagının gerekli iki özelliği vardır. NAME ve VALUE. NAME özelliği ile parametrenin adı belirtilir ki &#8220;getparameter&#8221; metodu ile bu isme göre aranır. VALUE özelliği ise parametrenin değerini verir. Aşağıda, applette kullanılacak resmi, parametre ile girilen bir HTML dökümanı örneği verilmiştir.</p>
<p style="text-align:center;"><strong>&lt;HTML&gt;<br />
&lt;HEAD&gt;<br />
&lt;TITLE&gt; Maximum Bilgi &lt;/TITLE&gt;<br />
&lt;/HEAD&gt;<br />
&lt;BODY&gt;<br />
&lt;APPLET CODE=&#8221;maximumbilgi.class&#8221; WIDTH=300 HEIGHT=100&gt;<br />
&lt;PARAM VALUE=&#8221;logo.gif&#8221; &gt;<br />
&lt;/APPLET&gt;<br />
&lt;/BODY&gt;<br />
&lt;/HTML&gt; </strong></p>
<p style="text-align:center;">Java appletinde, resim parametresinin değeri; Resim_logo=getparameter(&#8220;Resim&#8221;) komutu ile okunur.</p>
<p style="text-align:center;"><strong>Veri Tipleri</strong></p>
<p style="text-align:center;">Java&#8217;da her şey bir nesnedir. Tek istisna veri tipleridir. Java veri tipleri, bütün platformlarda standart büyüklüğe sahiptir. Bu standart Java&#8217;nın taşınabilirliğini sağlıyor. Aşağıda Java&#8217;da bulunan veri tipleri ve büyüklükleri listelenmiştir.</p>
<table style="text-align:center;" border="1" cellspacing="1" cellpadding="0" width="300">
<tbody>
<tr>
<td><strong>Veri tipi</strong></td>
<td><strong>Büyüklük</strong></td>
</tr>
<tr>
<td>byte</td>
<td>8-bit</td>
</tr>
<tr>
<td>short</td>
<td>16-bit</td>
</tr>
<tr>
<td>int</td>
<td>32-bit</td>
</tr>
<tr>
<td>long</td>
<td>64-bit</td>
</tr>
<tr>
<td>float</td>
<td>32-bit kayan nokta</td>
</tr>
<tr>
<td>double</td>
<td>64-bit kayan nokta</td>
</tr>
<tr>
<td>char</td>
<td>16-bit Unicode</td>
</tr>
</tbody>
</table>
<p style="text-align:center;">Eğer C/C++ programcısı iseniz &#8220;unsigned&#8221; tipinin olmadığı dikkatinizi çekmiştir. Byte tipi ise C/C++&#8217;daki &#8220;char&#8221; tipinin yerini almıştır. Java&#8217;daki char tipi 16 bittir. Çünkü Java karakter verisinde Unicode karakter setini temel alır.</p>
<p style="text-align:center;">Unicode, uluslararası karakterleri destekleyen bir standarttır. Programlarınızın değişik platformlarda ve ülkelerde çalıştırılacağında Unicode çok uygundur. Yukarıdaki tabloda olmayan diğer bir veri tipi ise boolean<em>&#8216;</em>dır. Bir boolean, değişken numerik değere çevrilemez ve sadece iki değer alabilir. Bu değerler &#8220;true&#8221; ve &#8220;false&#8221; tur.</p>
<p style="text-align:center;"><strong>Literaller</strong></p>
<p style="text-align:center;">Literaller, değişkenlere değer atamak için kullanılır. Integer&#8217;lara C/C++ benzer biçimde değer atanır. 25 gibi tamsayı atayabilirsiniz. Hexadecimal bir tamsayı atamak için, sayının önüne &#8220;0x&#8221; ifadesi koymanız gerekir. Örneğin, 15 sayısını hexadecimal olarak 0xF şeklinde atamalısınız. 8&#8242;lik tabanda bir sayı atamak için &#8220;0&#8243; ifadesini, sayının önüne koymalısınız.</p>
<p style="text-align:center;">Kayan noktalı sayıları ise direkt 5.2345 şeklinde atayabilirsiniz. Bunlar 32 bit float veya 64 bit double olarak saklanabilirler. Belirtmezseniz, varsayılan 64 bit double&#8217;dır. Belirtmek için yapacağınız tek şey, sayının arkasına float için F, double için D koymaktır. Örneğin 5.323 F veya 5.323 D.</p>
<p style="text-align:center;">Karakterler, tek tırnak içinde atanırlar. Örneğin &#8216;a&#8217;gibi. Escape karakterleri için slash (\) kullanılır. Bunlar da tırnak içinde belirtilir. \t=tab, \n=satır atlama gibi. Stringler için çift tırnak kullanılır. &#8220;Maximum Bilgi&#8221; gibi. Satır atlaması yapmak istiyorsanız &#8220;Maximum Bilgi \n&#8221; kullanmalısınız.</p>
<p style="text-align:center;"><strong>Değişkenler</strong></p>
<p style="text-align:center;">Java&#8217;da 3 tip değişken vardır: instance, class ve local. Lokal değişkenler, metodların ve blokların içinde tanımlanabilirler. Blok, &#8220;{&#8221; ile başlayan ve &#8220;}&#8221; ile biten ifadeler topluluğudur. Blok içinde tanımlanan lokal değişkenler, blok sonuna kadar geçerlidir. Genel formatı &lt;tip&gt; &lt;değişken adı&gt; şeklindedir. Örneğin double tipinde pi adlı değişkeni tanımlayalım: double pi; bir değer de atayabilirdik: double pi=3.1415.</p>
<p style="text-align:center;">Değişkenler; harf, sayı, dolar işareti, alt çizgi ile başlayıp bu karakterlerle devam edebilir. Ama komutlar, operatörler değişken ismi olarak kullanılamazlar.</p>
<p style="text-align:center;"><strong>Açıklamalar</strong></p>
<p style="text-align:center;">Programlarınıza açıklama koymak için, Java&#8217;da kullanabileceğiniz iki stil vardır. Birincisi çift slash ( // ). Çift slash&#8217;tan satır sonuna kadar olan kısımda bulunan her şey açıklama olarak kabul edilir.</p>
<p style="text-align:center;">İkincisi ise slash ve yıldız ( /*) ile başlar yıldız ve slash ile biter. Bunlar arasındaki her şey, açıklama olarak kabul edilir. Örnek 1: double pi; // pi değişkeni double olarak tanımlandı. Örnek 1: /* Bu programın amacı sayısal loto tahmini yapmaktır.</p>
<p style="text-align:center;"><strong>Operatörler</strong></p>
<p style="text-align:center;">Java&#8217;da bulunan operatörler aşağıdaki tabloda verilmiştir.</p>
<table style="text-align:center;" border="1" cellspacing="1" cellpadding="0" width="300">
<tbody>
<tr>
<td><strong>Kategori</strong></td>
<td><strong>Operatör</strong></td>
</tr>
<tr>
<td>Aritmetik</td>
<td>+ &#8211; * / %</td>
</tr>
<tr>
<td width="37%">İlişkisel</td>
<td>&lt; &gt; &gt;= &lt;= == !=   &amp;&amp; ||</td>
</tr>
<tr>
<td width="37%">Bit işlemeri</td>
<td>&amp; | ^ &lt;&lt; &gt;&gt;   &gt;&gt;&gt; ~ &amp;= |= ^=</td>
</tr>
<tr>
<td>Artırma</td>
<td>++</td>
</tr>
<tr>
<td>Azaltma</td>
<td>&#8211;</td>
</tr>
</tbody>
</table>
<p style="text-align:center;">
<p style="text-align:center;">Aşağıda iki değişken tanımlanıp, bunlara değer atanıyor. Daha sonra ise bu iki değişkenin içeriği toplanıyor:</p>
<p style="text-align:center;"><strong>int x,y ;<br />
x= 3 ;<br />
y=4 ;<br />
int z=x+y ; </strong></p>
<p style="text-align:center;">Z &#8216;nin değeri yedidir. Operatörlerin öncelik sırası aşağıdaki tabloda gösterilmiştir.</p>
<table style="text-align:center;" border="1" cellspacing="1" cellpadding="0" width="100">
<tbody>
<tr>
<td>[] ()</td>
</tr>
<tr>
<td>++ &#8211; ! ~</td>
</tr>
<tr>
<td>* / %</td>
</tr>
<tr>
<td>+ -</td>
</tr>
<tr>
<td>&lt;&lt; &gt;&gt; &gt;&gt;&gt;</td>
</tr>
<tr>
<td>&lt; &gt; &lt;= &gt;=</td>
</tr>
<tr>
<td>== !=</td>
</tr>
<tr>
<td>&amp; ^</td>
</tr>
<tr>
<td>|</td>
</tr>
<tr>
<td>&amp;&amp;</td>
</tr>
<tr>
<td>||</td>
</tr>
<tr>
<td>= ve diğerleri</td>
</tr>
<tr>
<td>Bit işlemleri</td>
</tr>
</tbody>
</table>
<p style="text-align:center;"><strong>Ayrılmış Kelimeler</strong></p>
<p style="text-align:center;">Aşağıdaki tabloda, Java&#8217;nın komutları olarak kullanılan kelimeler listelenmiştir. Bu kelimeler, Java için ayrılmıştır. Yani bu kelimeleri değişken ismi gibi şeyler için kullanamazsınız. Bunlar sınıf tanımlaması, değişken tipi belirleme, koşul, döngü gibi işlemler için kullanılır.</p>
<table style="text-align:center;" border="1" cellspacing="1" cellpadding="0" width="200">
<tbody>
<tr>
<td>Abstract</td>
<td>boolean</td>
</tr>
<tr>
<td>break</td>
<td>byte</td>
</tr>
<tr>
<td>byvalue</td>
<td>case</td>
</tr>
<tr>
<td>catch</td>
<td>char</td>
</tr>
<tr>
<td>class</td>
<td>const</td>
</tr>
<tr>
<td>continue</td>
<td>default</td>
</tr>
<tr>
<td>do</td>
<td>double</td>
</tr>
<tr>
<td>else</td>
<td>extends</td>
</tr>
<tr>
<td>false</td>
<td>final</td>
</tr>
<tr>
<td>finally</td>
<td>float</td>
</tr>
<tr>
<td>for</td>
<td>goto</td>
</tr>
<tr>
<td>if</td>
<td>implements</td>
</tr>
<tr>
<td>import</td>
<td>instanceof</td>
</tr>
<tr>
<td>int</td>
<td>interface</td>
</tr>
<tr>
<td>long</td>
<td>native</td>
</tr>
<tr>
<td>new</td>
<td>null</td>
</tr>
<tr>
<td>package</td>
<td>private</td>
</tr>
<tr>
<td>protected</td>
<td>public</td>
</tr>
<tr>
<td>return</td>
<td>short</td>
</tr>
<tr>
<td>static</td>
<td>super</td>
</tr>
<tr>
<td>switch</td>
<td>synchronized</td>
</tr>
<tr>
<td>this</td>
<td>threadsafe</td>
</tr>
<tr>
<td>throw</td>
<td>transient</td>
</tr>
<tr>
<td>true</td>
<td>try</td>
</tr>
<tr>
<td>void</td>
<td>while</td>
</tr>
</tbody>
</table>
<p style="text-align:center;"><strong>Karşılaştırmalar</strong></p>
<p style="text-align:center;">Karşılaştırmalar, genelde bir karşılaştırmanın sonucuna göre belirtilen komut veya komutları çalıştırırlar. Eğer birden fazla komut kullanılacak ise blok içinde olmalıdır. Tek bir komut için buna gerek yoktur. Örneğin; a değişkenin değerinin bir olup olmadığını kontrol ediyoruz. Eğer a=1 ise a=2, değil ise a=1.</p>
<p style="text-align:center;">Görüldüğü üzere karşılaştırma, boolean bir değer döndürmelidir. Yani true (doğru) veya false (yanlış) değerini döndürmelidir ki bu değere göre işlenecek komutlar belirlenebilsin. Java&#8217;da karşılaştırma yapmak için &#8220;if&#8230;else&#8230;&#8221; kullanılır. Formatı şu şekildedir:</p>
<p style="text-align:center;">i<strong>f (karşılaştırma)<br />
{ karşılaştırmanın sonucu<br />
doğru ise işlencek komutlar<br />
}<br />
else<br />
{ karşılaştırmanın sonucu<br />
yanlış ise işlencek komutlar<br />
} </strong></p>
<p style="text-align:center;">Yukarıdaki örneği java formatında yazarsak :</p>
<p style="text-align:center;"><strong>if (a==1) // Java&#8217;da = operatörü atama için kullanılır.<br />
// Karşılaştırma için == operatörünü kullanılır.<br />
a=2;<br />
else<br />
a=1; // Tek komut olduğu için blok içine alınmasına gerek<br />
yoktur. </strong></p>
<p style="text-align:center;">Eğer birçok karşılaştırma varsa, iç içe karşılaştırmalar (if ) kullanılabilir. Sonucu nümerik olan karşılaştırmalar için &#8220;switch&#8230;case&#8230;&#8221; komutu kullanılır. Bu komut, sadece nümerik değerler için kullanılır. Formatı şu şekildedir:</p>
<p style="text-align:center;"><strong>switch (değişken)<br />
{<br />
case 1: // değişkenin değeri 1 ise<br />
break;<br />
case 2:{<br />
// değişkenin değeri 2 ise<br />
break;<br />
}<br />
default: // yukarıdaki değerler haricindeki değer ise<br />
break;<br />
} </strong></p>
<p style="text-align:center;"><strong>Döngüler</strong></p>
<p style="text-align:center;">Java &#8216;da üç tane döngü işlemi vardır. &#8220;for&#8221; döngüsünün yapısı aşağıdaki şekildedir. for (ilk değer; test; değer artırma/azaltma) Bu yapıda görülen ilk değer ifadesi, değişkeninizin alacağı ilk değerdir. Test ifadesinde ise basit veya kompleks bir karşılaştırma kullanabilrisiniz. Değer arttırma veya azaltma ise değişkeninizin o anki değerini değiştirecek bir ifadedir. &#8220;for&#8221; döngüsünü örnek kullanımı:</p>
<p style="text-align:center;"><strong>for (sayac=0;sayac&lt;3;sayac++) </strong></p>
<p style="text-align:center;">Bu örnekte, sayaç değişkenine ilk değer olarak sıfır verilmiş ve her döngüde bir arttırılması istenmiş. Döngüden çıkma koşulu ise sayaç değişkeninin 3 ve daha yukarı değerleri olarak belirlenmiş. Bu durumda sayaç değişkeni 0,1,2 değerleri için döngüye girecektir. &#8220;for&#8221; döngüsünden sonra bir komut veya blok komutları gelebilir. &#8220;while&#8221; döngüsünün yapısı şu şekildedir: while (test). Test ifadesi &#8220;for&#8221; döngüsündeki ile eşdeğerdir. Örnek:</p>
<p style="text-align:center;"><strong>sayac=0;<br />
while (sayac&lt;3)<br />
{<br />
//komutlar<br />
sayac++;<br />
} </strong></p>
<p style="text-align:center;">&#8220;do&#8221; döngüsünün yapısı:</p>
<p style="text-align:center;"><strong>do<br />
{<br />
//komutlar<br />
} while (test); </strong></p>
<p style="text-align:center;">&#8220;do&#8221; döngüsünün &#8220;while&#8221; döngüsünden farkı en az bir kere döngüye girmesidir.</p>
<p style="text-align:center;">Tüm döngülerde &#8220;break&#8221; komutu döngüden çıkılmasını, &#8220;continue&#8221; komutu ise bir sonraki değere geçmeyi sağlar.</p>
<p style="text-align:center;"><strong>Diziler</strong></p>
<p style="text-align:center;">Java&#8217;da diziler nesnedirler, C&#8217;deki gibi hafızada yer kaplayan pointer değillerdir. Java &#8216;da diziler, C &#8216;ye göre daha güvenilirdir. Dizilerin elemanlarına gelişigüzel değerler atayamazsınız. Java, dizi elemanlarını sırasıyla kontrol eder. Dolayısıyla arada değer atanmamış bir elemana rastlanırsa hata oluşur. Bu da C&#8217;de çıkan hafıza bozulmalarını önler. Java&#8217;da dizi kullanmak için ilk önce dizinin tipi verilir. Tip verilirken dizinin büyüklüğü belirtilmez.</p>
<p style="text-align:center;"><strong>int numbers[]; // Integer diziler için</strong> <strong><br />
String myStrings[]; // String diziler için </strong></p>
<p style="text-align:center;"><strong>Diğer metod ise tipin arkasına köşeli parantez koymaktır. </strong></p>
<p style="text-align:center;"><strong>String[] myStrings; // String diziler için </strong></p>
<p style="text-align:center;">İkisi de tanımlamada aynıdır. Her ikisi de kullanılabilir. Size hangisi daha kolay geliyorsa onu kullanın. Java dizileri örneklerden de görüldüğü üzere tüm veri tipleri için kullanılabilir. Sonraki adım ise dizinin &#8220;new&#8221; operatörü kullanılarak yaratılmasında, bu adımda dizinin büyüklüğü de belirtilir.</p>
<p style="text-align:center;"><strong>int numbers[] = new int[5]; // 5 büyüklüğünde integer dizi</strong> <strong><br />
String myStrings[] = new String[20]; // 20 büyüklüğünde string dizi.</strong></p>
<p style="text-align:center;">Bu adımdan sonra diziler yaratılmış oldu. Dizinin her bir elemanına varsayılan değer atanır. Varsayılan değerler integer veri tipi için &#8220;0 (sıfır)&#8221;, string veri tipi için &#8220;null&#8221; değeridir. Dizi elemanlarına bu adımdan sonra değer atamak çok kolaydır. C++ &#8216;da olduğu gibi Java &#8216;da da dizilerin elemanları sıfırdan başlayan tamsayı değerleridir. Dizinin ilk elemanına değer atamak için:</p>
<p style="text-align:center;"><strong>myStrings[0] = &#8220;ilk dizim&#8221;;<br />
numbers[0] = 10;</strong></p>
<p style="text-align:center;">Java&#8217;da bir dizinin eleman sayısını (büyüklüğü) bulmak için &#8220;length&#8221; metodu kullanılır. Bu metodun döndürdüğü değer &#8220;int&#8221; tipindedir.</p>
<p style="text-align:center;"><strong>int boyut=numbers.length // boyut=5 olur </strong></p>
<p style="text-align:center;">Java&#8217;da çok boyutlu diziler yoktur. Fakat bu tür diziler dizi içinde dizi oluşturularak simüle edilebilir.</p>
<p style="text-align:center;"><strong>int k[][] = new int[5][4]; // 5-4 boyutunda bir dizi<br />
k[1][3] = 999; // Değer atama</strong></p>
<p style="text-align:center;"><strong>Bilgi Alma ve Yazdırma</strong></p>
<p style="text-align:center;">Ekrandan bilgi almak için BufferReader sınıfını kullanacağız. BufferReader giris=new BufferReader( new InputStreamReader (System.in)); Bu sınıfın readLine() metodunu kullanarak bilgiyi alıyoruz:</p>
<p style="text-align:center;"><strong>try {<br />
String girilen=giris.readLine();<br />
} catch (IOException e ) { System.out.prinln(e);}</strong></p>
<p style="text-align:center;">try-catch bloğu olası bir hatayı yakalamak için kullanılıyor. Eğer bir hata oluşursa hatayı ekrana yazacak. Şimdi de girileni yazdıralım. Ekran birşey yazdırmak için System.out sınıfının println metodunu kullanacağız :</p>
<p style="text-align:center;"><strong>System.out.println (&#8220;Girdiğiniz şey : &#8221; + girilen );</strong></p>
<p style="text-align:center;">println metodu ekrana verilen parametredeki yazıyı yazdıktan sonra imleci bir alt satıra geçirir. Şayet imlecin bir alt satıra geçmesini istemiyorsanız print metodunu kullanın. Ama bu metodu kullandığınızda ekrana bilginin çıkması için akabinde flush metodunuda kullanmalısınız. Şu şekilde :</p>
<p style="text-align:center;"><strong>System.out.print(&#8220;Ali &#8220;);<br />
System.out.flush();</strong></p>
<p style="text-align:center;"><strong>Java Sertifikası </strong></p>
<p style="text-align:center;">Java internet ortamına girdiğinde, javayı destekleyen browserlardaki buglar yüzünden çoğu kullanıcı java özelliğini kapatmak durumunda kalmıştı. Günümüzde javanın güvenliği artmış durumda. Bunda browserların buglarının azalmasının rolü olduğu gibi sertifika kavramınında büyük rolü vardır.</p>
<p style="text-align:center;"><strong>Sertikasız/İşaretsiz Appletler Neler Yapabilir?</strong></p>
<p style="text-align:center;">Kullanıcıların bilgisayarında istenmeyen işlemlerin yapılmasını engellemek için, her browserın güvenlik sınırlamaları vardır. Bu güvenlik sınırlamasının türü browsera göre değişir. Günümüzdeki browserların java appletlerin için aşağıdaki güvenlik sınırlamaları vardır:</p>
<p style="text-align:center;">- Appletler kullanıcının bilgisayarından veri okumaz ve yazamazlar.<br />
- Kullanıcının bilgisayarında program çalıştıramazlar.<br />
- Ağ bağlantısı sadece appletin bulunduğu server ile kurulabilir.<br />
- Sistem ayarlarını değiştiremezler.</p>
<p style="text-align:center;">Bu güvenlik sınırlamalarına bakıldığı zaman normal bir applet sadece grafik veya yazı gösterme, ses ve animasyon işlemlerini yapabilir. Büyük işler için normal appletler uygun değildir ki küçük bir veri girişi dahi olamadan dişe dokunur uygulama yapmak mümkün değildir.</p>
<p style="text-align:center;"><strong>Sertifikalı ve İşaretli Nedi?</strong></p>
<p style="text-align:center;">Appletlerin web sayfalarını daha görsel hale getirmekten başka bir işe yaramadığı çabuk anlaşıldı. Ama daha fazlasını; mesela kulanıcıdan bilgi almak ve yazmak; yapabilmek için güvenlik sınırlamalarını kaldırmak gerekiyordu. Fakat bunun mümkün olduğu güvenli olması için, appletler yeni browserlar için işaretlenebiliyor.</p>
<p style="text-align:center;">Bunun için applet geliştiricisinin amacını belirten sertifaya ihtiyacı vardır. Sertifa browser okuyabileceği şekilde açıktır ve geliştiricinin adını ve kontrol kodu içerir. Bu sertifaka ile geliştirici appleti güvenli olarak işaretler. Başka hiç kimse bu sertifikayı kullanarak bir appleti işaretletyemez. Çünkü geliştirici appleti işaretlemek için sertifika ile birlikte verilen özel kodu kullanır.</p>
<p style="text-align:center;">Kullanıcı, appleti çalıştırdığında ( applet olan bir web sayfasını çağırdığında ) browser appletin işareti ile sertifikayı karşılaştırır. Böylece appletin işareti sertifaka ile uyumlu ise çalıştırır. Bu şu anlama geliyor: Doğru işaretli bir appletin geliştiricisini kullanıcı applet yüklenirken görür. Ama sadece applet yüklenirken.</p>
<p style="text-align:center;"><strong>İşaretli Appletler Neler Yapabilir?</strong></p>
<p style="text-align:center;">İşaretli bir applet yüklendiğinde kullanıcının karşısına bir pencere gelir. Bu pencerede sertifika hakkında bilgiler vardır ve kullanıcı onayı istenir. Kullanıcı bu bilgiler ışığında appletin çalışmasına izin verir veya vermez. Kullanıcının çalışmasını onaylamış bir applet normal programların yapabildiği her şeyi yapabilir.</p>
<p style="text-align:center;"><strong>Bu Durumdaki Güvenlik</strong></p>
<p style="text-align:center;">Buradaki problem onaylama işleminin ya hep ya hiç mantığında işlemesidir. Bunun anlamı onayladığınız bir appletin gerçek amacının dışındaki verileride okuyabildiği veya istenmeyen bir yere veri yazabildiğidir. Tam anlamıyla erişim haklarının belirlenmesi programcılara ağır geldiği için çoğu programcı tarafından yapılmıyor. Yine de Microsoft ve Netscape&#8217;in browserları için erişim haklarının değişik şekilde belirlenmesi karşısında programcılar minimum düzeyde erişim hakkıyle yetiniyorlar.</p>
<p style="text-align:center;">İkinci bir problem ise sertifikanın gerçekliğidir. Gerçek sertifikalar, programcı tarafından değil, programcının güvenilirliğine kefil olan şirketler tarafından oluşturulmuş sertifikalardır. Bu şirtketler para karşılığında sertifika oluşturmaktadır. Bir sertifika en az $200 başlayıp sertifikaya göre artmaktadır. Programcı yıllık olarak $100 başlayan fiyatlarıda ödemek zorundadır. Çoğu programcı için bu fiyatlar aşırı pahalı gelmektedir.</p>
<p style="text-align:center;">En azından herkes bedava kendi sertifasını oluşturabilir. Fakat böyle bir sertifa, programcının gerçekte kim olduğunu ve amacının doğruluğunu belirtmez. Hatta test sertifikaları diye anılanlar istenen herhangi bir isim ile oluşturulabilir. Her ne kadar insanı korkutsada, bilinmeyen bir shareware programı denemekten daha güvenlidir. Appleti onaylamak veya onaylamamak bizim elimizde değil mi?</p>
<p style="text-align:center;"><strong>Sertika Şirketleri</strong></p>
<p style="text-align:center;">Gerçek sertifakalar sertifa şirketleri ( Certificate Authority kısa CA ) tarafından veriliyor. Bu şirketler programncının yada şirketlerin amacını kontrol ettikten sonra sertifika veriyorlar. En tanınmış sertifika şirketleri <span style="text-decoration:underline;">VeriSign</span>, <span style="text-decoration:underline;">Thawte</span> ve <span style="text-decoration:underline;">BelSign</span>.</p>
<p style="text-align:center;">Her CA, vereceği sertifikaları kendi sertifikası altına tanımlar ki daha önceden güvenliğ belirlenmiş kendi sertifikaları gibi işlem grösünler. CA&#8217;lar kendilerine ait sertifikaları daha önceden browserlara tanımlanmış ve kurulmuştur. Maalesef bu şirketlerin verdikleri hizmetin bedeli yüksek. Bir defaya mahsus ücret $200 dan başlıyor, yıllık ücretler ise 100$ dan. Şuana kadar işaretli appletlerın yaygınlaşmamasının en büyük nedeni bu olsa gerek.</p>
<p style="text-align:center;"><strong>Test Setifikaları</strong></p>
<p style="text-align:center;">Test sertifikası herkes tarafından beş kuruş ödenmeden oluşturulabilen sertifikalardır. Ama programcının amacını gerçek olarak ispatlamayan sertifikalar bunlar. Bu sertifikalarda browsera göre değişiyor. Bir Netscape ve birde Microsoft için oluşturmak gerekiyor. Sun&#8217;ın HotJava browserına hiç girmeyeceğim burda, belki ileride onuda ele alırım.</p>
<p style="text-align:center;"><strong>Microsoft Browser İçin Test Sertifakası</strong></p>
<p style="text-align:center;">Microsoft browser sertifikası oluşturmak için, Microsoft&#8217;un sitesinden bedava indirebileceğiniz &#8221; <span style="text-decoration:underline;">Software Developer&#8217;s Kit ( SDK)</span> &#8221; e ihtiyacınız var. Bu yazılım kitinin içindeki programların tek tek indirilememesi tabii ki çok kötü bir durum. Bu kitin içindeki herhangi bir program için 20 MB büyüklüğündeki bu kiti indirmek zorunda kalıyorsunuz. Ama bu kiti CD olarakta sipariş edebiliyorsunuz.</p>
<p style="text-align:center;">Bu kit ile gelen ingilizce dökümantasyon tam olarak okunmalı, nitekim olmazsa olmaz birçok önemli parametre mevcut. Burada bu kitin içindeki DOS programlarıyla sertifika oluşturulmasını kısaca anlatmaya çalışacağım. Bu sadece başlangıç için yardım niteliğindedir. Gerisini dökümana bırakıyorum.</p>
<p style="text-align:center;"><strong><em>makecert</em></strong> ile Private/Public Key oluşturun. Sertifika için gerekli olan .cer uzantılı bir dosya oluşacaktır.</p>
<p style="text-align:center;"><strong><em>cerrt2spc</em></strong> ile sertifikayı oluşturun. Birinci adımda oluşturduğunuz .cer uzantılı dosyadan .spc uzantılı bir dosya oluşturur.</p>
<p style="text-align:center;"><strong><em>cabarc</em></strong> ile class dosyalarınızı cab dosyası haline getirin. Bu cab dosyası Internet Explorer tarafından indirilecek dosyadır.</p>
<p style="text-align:center;">Oluşturduğunuz cab dosyasını <strong><em>signcode</em></strong> ile işaretleyin. Bu işlem sırasında oluşturduğunuz .spc uzantılı dosyada kullanılacaktır.</p>
<p style="text-align:center;"><strong>Netscape Browser İçin Test Sertifakası</strong></p>
<p style="text-align:center;">Netscape programcıların işini biraz daha kolaylaştırmış Microsoft&#8217;a göre, sertifika için gerekli olan &#8220;Signtool&#8221; uğraşmadan indirebilecek ve Microsoft&#8217;un kitine göre daha kolay kullanımı var. Signtool Win95 ve Unix sürümleri var. Kısaca adımlar:</p>
<ul style="text-align:center;">
<li>signtool ile Private ve Public Key oluşturmak için -G parametresini kullanın.</li>
<li>Bu işlem ile x509.cacert adlı bir dosya oluşacaktır.</li>
<li>signtool ile class dosyalarınızı jar dosyası haline getirin.</li>
</ul>
<p style="text-align:center;">Bu işlemleri batch dosyası ile de yapabilirsiniz.</p>
<p style="text-align:center;"><strong>JAVA PLUG-IN</strong></p>
<p style="text-align:center;">Bundan birkaç yıl önce Sun, HotJava adlı web browserı piyasaya çıkardı. Sun&#8217;ın bu web browserı, Java&#8217;yı destekliyordu. Buda içine java nesneleri gömülebilen uygulamaların ilk örneğini teşkil ediyordu. Bunun ardından Netscape kendi web browserınada Java desteğini ekledi. Ardından da MS.</p>
<p style="text-align:center;">Gün geçtikce Java&#8217;nın yeni sürümleri çıktı. Bununla birlikte Netscape ve MS kendi ihtiyaçlarına uygun sınıf kütüphanelerini eklediler browserlarına. Böylece her browserın kendine özel JVM ( Java Virtual Machine ) &#8216;i oldu. Dolayısıyla browserların içine gömülen JVM ile browserdan bağımsız olarak JVM &#8216;i güncellemek imkansızdı.</p>
<p style="text-align:center;">Sun, herhangi bir ortamda Java&#8217;nın çalışabilmesi için gerekli olan her şeyi içeren ( Java VM ve sınıf kütüphaneleri ) JRE &#8216;yi çıkardı. Eğer JRE bilgisayarınızda yüklüyse, herhangi bir uygulamaya ( örneğin browser ) gömülmüş java nesneleri çalışabiyor. Sorun, browserların sadece kendi JVM lerine bakmaları ve makinada yüklü olan JRE &#8216;ye ulaşmak için bir mekanizmaya sahip olmamalarıydı. Sun olaya el attı : Java Plug-In</p>
<p style="text-align:center;">Sun&#8217;ın geliştirdiği Java Plug-In, JRE &#8216;ye HTML sayfalarından browserı kullanarak ulaşmak için bir mekanizma. Java Plug-In, Sun&#8217;ın web sitesinden <a href="//java.sun.com/products/plugin/1.1/index.html%20%20/n/nThis%20file%20was%20not%20retrieved%20by%20Teleport%20Pro,%20because%20it%20is%20addressed%20on%20a%20domain%20or%20path%20outside%20the%20boundaries%20set%20for%20"><span style="text-decoration:underline;">bedavaya indirilebiliyor</span></a>. Sayfaya girildiğinde, istenen java sürümü kullanıcının makinasında yüklü değilse, kullanıcı Java Plug-In sayfasına yönlendirilir. Java Plug-In, Netscape&#8217;de plug-in olarak, IE &#8216;de ise ActiveX Control olarak otomatik yüklenir.</p>
<p style="text-align:center;"><strong>Java Plug-In Kullanmak</strong></p>
<p style="text-align:center;">Java Plug-In, Netscape&#8217;de EMBED, IE &#8216;de ise OBJECT tagı sayesinde kullanılabilir. MIME tipi ile istenen java sürümünü belirtmelisiniz. Örneğin Java 1.2 sürümünün özelliklerini kullanan bir appletiniz varsa, MIME tipinde bunu belirterek appletinizin doğru çalışmasını sağlarsınız.</p>
<table style="text-align:center;" border="1" cellspacing="1" cellpadding="0" width="400">
<tbody>
<tr>
<td><strong>MIME Tipi</strong></td>
<td><strong>Nesne Tipi / Sürüm</strong></td>
</tr>
<tr>
<td>application/x-java-applet;</td>
<td>Applet / Mevcut sürüm</td>
</tr>
<tr>
<td>application/x-java-applet;version=1.1</td>
<td>Applet / Java 1.1</td>
</tr>
<tr>
<td>application/x-java-applet;version=1.2</td>
<td>Applet / Java 1.2</td>
</tr>
<tr>
<td>application/x-java-bean;</td>
<td>Bean / Mevcut sürüm</td>
</tr>
<tr>
<td>application/x-java-bean;version=1.1</td>
<td>Bean / Java 1.1</td>
</tr>
</tbody>
</table>
<p style="text-align:center;">
<p style="text-align:center;">HTML sayfasına appletinizi geleneksel yöntemlerle koymak isterseniz, yani Java Plug-In kullanmak istemiyorsanız APPLET tagını kullanmanız gerekir. Java Plug-In kullanmak istiyorsanız;</p>
<p style="text-align:center;"><span style="text-decoration:underline;">Netscape için EMBED tagını kullanmalısınız :</span></p>
<p style="text-align:center;"><strong>&lt;HTML&gt;<br />
&lt;BODY&gt;</strong></p>
<p style="text-align:center;"><strong>&lt;EMBED type=&#8221;application/x-java-applet;version=1.1&#8243; width=&#8221;200&#8243; height=&#8221;200&#8243; code=&#8221;Appletim.class&#8221; codebase=&#8221;/appletler/&#8221; parametre1=&#8221;2&#8243; pluginspage=&#8221;http://java.sun.com/products/plugin/1.1/plugin-install.html&#8221;&gt;</strong></p>
<p style="text-align:center;"><strong>&lt;NOEMBED&gt;<br />
Applet Desteklenmiyor<br />
&lt;/NOEMBED&gt;</strong></p>
<p style="text-align:center;"><strong>&lt;/EMBED&gt;</strong></p>
<p style="text-align:center;"><strong>&lt;/BODY&gt;<br />
&lt;/HTML&gt;</strong></p>
<p style="text-align:center;">PLUGINSPAGE ve TYPE alt tagını kullanmanız gerektiğini unutmayınız. Çünkü browser Java Plug-In yükleme sayfasını ve sürümü bilmesi gerekir. APPLET tagında kullanılan PARAM alt tagını bu durumda kullanmazsınız. Parametreleri direkt, örnekte görüldüğü gibi ( parametre1=&#8221;2&#8243;) direkt yazmalısınız.CODE, CODEBASE,WIDTH,HEIGHT gibi alt taglar APPLET tagında olduğu gibi kullanılır.</p>
<p style="text-align:center;"><span style="text-decoration:underline;">Internet Explorer için OBJECT tagını kullanmalısınız :</span></p>
<p style="text-align:center;"><strong>&lt;HTML&gt;<br />
&lt;BODY&gt;&lt;OBJECT classid=&#8221;clsid:8AD9C840-044E-11D1-B3E9-00805F499D93&#8243; width=&#8221;200&#8243; height=&#8221;200&#8243; codebase=&#8221;http://java.sun.com/products/plugin/<br />
1.1/jinstall-11-win32.cab#Version=1,1,0,0&#8243;&gt;<br />
&lt;PARAM VALUE=&#8221;Appletim.class&#8221;&gt;<br />
&lt;PARAM VALUE=&#8221;/appletler/&#8221;&gt;<br />
&lt;PARAM VALUE=&#8221;application/x-java-applet;version=1.1&#8243;&gt;<br />
&lt;PARAM VALUE=&#8221;2&#8243;&gt;</p>
<p></strong></p>
<p style="text-align:center;"><strong>Applet desteklenmiyor&lt;/OBJECT&gt;</p>
<p>&lt;/BODY&gt;<br />
&lt;/HTML&gt;</p>
<p></strong></p>
<p>Burada CODEBASE alt tagı gömülü nesnenin gerektirdiği ActiveX Controlünün yeridir. Java&#8217;ya ait codebase, type, code gibi taglar PARAM alt tagı ile belirtilir.</p>
<p style="text-align:center;">Netscape ve IE için farklı yöntemlerin kullanılması, her biri için ayrı web sayfalarımız olacağı anlamına gelmiyor. HTML kodu kullanarak her ikisi içinde geçerli bir sayfa hazırlayabilirsiniz. Fakat böyle bir HTML kodu yazmak için kendinizi kasmayın. Çünkü Sun, Java Plug-In ile beraber HTML Çeviricisi ( HTML Converter ) sunuyor. Bu çevirici sayesinde HTML sayfasında kullanılan APPLET tagları her iki browserda da kullanılabilecek şekilde çevriliyor.</p>
<p style="text-align:center;"><strong>Applet Neden Çalışmıyor?</strong></p>
<p style="text-align:center;">Appletler, dinamik web tabanlı içerik için en ideal programcıklardır. Teorikte bir kere yaz, her bilgisayarda, her browserda ve her işletim sisteminde çalıştır; mantığını ileri süren Sun bunu &#8220;Bir kere yaz, her yerde çalıştır ( Run Once, Run Anywhere ) &#8221; sloganıyla lanse ediyor.</p>
<p style="text-align:center;">Pratikte, birçok java programcısı ve birçok kullanıcı Java appletlerinin başağrısına sebep olduğunu söylüyorlar. &#8220;Neden applet çalışmıyor ?&#8221; içerikli birçok mail geliyor.</p>
<p style="text-align:center;">Applet çalıştığı zaman tam çalışıyor, çalışmadığı zaman ise büyük bir sorun halini alıyor. Hatayı bulmak ve hatayı düzeltmek gerçekten başağrısına neden olabiliyor. Hatta Java ile program geliştirmeyi bu yüzden bırakanlar bile var. Değişik browserlar, browser sürümlerinin farklılıkları, hatta browser konfigürasyonlarındaki farklılıklar appletlerin çalışmasında rol oynayabiliyor. Browserlara gömülü Java Sanal Makinasındaki ( Java Virtual Machine ) buglar ve bilgisayarın performansıda etkili oluyor.</p>
<p style="text-align:center;">Şayet browser&#8217;ınız hiçbir appleti çalıştıramıyor ise, java applet ihtiva eden bir sayfayı çağırdığınızda takılıp kalıyorsa browser yazılımını tekrar kurmak çoğu zaman problemi ortadan kaldırıyor. Bu söz konusu değilde, gri bir dikdörtgenden başka bir şey göremiyorsanız bunun bir kaç sebebi olabilir.</p>
<p style="text-align:center;"><strong>Neden Gri Dikdörtgen?</strong></p>
<p style="text-align:center;">Appletin yüklenmesi sırasında veya yüklendikten sonra çalıştırılması sırasında meydana gelen hatalardan dolayı oluşur. Java programlama dilinde bunun teknik adı &#8220;Exception&#8221; dır. Java&#8217;da hataları yakalama imkanı olduğunu biliyoruz, daha doğrusu bilinen çoğu hatayı desek daha iyi olur. Oluşan hatalar bilinmedik, beklenmedik hata veya appletden kaynaklanmayan hatalar olabildiği için bu hataları yakalama imkanı yok. Şimdi en çok karşılaşılan ve bilinen hataları inceleyelim :</p>
<p style="text-align:center;"><span style="text-decoration:underline;">Class dosyasına ulaşamama veya yükleyememe</span></p>
<p style="text-align:center;">Bilindiği gibi applet dediğimiz programcıklar, derlendikten sonra class dosyası halini alıyorlar. Appletlerin çalışması için bu class dosyalarının yüklenmesi gerekiyor. Şayet class dosyasının yeri bulunamaz veya dosya yüklenirken hata oluşur ise gri kutunun içinde class dosyasını bulunamadığına dair veya yüklenirken hata oluştuğuna dair bir hata mesajı çıkar ve applet çalışmaz. Applet çalışmadığı için, ki hata daha applet yüklenirken oluştuğu için, applet kodu içinden bu hatayı yakalamanız ve engellemeniz mümkün değildir. Bu hata çoğu durumda, &lt;applet&gt; tagı içinde class dosyasının bulunduğu yeri yanlış olarak belirtildiği zaman ortaya çıkıyor.</p>
<p style="text-align:center;"><span style="text-decoration:underline;">Ağ kaynaklarına erişememe</span></p>
<p style="text-align:center;">Bazı zamanlar ağ üzerinde bulunana server göçer veya herhangi bir sebepten bağlantı kurulamaz. Kullanıcı firewall arkasındadır ve Socket, DatagramSocket istekleri çalışmaz. Eğer ağ kaynaklarına erişim gerektiren bir applet yazıyorsanız, iletişim için TCP/UDP protokülü yerine HTTP protokülünü kullanın. Çünkü firewall arkasında olan kullanıcı sayısı gün geçtikçe artıyor. Karşılaşılan diğer bir hata sebebi ise, browserların appletler ile ilgili kısıtlamalarından kaynaklanıyor.</p>
<p style="text-align:center;">Appletviewer&#8217;da sorunsuz çalışan applet, browserda çalışmıyor. Applet sadece bulunduğu server ile bağlantı kurabilir. Birçok applet ise domain isimlerini IP adresine çevirirken hata oluşturuyorlar. Bunu önlemek için domain ismi yerine IP adresi kullanın.</p>
<p style="text-align:center;"><span style="text-decoration:underline;">Null Hataları</span></p>
<p style="text-align:center;">Çok karşılaşılan hatalardan biriside NULL hatalarıdır. Bu appletin kodundan kaynaklanan ve appletin çalışmamasını sağlayan bir hatadır. Bir değişkene bir nesne atarken, nesnenin değerinin Null ( değersiz ) olmamasına dikkat edin. Aşağıdaki örneği inceleyin:</p>
<p style="text-align:center;">Örnek:<br />
<strong>String sayac = getParameter (&#8220;sayac&#8221;); //sayac parametresini al<br />
if ( sayac == null ) // Eğer sayac null ise<br />
sayac = &#8220;1&#8243;; // sayac değerini &#8220;1&#8243; yap.</strong></p>
<p style="text-align:center;">Biraz dikkat ile, web sayfalarında önümüze çıkan gri dikdörgen kutucukları azaltabiliriz.</p>
<p style="text-align:center;">
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zorlu48.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zorlu48.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zorlu48.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zorlu48.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zorlu48.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zorlu48.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zorlu48.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zorlu48.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zorlu48.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zorlu48.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zorlu48.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zorlu48.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zorlu48.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zorlu48.wordpress.com/17/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zorlu48.wordpress.com&amp;blog=12343662&amp;post=17&amp;subd=zorlu48&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zorlu48.wordpress.com/2010/03/05/asp-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41d54a7e6480ec76f756dbc97a53cba1?s=96&#38;d=wavatar&#38;r=G" medium="image">
			<media:title type="html">zorlu48</media:title>
		</media:content>
	</item>
		<item>
		<title>C# PROGRAMLAMA</title>
		<link>http://zorlu48.wordpress.com/2010/03/05/c-ile-ver-tabani-slemleri/</link>
		<comments>http://zorlu48.wordpress.com/2010/03/05/c-ile-ver-tabani-slemleri/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 20:45:30 +0000</pubDate>
		<dc:creator>zorlu48</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://zorlu48.wordpress.com/?p=12</guid>
		<description><![CDATA[C#’ta Veritabanı İşlemleri (Database Operations with C#) ADO.NET’e Genel Bir Bakış Microsoft VS.NET’te veritabanı işlemleri ADO.NET ile gerçekleştirilmektedir. ADO.NET yazılımcının çeşitli veritabanlarıyla ilgili akla gelebilecek bütün işlemlere müdahale edebilmesi için geliştirilmiş .NET dillerinin hepsiyle birlikte kullanılabilen ortak bir yapıdır. Bu yapı içerisinde çeşitli veritabanı işlemlerini gerçekleştirmeye yönelik pek çok nesne, yöntem ve sınıf mevcuttur. Bu [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zorlu48.wordpress.com&amp;blog=12343662&amp;post=12&amp;subd=zorlu48&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>C#’ta Veritabanı İşlemleri</strong></p>
<p><strong>(Database Operations with C#)</strong></p>
<p><strong><span style="text-decoration:underline;"> </span></strong></p>
<p><strong><span style="text-decoration:underline;">ADO.NET’e Genel Bir Bakış</span></strong></p>
<p><strong> </strong></p>
<p><a href="http://www.microsoft.com/turkiye/">Microsoft VS.NET</a>’te veritabanı işlemleri ADO.NET ile gerçekleştirilmektedir.</p>
<p>ADO.NET yazılımcının çeşitli veritabanlarıyla ilgili akla gelebilecek bütün işlemlere müdahale edebilmesi için geliştirilmiş .NET dillerinin hepsiyle birlikte kullanılabilen ortak bir yapıdır.</p>
<p>Bu yapı içerisinde çeşitli veritabanı işlemlerini gerçekleştirmeye yönelik pek çok nesne, yöntem ve sınıf mevcuttur.</p>
<p>Bu işlemlere örnek vermek gerekirse; Kayıt ekleme, silme, değiştirme, arama, her türlü SQL işlemleri, transaction yönetimi, Stored Procedure kullanımı, ilişki yönetimi vb. gibi.</p>
<p><strong><span style="text-decoration:underline;">Veri Tabanında Connection (Bağlantı) Kavramı ve OleDbConnection Sınıfı</span></strong></p>
<p>ADO.NET mimarisinde, pek çok sınıfın veri kaynakları ile olan iletişiminde Connection (Bağlantı) nesnelerini kullanırız. Örneğin, bir veri kayağındaki tablolara ait verileri, DataSet sınıfından bir nesne örneğine taşımak istediğimizi düşünelim. Bu dataSet nesnesini dolduracak olan DataAdapter sınıfına, sahip olduğu sql sorgusunun veya komutunun işleyeceği bir hattı belirtmemiz gerekir. İşte burada devreye Connection (Bağlantı) nesnelerimiz girer. Ya da bir Command sınıfı nesnesi yardımıyla veritabanı üzerindeki bir saklı yordamı (stored procedure) çalıştırmak istediğimizi düşünelim. Bu durumda komutun çalıştırılabileceği bir hattı veri kaynağımız ile Command nesnesi arasında sağlamamız gerekir. İşte Connection (Bağlantı) nesnemizi kullanmamız için bir sebep daha. Verdiğimiz bu basit örneklerdende anlaşıldığı gibi, Connection(bağlantı) sınıfları, veri kaynağına bir hat çekerek, ADO.NET nesnelerinin bu hat yardımıyla işlemlerini gerçekleştirmelerine imkan sağlarlar.</p>
<p>﻿﻿﻿</p>
<p><strong><em>OleDbConnection baglanti=new OleDbConnection(); </em></strong></p>
<p><strong><em>/* OleDbConnection nesnemiz oluşturuluyor. */</p>
<p></em></strong></p>
<p>OleDbConnection sınıfı ile, bir OleDb Data Provider (veri sağlayıcısı) üzerinden, oledb destekli veri kaynaklarına erişim sağlayabiliriz. Bunu daha iyi kavramak için aşağıdaki şekle bakalım.</p>
<p><em> </em></p>
<p>Şekil 1 Şekil 1. OleDbConnection ile Veri Kaynaklarına Bağlantı</p>
<p>Görüldüğü gibi bir OleDbConnection nesnesi öncelikle bir OleDb Data Provider (OleDb Veri Sağlayıcısı) ile iletişim kurar. Ardından bu veri sağlayıcı istenen veri kaynağına erişerek, gerekli hattı tesis etmiş olur. Peki bu işlemi nasıl gerçekleştireceğiz. İşte tüm Connection nesnelerinin en önemli özelliği olan ConnectionString özelliği bu noktada devreye girmektedir. Kısaca ConnectionString özelliği ile, veri kaynağı ile sağlanacak olan iletişim hattının kurulum bilgileri belirlenir.</p>
<p>ConnectionString özelliği, bir takım anahtar-değer çiftlerinin noktalı virgül ile ayırlmasından oluşturulan string bir bilgi topluluğudur. ConnectionString özelliği içinde kullanabileceğimiz bu anahtar-değer çiftlerinin en önemlisi Provider anahtarıdır. Bu anahtara vereceğimiz değer, hangi tip oledb veri sağlayıcısını kullanmak istediğimizi belirtmektedir.</p>
<p><strong><span style="text-decoration:underline;">Sql Sunucusundaki veritabanı için bağlantı:</span></strong></p>
<p><strong><em>baglanti.ConnectionString=&#8221;Provider=SQLOLEDB;Data Source=localhost;Database=veri;Integrated Security=SSPI&#8221;;</em></strong></p>
<p>Yukarıdaki kodlarda ConnectionString özelliği belirleniyor. Provider (Sağlayıcımız) SQLOLEDB. Bu bir sql sunucusuna bağlanmak istediğimizi belirtir. Data Source anahtarına localhost değerini atayarak, sunucunun yerel makinede olduğunu belirtiyoruz. Ancak buraya başka bir adreste girilebilir. Sunucunuz nerede ise oranın adresi. Database ile, bağlantı hattının açılacağı veritabanını belirliyoruz. Burada sql sunucumuzda yer alan veri isimli veritabana bağlantı hattı açıyoruz. Son olarak Integrated Security=SSPI anahtar-değer çifti sayesinde Windows Doğrulaması ile sunucuya bağlanabileceğimizi belirtiyoruz. Yani sql sunucusuna bağlanma yetkisi olan her windows kullanıcısı bu hattı tesis edebilecek.</p>
<p>Aynı örnekte bu kez belli bir kullanıcı ile bağlanmak istediğimizi düşünelim. Bu durumda ConnectionString&#8217;imizi aşağıdaki şekilde değiştirmemiz gerekir. Bu durumda User ID ve Password anahtarlarına gerekli kullanıcı değerlerini atarız.</p>
<p><strong>baglanti.ConnectionString=&#8221;Provider=SQLOLEDB;Data Source=localhost;Database=veri;User;Password=CucP??80.&#8221;;</strong></p>
<p><strong><span style="text-decoration:underline;">Access veritabanı için bağlantı:</span></strong></p>
<p><strong>OleDbConnection baglanti=new OleDbConnection(&#8220;Provider=Microsoft.Jet.OLEDB.4.0;data source=c:\\veri.mdb&#8221;);</strong></p>
<p><strong>OleDbConnection baglanti=new OleDbConnection();</strong></p>
<p><strong>baglanti.ConnectionString=&#8221;Provider= Microsoft.Jet.OLEDB.4.0;data source=c:\\veri.mdb&#8221;);</strong></p>
<p><strong> </strong></p>
<p>Yukarıda Provider olarak bu kez Microsoft.Jet.OLEDB.4.0 &#8216;ı seçerek, bir Access veritabanına bağlanmak istediğimizi bu Ole Db Provider&#8217;a bildirmiş olduk. Daha sonra bu veri sağlayıcı componenti, Data Source anahtarındaki değere bakarak, ilgili adresteki veritabanına bir hat çekti.</p>
<p><strong><span style="text-decoration:underline;">Bağlatı Hattının Kullanıma Açılması ve Kapatılması:</span></strong></p>
<p><strong><em>baglanti.Open();</em></strong> /* Open metodu ile oluşturduğumuz iletişim hattını kullanıma açıyoruz. */</p>
<p><strong>baglanti.Close();</strong> /* Close metodu ilede oluşturulan iletişim hattını kapatıyoruz.*/</p>
<p><strong><span style="text-decoration:underline;">ADO.NET ile veritabanı işlemleri</span></strong></p>
<p>ADO.NET ile veritabanı işlemleri temel olarak 2 kısımda incelenebilir;</p>
<p>• <strong>Bağlantılı Veritabanı İşlemleri (Connected Database Operations):</strong> Uygulamanın veritabanına sürekli bağlı olduğu yöntemdir. Değişiklikler veritabanına direkt olarak yansımaktadır. Gerçek zamanlı erişim sağlar. Temel nesneleri Command ve DataReader nesneleridir.</p>
<p><em>Bu yöntem eski ADO versiyonunda da kullanılan yöntemdir. Bu metotta kullanıcı veritabanına bağlantı sağlar ve istediği sorguyu çalıştırır. Sorgu sonucunda geri döndürülen veriler uygulamanın ihtiyacına göre kullanılır. Veritabanına açılan bağlantı herhangi bir nedenden dolayı kesilirse kullanıcının yeni sorgular yapması mümkün değildir. Bu yüzden veri tabanı bağlantısının mümkün oılduğunca hızlı bir şekilde kullanılması gerekir.</em></p>
<p>• <strong>Bağlantısız Veritabanı İşlemleri (Disconnected Database Operations):</strong></p>
<p>Uygulama veritabanına sürekli bağlı değildir. İşlemler veritabanının gerekli tablolarını içeren sanal bir kopyası üzerinde yapılır. Gerektiği zaman bu veriler veritabanına aktarılır. Bu aktarımlar haricinde işlemler bağlantısız bir ortamda gerçekleşmektedir.</p>
<p><em>Bu yöntem ADO.NET ile birlikte kullanılmaya başlanmıştır. ADO.NET kütüphanesindeki çeşitli sınıflar yardımıyla bir veritabanındaki istenilen tablodaki kayıtların tamamı istemcinin hafızasına alınır ve veritabanına olan bağlantı kesilse bile istemci verilerle oynayabilir. Tabi veritabanı bağlantısı kesildiği anda hafızadaki verileri veritabanına güncellemek mümkün değildir.(Güncelleme için yeni bir bağlantının açılması gerekir) Bu yöntemle istemcinin hafızasında, veritabanındaki tabloların resmen bir modeli oluşturulur. DataSet isimli sınıf ile hafızadaki bu verilere sistematik bir şekilde erişmek mümkündür. Üstelik hafızadaki bu veriler içinde çeşitli kompleks işlemler bile yapılabilmektedir. Bu işlemlerden en önemlisi DataSet içindeki tablolar arasında ilişki kurmak ve gerektiğinde bu ilişkiye dayanarak çeşitli sorgular yapmaktır.</em></p>
<p><strong><br />
</strong></p>
<p><strong>C#’ta Bağlantılı(Online) Veritabanı İşlemleri</strong></p>
<p><strong>(Connected Database Operations with C#)</strong></p>
<p><strong> </strong></p>
<p><a title="Command (Komut) Nesnesi" href="http://www.evcil.net/post/command-komut-nesnesi/"><strong>Command (Komut) Nesnesi</strong></a></p>
<p>Command nesnesi, veri kaynaklarına karşı icra edilecek komutları temsil eden <strong>ADO.NET </strong>nesnesidir. Command nesnesi de bir <strong>Provider</strong> nesnesidir ve temsil ettiği komutları icra ettirebilmesi için kurulmuş (açık) bir bağlantıya (Connection nesnesine) ihtiyacı vardır. Bu nedenledir ki açık bir bağlantıyı, Command nesnesi ile ilişkilendirmeden, onu bir komut icra ettirmek için kullanamayız.</p>
<p>Command nesnesi ile</p>
<p>* Direk <strong>SQL</strong> sorguları yürütebiliriz. (<em>SELECT, INSERT, UPDATE, DELETE ve diğer DDL komutları CREATE, ALTER, ..</em>)</p>
<p>* <strong>Depolanmış prosedür</strong> (<em>Stored Procedure</em>) işletimi yaptırabiliriz.</p>
<p>Yürüttüğümüz sorgu (veya stored procedure) sonucu dönen kayıtlara bir DataReader nesnesiyle ulaşabiliriz.</p>
<p>Connection nesnesi sadece, uygulamamamızın veritabanı ile olan canlı ilişkisini temsil ederken, Command nesnesi bu ilişki üzerinden yürüyen her türlü <strong>alış/veriş</strong>i temsil ediyor.</p>
<p>Örnek kullanım:</p>
<p>OleDbCommand SorguCalistir = new OleDbCommand(sorgu,baglanti);</p>
<p><a title="DataReader Nesnesi" href="http://www.evcil.net/post/datareader-nesnesi/"><strong>DataReader Nesnesi</strong></a></p>
<p>Command nesnesi, veri kaynağına karşı yürütülen ifadeleri temsil ediyor. Genellikle sorguları, bir veri seti döndürmek amacıyla işletiriz. ADO.NET veri sağlayıcısı, komutları icra ettiren Command nesnesinin yanında, dönen veri kümesini temsil edecek bir yapı da gerçeklemek durumundadır. Bu yapı, DataReader nesnesidir.</p>
<p>DataReader&#8217;in başlıca özellikleri:</p>
<p>DataReader sadece veri okumak amacıyla tasarlanmıştır ve çalışması veri kaynağıyla kurulmuş canlı bağlantıyı gerektirir.</p>
<p>DataReader, verilerin sadece ileri yönde hareket eden akışını temsil eder. DataReader ile belli bir anda, sadece bir kayda erişebiliriz. Tüm kayıtlara erişebilmek için, veri akışının sonuna kadar hareket etmeliyiz(örneğin döngü ile).</p>
<p>DataReader, kullandığı veri kaynağı bağlantısını, kapanana kadar kendisi için kilitler.</p>
<p><strong><span style="text-decoration:underline;">D</span></strong><strong><span style="text-decoration:underline;">ataReader Nesnesini Oluşturmak</span></strong></p>
<p>Daha önceden bahsettiğimiz Connection ve Command nesnelerinin aksine, DataReader nesnesini bir yapılandırıcı (constructor) metodla kendimiz  oluşturamayız. DataReader, Command nesnesinin ExecuteReader() metodu ile elde edilir. Bu metod, Command nesnesinin ifade ettiği sorguyu işletir ve dönen kayıtları temsil edecek DataReader nesnesini oluşturur.</p>
<p>Örnek kullanım:</p>
<p><strong><em>OleDbConnection</em></strong><strong><em> baglanti = new OleDbConnection();</em></strong></p>
<p><strong><em>//Bağlantı nesnesi tanımlandı</em></strong></p>
<p><strong><em>string</em></strong><strong><em> dosyaadi;</em></strong></p>
<p><strong><em>string</em></strong><strong><em> sorgu;</em></strong></p>
<p><strong><em> </em></strong></p>
<p><strong><em>dosyaadi = @&#8221;..\..\..\veri.mdb&#8221;;</em></strong></p>
<p><strong><em> </em></strong></p>
<p><strong><em>baglanti.ConnectionString = &#8220;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&#8221; +  dosyaadi;</em></strong></p>
<p><strong><em> </em></strong></p>
<p><strong><em>//Bağlantı parametreleri tanımlandı</em></strong></p>
<p><strong><em> </em></strong></p>
<p><strong><em>baglanti.Open();</em></strong></p>
<p><strong><em>//Bağlantı Açıldı</em></strong></p>
<p><strong><em> </em></strong></p>
<p><strong><em>sorgu = string.Format(&#8220;select * from Satis&#8221;);</em></strong></p>
<p><strong><em>//Sorgu cümlesi tanımlandı</em></strong></p>
<p><strong><em> </em></strong></p>
<p><strong><em>OleDbCommand</em></strong><strong><em> SorguCalistir = new OleDbCommand(sorgu, baglanti);</em></strong></p>
<p><strong><em>//Hazırlanan sorguyu açılan con bağlantısı üzerinden çalıştıracak olan //SoguCalistir nesnesi tanımlandı.</em></strong></p>
<p><strong><em> </em></strong></p>
<p><strong><em>OleDbDataReader</em></strong><strong><em> SorguSonucu = SorguCalistir.ExecuteReader();</em></strong></p>
<p><strong><em>//Tanımlanan SorguCalistir Command nesnesinin ExecuteReader() metodu ile //geri dönecek DataReader nesnesine bağlanıyor. Veriler henüz alınmadı!!</em></strong></p>
<p><strong><em> </em></strong></p>
<p><strong><em>while</em></strong><strong><em> (SorguSonucu.Read())</em></strong></p>
<p><strong><em>{</em></strong></p>
<p><strong><em>listBox1.Items.Add(SorguSonucu[0].ToString());</em></strong></p>
<p><strong><em> }</em></strong></p>
<p><strong><em>//Sorguya uygun olarak Read() metodu ile DataReader’a alınan verilerden ilk //sütun bilgileri (örn. SatisKodu) tek tek listBox1’e eklendi.</em></strong> <strong><em>Kaydın var //olup olmamasına göre true/ false değeri döndürecektir.</em></strong></p>
<p><strong><em>//Read() metodu her seferinde bir sonraki kayda otomatik olarak //konumlanacak. Eğer getirecek kayıt kalmamışsa bu metod false değeri //verecektir; Bu da döngüden çıkmasına sebep olacaktır</em></strong></p>
<p><strong><em> </em></strong></p>
<p><strong><em> </em></strong></p>
<p><strong><em>baglanti.Close();</em></strong></p>
<p><strong><em>//Bağlantı kapatıldı</em></strong><br />
DataReader sadece tek bir kaydı hafızaya yükler. Daha önce gösterdiği kayıtlar ve daha sonra göstereceği kayıtlar hakkında en ufak bilgisi yoktur. Bu nedenle, bu nesnenin, bir veritabanı tablosunu hafızada temsil etmesini bekleyemeyiz. ADO.NET&#8217;in bu tip &#8220;offline&#8221;(bağlantısız) veri işlemleri için sunduğu DataSet adında farklı bir nesne vardır. System.Data isim uzayına bağlı DataSet nesnesine, DataAdapter nesnesi yardımı ile veritabanından kayıt çekeriz. Aslında DataAdapter nesnesi de kayıtları, kendi içinde DataReader nesnesi kullanarak almaktadır.<span id="more-12"></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zorlu48.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zorlu48.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zorlu48.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zorlu48.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zorlu48.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zorlu48.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zorlu48.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zorlu48.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zorlu48.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zorlu48.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zorlu48.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zorlu48.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zorlu48.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zorlu48.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zorlu48.wordpress.com&amp;blog=12343662&amp;post=12&amp;subd=zorlu48&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zorlu48.wordpress.com/2010/03/05/c-ile-ver-tabani-slemleri/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41d54a7e6480ec76f756dbc97a53cba1?s=96&#38;d=wavatar&#38;r=G" medium="image">
			<media:title type="html">zorlu48</media:title>
		</media:content>
	</item>
	</channel>
</rss>
