Makalemize başlamadan önce flash animasyonumuzu xml dosyamızı ve database imizi ayarlaryalım . Biraz uzun bir makale olucak sıkılmadan okursanız dewamında cok guzel bir haber gösterim kısmımız olucak !
Adım Adım Gidelim .
1.ADIM : SQL IŞLEMLERIMIZ [ DATABASE + TABLO YAPISINI OLUŞTURUP IÇERIK GIRMEK ]
create databaseMakalelerim
useMakalelerim
create tabletbl_haber ( Haberid int identity(1,1), Haberbaslik nvarchar(max), Haberkisayazi nvarchar(max), HaberIcerik nvarchar(max) )
Makalelerim adında oluşturduğum database imin içine tbl_haber adında tablomu oluşturdum . Şimdi içerisine bir kaç adet haber girelim .
tbl_haber tablomuzu açıp içerisine değerlerimizi girdik . Sql ile olan işimiz simdilik bitti . Tabiki içerik yönetimi olması icin ekle sil duzenle gibi işlemleride yapmamız gerekmektedir . Bizim amacımız sqldeki verileri okumak ve bunları xml olarak flash ın görmesini sağlamak .
2. ADIM : XML YAPIMIZI INCELEYELIM .
Xml yapımızı inceleyelim . Flash animasyonumuz bizden aşağıdaki formatda xml ister ...
<? xml version="1.0" encoding="utf-8"?> <rss version="2.0"> <channel> <title>Başlık</title> <link>sayfa url</link> <description>Açıklama</description> <copyright>copyright bilgilerimiz</copyright> <pubDate>Oluşturulma Tarihi</pubDate> <language>Dil bilgisi</language> <webMaster>Siteyi Tasarlayanın Adı</webMaster> <item> <title>Haber Başlık</title> <description>Haber İçerik</description> <link>Haber Link</link> </item> <item> <title>Haber Başlık</title> <description>Haber İçerik</description> <link>Haber Link</link> </item> <item> <title>Haber Başlık</title> <description>Haber İçerik</description> <link>Haber Link</link> </item> </channel> </rss>
Amacımız yukarıdaki formatda bir xml dosyasını c# ile sqldeki haber bilgilerini alarak dinamik sekilde xml dosyası oluşturmak olucakdır .
3. Adım : Yukarıdaki adımlarda önce Sql içerisinde database imizi oluşturduk daha sonra tablomuzu oluşturup içerisine verilerimizi girdik flash animasyonumuzun istedigi xml yapısını gördük . Artık bizim sqlden verilerimizi alıp içerde bunları xml e cevirip flash ile kullanmamız gerekmektedir . Şimdi biraz Code yazalım :)
C# da işlemlerimize başlamadan önce haber class ımızı yazalım ...
haberlerim.cs
public class haberlerim { public inthaberid { get; set; } public stringhaberbaslik { get; set; } public stringhaberkisayazi { get; set; } public stringhabericerik { get; set; } publichaberlerim() { } }
Yukarıda haberlerim sınıfımızı tamamladık .
Şimdi gidelim ve database imize baglanıp haberlerimizi çekelim .
databaseislemlerim.cs
tbl_haber tablomuzu açıp içerisine değerlerimizi girdik . Sql ile olan işimiz simdilik bitti . Tabiki içerik yönetimi olması icin ekle sil duzenle gibi işlemleride yapmamız gerekmektedir . Bizim amacımız sqldeki verileri okumak ve bunları xml olarak flash ın görmesini sağlamak . public class databaseislemlerim { SqlConnectioncon; SqlCommandcmd;
publicdatabaseislemlerim() { con = new SqlConnection("data source=.; initial catalog=Makalelerim; integrated security = true"); } public voidBaglantiIslemlerim() { if(con.State == System.Data.ConnectionState.Closed) { con.Open(); } else { con.Close(); } } public SqlDataReaderHaberlerimiAl() { cmd = new SqlCommand("Select * from tbl_haber", con); BaglantiIslemlerim(); returncmd.ExecuteReader(); } }
Yukarıda Sql server ımıza bağlanıp tbl_haber tablosundan verilerimizi çektik ve SqlDataReader olarak bir ust katmana aktardık . Şimdi Datayonetim sınıfı tanımlayıp aldıgımız bu ham veriyi ( SqlDataReader ) düzenleyip bir koleksionda toplayacağız .
Datayonetim.cs
public class datayonetim { databaseislemlerimislem; SqlDataReaderReader; publicdatayonetim() { islem = new databaseislemlerim(); } public List<haberlerim> HaberlerimiAl() { List<haberlerim> Haberlerim = new List<haberlerim>(); Reader = islem.HaberlerimiAl(); while(Reader.Read()) { Haberlerim.Add(new haberlerim() { haberid = Reader.GetInt32(0), haberbaslik = Reader.GetString(1), haberkisayazi = Reader.GetString(2), habericerik = Reader.GetString(3), }); } Reader.Close(); islem.BaglantiIslemlerim(); returnHaberlerim; } }
Datayonetim sınıfımızda islem.HaberAl(); metotumuzdan gelen SqlDataReader while içerisinde Read(); olana kadar verilerimizi list<haberlerim> koleksiyonuna topladık . Şimdi elimizde sql server ımızdan gelen haberlerimiz list<T> olarak elimizde var . Şimdi verilerimizi uygun xml formatında kayıt edelim .
xmlislemlerim.cs
public XElementHaberXmlAl(List<haberlerim> Haberler) { List<XElement> d = new List<XElement>(); XElementitemlar; foreach(haberlerimitem inHaberler) { itemlar = new XElement("item", new XElement("title", item.haberbaslik), new XElement("description", item.haberkisayazi), new XElement("link", "haberdetay.aspx?id=", item.haberid)); d.Add(itemlar); } XElementx = new XElement("rss", new XAttribute("version", "2.0"), new XElement("channel", new XElement("title", "Cengiz Atilla - Haberler Uygulaması"), new XElement("link", "http://www.cengizatilla.com"), new XElement("description", "Flash Xml Csharp Kardesligi | :)"), new XElement("copyright", "2009 Cengiz AT˜LLA"), new XElement("pubDate", "06 - 06 - 2009"), new XElement("language", "tr-TR"), new XElement("webMaster", "Cengiz Atilla"), d)); returnx; } Xml işlemleri sınıfımızda HaberAlXml(List<haberlerim> haberler) metotumuz parametre olarak list<haberlerim> tipinden koleksiyon istemektedir . Biz datayonetim.cs sınıfımızda bu sekilde database tarafından gelen verilerimizi düzenlemiştik . ( Verilerimiz Hazır )
HaberAlXml metotumuz içerisinde flash animasyonumuzun istediği xml şemasına uygun verilerimizi yazdık ve geriye XElement tipinde deger döndürdük.
Şimdi default.aspx sayfamızda flash animasyonumuzu koyalım ve bir adet buton atalım .
<body> <form id="form1" runat="server"> <div> </div> <table cellpadding="0" cellspacing="0" style="width: 935px"> <tr> <td> <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="898" height="29"> <param name="movie" value="ewsflow.swf"> <param name="quality" value="high"> <embed src="ewsflow.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="898" height="29"></embed></object>
</td> </tr> <tr> <td style="text-align: center"> <asp:Button ID="btn_xml" runat="server" onclick="btn_xml_Click" Text="Yeni Haberleri Yükle" Width="541px" /> </td> </tr> </table> </form> </body> Yukarıda default.aspx sayfamıza flash animasyonumuzu ve bir adet buton ekledik . Butona tıkladıgımız zaman xml dosyamız oluşucaktır .
Şimdi default.aspx.cs sınıfımıza gidelim ve son işlemimiz olan butona tıklama olayını yazalım .
default.aspx.cs
public partial class _Default: System.Web.UI.Page { xmlislemlerimxmlislem; datayonetimyonetim; protected voidPage_Load(objectsender, EventArgse) { xmlislem = new xmlislemlerim(); yonetim = new datayonetim(); } protected voidbtn_xml_Click(objectsender, EventArgse) { XElementelement = xmlislem.HaberXmlAl(yonetim.HaberlerimiAl()); stringyol = Server.MapPath(".\\"); element.Save(yol + "ar.xml"); } } Artık butona bastıgımız zaman ;
- Sql server ımıza baglanıp tbl_haber icerisindeki haberleri alıcak ve datayonetim katmanına ( SqlDataReader ) tipinden vericektir .
- Datayonetim sınıfımız verileri alıp list<haberlerim> koleksiyonunda toplayacaktır
- Xmlislemleri sınıfımız HaberXmlAl metot u ile verileri XElement olarak bize geri vericektir .
- element.save metot unu kullanarakda xml dosyamızı olusturacagız .
- Flash ımızda yeni xml dosyasını okuyacaktır :)
Örnek Kodlar icin http://www.cengizatilla.com/images/Haberservis.rar linkinden indirebilirsiniz .
Cengiz ATİLLA www.cengizatilla.com atilla@cengizatilla.com |