SQL Stored Procedure Oluşturma

Bu yazımızda web projeleri ve sql projelerimizde oldukça işimize yarayan Store Procedure’lerden kısaca bahsedeceğiz.Öncelikle store procedure kullanma nedenlerimizi sırasıyla belirtelim ve ardından çok kolay bir örnek yapalım.

Faydaları

  • Açık Sql cümleciklerine nazaran daha güvenlidir(Sql Injection)
  • Sql Server Tabanlı çalıştıkları için daha hızlı sonuç döndürürler.
  • Düzenli kod yazımı , aynı kodu tekrar tekrar yazmamızı önler
  • Query lerinize otomatik parametrelendirme getirir vs.



Öncelikle create proc anahtar cümleciğimizi yazarak işe başlıyoruz ardından Proceduremüzün ismini veriyoruz as ile devam ederek istedğimiz sql sorugusunu yazıyoruz.Bu kadar ilk procedure hazır bile;) artık Procedure ismi ile oluşturduğumuz bu procedure’ü heryerde kullanabiliriz.

Create proc sp_KategorileriGetir
as
select * from Categories

Gelin birde parametre alan bir procedure yazalım ,tek farkı iki parantez arasında parametreleri ve tiplerini belirtiyoruz.

create proc sp_KategorileriGetirById
(
@id int
)
as
select * from Categories where CategoryID=@id

Yukarıdaki Procedure’ü çalıştıralım

Sonuç:
procedure

SQL Begin-Rollback-Commit Tran İşlemleri

Sql üzerinde işlem yaparken bazı durumlarda temkinli davranmakta yarar vardır , yanlış bir update bazen geri dönüşü zor durumlarda bırakabilir bizi , bu gibi durumlarda sql bize tran işlemleriyle yardımcı oluyor gelin kodlar üzerinde görelim bu işlemleri.

Öncelikle bir update sorgusu yazalım,gördüğünüz gibi sorgunun başına begin tran ifadesi koyuyoruz artık bu işlem beklemede herhangi bir yanlışlık görmüyorsak bu işlemi onaylayacağız

Begin Tran

Update Employees set LastName='Davolioo' where EmployeeID=1

Onaylama işlemini Commit Tran komutu ile gerçekleştiriyoruz.

Commit Tran

Fakat yanlış birşeyler yaptık ve komutu onaylamak istemiyoruz bu durumda Rollback Tran komutu ile işlemi geri alabiliriz

Rollback Tran

NOT:Rollback tran işlemi Commit tran işleminden önce olmalıdır.Yani commit tran yapılan sorgu artık onaylanmıştır ve geri dönüştürülemez.

ASP.NET Update Panel Kullanımı

Bu yazıda update panelin kullanımına bir örnek vereceğiz.Öncellikle sayfamıza ScriptManager ve UpdatePanel ekleyelim.

UpdatePanel

UpdatePanel

UpdatePanel içinde content template oluşturalım ve içine birer panel atalım ve update panelin dışına bir adet button atalım.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="UpdatePanel.Default_aspx" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    <div>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                  <asp:Panel ID="Panel1" runat="server">

                      <p>Panel 1 Açık</p>
                  </asp:Panel>
                   <asp:Panel ID="Panel2" runat="server">

                    <p>Panel 2 Açık</p>
                   </asp:Panel>
            </ContentTemplate>

            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
            </Triggers>
        </asp:UpdatePanel>

        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
        
    </div>
    </form>
</body>
</html>

Yukarıdaki gördüğünüz trigger tag’i hangi kontrolün update paneli tetikleyeceğini belirliyor.Aşağıda gördüğünz gibi collection kısmına girip hangi kontrolün hangi olayında updatepanel’in tetiklneceğini belirtebiliyoruz.

trigger

trigger

trigger

Son olarak code kısmında button’un click event’inde yapacaklarımızı yazalım

public partial class Default_aspx : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Panel2.Visible = false;
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            if (Panel1.Visible == false)
            {
                Panel1.Visible = true;
            }
            else
            {
                Panel1.Visible =false;

                Panel2.Visible = true;
            }
        }
    }

Bu kod ile butona her tıkladığımızda diğer panel açılacak ve sayfa postback olmayacak , son olarak isterseniz buton kontrolünü panelin içine de atabilirsiniz böylelikle trigger kullanmadan ChildrensAsTrigger özelliğinin True olması nedeniyle updatePanel otomatik olarak tetiklenecektir.