Loading

28 Temmuz 2010

Transport Level Error

"A transport-level error has occurred when sending the request to the server. (provider: Named Pipes Provider, error: 0 - An unexpected network error occurred.)"

Böyle bir hata alıyorsanız Management Studio SQL Server ile olan bağlantısını kaybetmiş demektir. File'dan tekrar bağlan dediğinizde sorunun çözüldüğünü göreceksiniz.
İyi çalışmalar..

09 Şubat 2010

Datalist Kontrolü

Bir makale sitesinde yazıların başlıklarının altalta dizildiğini düşünün ve başlığa tıklandığında o yazıya gitmek istiyoruz diyelim. Bunu datalist ile yapmak istersek yazılacak kod buna cok benzerdir. Yalnızca sayfa ismi yada datasource farklılık gösterebilir.

Datalist'i sayfamıza eklediğimizde "Edit Item Template" kısmında nasıl görünmesini istiyorsak o şekilde dizayn edebiliriz. Mesela ben içine bir tablo attım, tablo içine de bir adet HyperLink attım. Datasource bağlandığı anda ki bu kod tarafında da bağlanabilir, "Baslik" ve "ID" kısmımlarını Eval komutu ile çekiyor.
<asp:DataList ID="DataList1" runat="server" Width="800px" DataSourceID="AccessDataSource2">
     <ItemTemplate>
           <table >
              <tr>
                 <td>
                    <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%#"Post.aspx?ID="+ Eval("ID") %>'
                         Text='<%# Eval("Baslik") %>'></asp:HyperLink>
                 </td>
              </tr>
           </table>            
     </ItemTemplate>
<ItemStyle BackColor="white" />
</asp:DataList>

<asp:AccessDataSource ID="AccessDataSource2" runat="server"
    DataFile="~/App_Data/Forum.mdb"
    SelectCommand="SELECT * FROM [Konular] ORDER BY [Tarih] DESC">
</asp:AccessDataSource>

Daha fazla kayıt olduğu durumlarda "AlternatingItemTemplate" de kullanılabilir. Mesela bir satırın mavi bir satırın beyaz olmasını isteyebiliriz. Aşağıdaki bölümü datalist içine eklememiz yeterli olacaktır bunun için.
<AlternatingItemTemplate>
     <table >
        <tr>
           <td>
              <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%#"Post.aspx?ID="+ Eval("ID") %>'
                  Text='<%# Eval("Baslik") %>'></asp:HyperLink>
           </td>
        </tr>
     </table>                       
</AlternatingItemTemplate>
<AlternatingItemStyle BackColor="blue" />

Datalistimize Başlık eklemek istersek eğer "HeaderTemplate" tam işimize yarayacak bölüm. Aynı şekilde "FooterTemplate" de mevcut.
<HeaderTemplate> Başlık </HeaderTemplate>

<FooterTemplate> Bu da Alt Kısım </FooterTemplate>


05 Şubat 2010

Error 28 - SQL Server doesn't Support Requested Protocol

Bugün sql server'a bağlanmaya çalışırken aldığım ve saatlerce nedenini bulamadığım bir hata :)
Tabi ki de şu an çözümünü buldum ve paylaşmak istedim.
Öncelikle "SQL Server Configuration Manager" ı çalıştırıyoruz. Protocols kısmından TCP/IP yi "enabled" yapıyoruz. Ki bu ayar ilk yüklendiğinde "disabled" olarak geliyor.
(Başka bir sorun olmuştu da bugun tekrar yüklemek zorunda kaldım :) )
Ardından ayarların aktif olması için Windows servislerden SQLServer servisini yeniden başlatıyoruz. Artık sorunsuzca bağlanabilirsiniz :)
İyi çalışmalar..

24 Ocak 2010

Tasarım Desenleri : Abstract Factory

Bu desen Factory Method desenine çok benzer. Amaç yine aynıdır. Sistemden nesnelerin oluşma işini soyutlar. Abstract Factory benzer özellikleri olan nesne fabrikalarını gruplar. İçinde birden fazla fabrika vardır.
Örneğimizde birden fazla türde database'de kaydetme ve sorgulama işlemlerini gruplamak için soyut fabrikayı kullanıyoruz :
Kısaca kodlarına da bakalım :
Önce ürünlerimizin gerçek ve soyut sınıflarını yazıyoruz.
Kaydetme.cs
interface Kaydetme
{
void kaydet(string cumle);
}

SQLBaglanti.cs
class SQLBaglanti:Kaydetme
{
public void kaydet(string cumle)
{
MessageBox.Show("sql'e kaydedildi");
}

}

AccessBaglanti.cs
class AccessBaglanti:Kaydetme
{
public void kaydet(string cumle)
{
MessageBox.Show("access'e kaydedildi");
}

}

Komut.cs
interface Komut
{
void sorgula(string query);
}

SQLSorgu.cs
class SQLSorgu:Komut
{
public void sorgula(string query)
{
MessageBox.Show("sql'de sorgu oluştu");
}

}

AccessSorgu.cs
class AccessSorgu:Komut
{
public void sorgula(string query)
{
MessageBox.Show("access'de sorgu oluştu");
}

}

BaglantiFabrikası.cs
interface BaglantiFabrikası
{
Kaydetme kaydetmeİşiYap();
Komut sorgulamaİşiYap();
}

SQLFabrikası.cs
class SQLFabrikası : BaglantiFabrikası
{
public Kaydetme kaydetmeİşiYap()
{
return new SQLBaglanti();
}

public Komut sorgulamaİşiYap()
{
return new SQLSorgu();
}

}

AccessFabrikası.cs
class AccessFabrikası:BaglantiFabrikası
{
public Kaydetme kaydetmeİşiYap()
{
return new AccessBaglanti();
}

public Komut sorgulamaİşiYap()
{
return new AccessSorgu();
}

}

Fabrika.cs
class Fabrika
{
public BaglantiFabrikası fabrikaAl(string tip)
{
if (tip == "mssql")
{
return new SQLFabrikası();
}
else if (tip == "access")
{
return new AccessFabrikası();
}

return new SQLFabrikası();//if'lere girmez ise bu olacak

}

}


ve kullanmak istediğimiz yer :

BaglantiFabrikası fab = new Fabrika().fabrikaAl("mssql");
Komut cmd = fab.sorgulamaİşiYap();
Kaydetme cn = fab.kaydetmeİşiYap();

cmd.sorgula("");
cn.kaydet("");


(NOT: UML, Tasarım Desenleri sitesinden alınıp düzenlenmiştir.)