Asp.net MySQL veritabanı ile Kayıt Ekleme, Silme, Güncelleme, Listeleme

Daha önceki makalemizde işlediğimiz gibi MySQL veritabanımızı oluşturup, ilgili DLL'leri Visual Studio 2013 içerisine ekliyoruz. Bu şekilde MySQL veritabanı bağlantısı için ilgili kütüphaneleri projemize eklemiş oluyoruz.


Daha sonra Visual Studio 2013'te yeni açtığımız Web Site projesine bir Web Form ekliyoruz. Web Form'un ismini MyList koydum. Daha sonra Data sekmesinde bir GridView nesnesini projemize ekliyoruz. Nesnemizin adı GridView1 oluyor.

Web.Config dosyamızda bağlantı stringini tanımlıyoruz, tamamı aşağıdaki gibidir.

Web.Config Dosyamız

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <connectionStrings> 
    <add name="mysqlBaglantiStr" connectionString="Data Source=localhost;port=3306;Initial Catalog=okul;User Id=root;password="/>
  </connectionStrings>
  <system.web>
    <compilation debug="true" targetFramework="4.5">
      <assemblies>
        
        <add assembly="MySql.Data, Version=6.9.8.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/>      
        <add assembly="MySql.Web, Version=6.9.8.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/>
      </assemblies>
    </compilation>
    <httpRuntime targetFramework="4.5"/>
  </system.web>
</configuration>
 
Bu kısımda ise projemize MyList ismini vererek eklediğimiz Web Formun C# kodlarını görüyorsunuz. Veritabanlarına bağlantı için System.Data ve  MySql.Data.MySqlClient kütüphanelerini using kısmında tanımlıyoruz. BindGrid() metodu Web.Config dosyasında bağlantı parametrelerini yazdığımız MySQL veritabanına bağlantı yapıyor. Kayıt Ekleme, Silme, Güncelleme işlemlerinden sonra bu metodu çağırarak verileri veritabanından tekrar çekeceğiz.

Daha sonra Insert metodunda ise parametreli değişken kullanarak MySQL veritabanına kayıt ekliyoruz. İlk örneğimizde parametreli kullanmamıştık, parametreli kullanım daha güvenlidir. SQL Injection vb. saldırılardan verilerinizi korur.

MyList.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Configuration;
using MySql.Data.MySqlClient;
 
public partial class MyList : System.Web.UI.Page
{

//Grid bağlantısı için gerekli kodlar, Ekleme, Silme ve Güncellemeden sonra bu metodu çağıracağız
    private void BindGrid()
    {
        string constr = ConfigurationManager.ConnectionStrings["mysqlBaglantiStr"].ConnectionString;
        using (MySqlConnection con = new MySqlConnection(constr))
        {
            using (MySqlCommand cmd = new MySqlCommand("SELECT * FROM ogrenci"))
            {
                using (MySqlDataAdapter sda = new MySqlDataAdapter())
                {
                    cmd.Connection = con;
                    sda.SelectCommand = cmd;
                    using (DataTable dt = new DataTable())
                    {
                        sda.Fill(dt);
                        GridView1.DataSource = dt;
                        GridView1.DataBind();
                    }
                }
            }
        }
    }

//Kayıt Ekleme
    protected void Insert(object sender, EventArgs e)
    {
        string okulno = txtOkulNo.Text;
        string adi = txtAdi.Text;
        string soyadi = txtSoyadi.Text;
        string dogumyeri = txtDogumYeri.Text;
        string constr = ConfigurationManager.ConnectionStrings["mysqlBaglantiStr"].ConnectionString;
        using (MySqlConnection con = new MySqlConnection(constr))
        {
            using (MySqlCommand cmd = new MySqlCommand("INSERT INTO ogrenci (okulno, ADI, SOYADI, DOGUMYERI) VALUES (@okulno, @adi, @soyadi, @dogumyeri)"))
            {
                using (MySqlDataAdapter sda = new MySqlDataAdapter())
                {
                    cmd.Parameters.AddWithValue("@okulno", okulno);
                    cmd.Parameters.AddWithValue("@adi", adi);
                    cmd.Parameters.AddWithValue("@soyadi", soyadi);
                    cmd.Parameters.AddWithValue("@dogumyeri", dogumyeri);
                    cmd.Connection = con;
                    con.Open();
                    cmd.ExecuteNonQuery();
                    con.Close();
                }
            }
        }
        this.BindGrid();
    }

// Sayfa yüklenirken Grid Bağlantısını yapıyoruz.
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            this.BindGrid();
        }
    }
    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
 
    }

// Grid satırı Düzenlenirken, Edit edilirken çalışacak kodlar. GridView olaylarından seçiyoruz
    protected void OnRowEditing(object sender, GridViewEditEventArgs e)
    {
        GridView1.EditIndex = e.NewEditIndex;
        this.BindGrid();
    }
    protected void OnRowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        GridView1.EditIndex = -1;
        this.BindGrid();
    }

// GridView'de satır Güncellenirken çalışacak kodlar
    protected void OnRowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        GridViewRow row = GridView1.Rows[e.RowIndex];
        int ogrenciID = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Values[0]);
        int okulno = Convert.ToInt32((row.FindControl("txtOkulNo") as TextBox).Text);
        string adi = (row.FindControl("txtAdi") as TextBox).Text;
        string soyadi = (row.FindControl("txtSoyadi") as TextBox).Text;
        string dogumyeri = (row.FindControl("txtDogumYeri") as TextBox).Text;
 
        string constr = ConfigurationManager.ConnectionStrings["mysqlBaglantiStr"].ConnectionString;
        using (MySqlConnection con = new MySqlConnection(constr))
        {
            using (MySqlCommand cmd = new MySqlCommand("UPDATE ogrenci SET okulno=@okulno, ADI = @adi, SOYADI = @soyadi, DOGUMYERI=@dogumyeri WHERE ogrenciID = @ogrenciID"))
            {
                using (MySqlDataAdapter sda = new MySqlDataAdapter())
                {
                    cmd.Parameters.AddWithValue("@ogrenciID", ogrenciID);
                    cmd.Parameters.AddWithValue("@adi", adi);
                    cmd.Parameters.AddWithValue("@soyadi", soyadi);
                    cmd.Parameters.AddWithValue("@okulno", okulno);
                    cmd.Parameters.AddWithValue("@dogumyeri",dogumyeri );
 
                    cmd.Connection = con;
                    con.Open();
                    cmd.ExecuteNonQuery();
                    con.Close();
                }
            }
        }
        GridView1.EditIndex = -1;
        this.BindGrid();
    }
 
    protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowIndex != GridView1.EditIndex)
        {
            (e.Row.Cells[4].Controls[2] as LinkButton).Attributes["onclick"] = "return confirm('Bu kaydı silmek istediğinize emin misiniz?');";
        }
    }

// GridView'de Satır Silinirken çalışacak kodlar, GrifView Olaylarından tıklayıp dolduruyoruz
    protected void OnRowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        int ogrenciID = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Values[0]);
        string constr = ConfigurationManager.ConnectionStrings["mysqlBaglantiStr"].ConnectionString;
        using (MySqlConnection con = new MySqlConnection(constr))
        {
            using (MySqlCommand cmd = new MySqlCommand("DELETE FROM ogrenci WHERE ogrenciID = @ogrenciID"))
            {
                using (MySqlDataAdapter sda = new MySqlDataAdapter())
                {
                    cmd.Parameters.AddWithValue("@ogrenciID", ogrenciID);
                    cmd.Connection = con;
                    con.Open();
                    cmd.ExecuteNonQuery();
                    con.Close();
                }
            }
        }
        this.BindGrid();
    }
}



Şimdi sıra geldi, MyList.aspx dosyamıza yani Web Form'umuzun design dosyasına. Burada bir GridView nesnesi var. 

MyList.aspx Dosyamız

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyList.aspx.cs" Inherits="MyList" %>
 
<!DOCTYPE html>
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
        body
        {
            font-family: Arial;
            font-size: 10pt;
        }
        table
        {
            border: 1px solid #ccc;
            width: 550px;
            margin-bottom: -1px;
        }
        table th
        {
            background-color: #F7F7F7;
            color: #333;
            font-weight: bold;
        }
        table th, table td
        {
            padding: 5px;
            border-color: #ccc;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" DataKeyNames="ogrenciID"
        OnRowDataBound="OnRowDataBound" OnRowEditing="OnRowEditing" OnRowCancelingEdit="OnRowCancelingEdit"
        OnRowUpdating="OnRowUpdating" OnRowDeleting="OnRowDeleting" EmptyDataText="No records has been added." OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
        <Columns>
 
                 <asp:TemplateField HeaderText="OkulNo" ItemStyle-Width="100">
                <ItemTemplate>
                    <asp:Label ID="lblOkulNo" runat="server" Text='<%# Eval("okulno") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="txtOkulNo" runat="server" Text='<%# Eval("okulno") %>'></asp:TextBox>
                </EditItemTemplate>
            </asp:TemplateField>
 
            <asp:TemplateField HeaderText="Adı" ItemStyle-Width="100">
                <ItemTemplate>
                    <asp:Label ID="lblAdi" runat="server" Text='<%# Eval("ADI") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="txtAdi" runat="server" Text='<%# Eval("ADI") %>'></asp:TextBox>
                </EditItemTemplate>
            
            </asp:TemplateField>
                 <asp:TemplateField HeaderText="Soyadı" ItemStyle-Width="100">
                <ItemTemplate>
                    <asp:Label ID="lblSoyadi" runat="server" Text='<%# Eval("SOYADI") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="txtSoyadi" runat="server" Text='<%# Eval("SOYADI") %>'></asp:TextBox>
                </EditItemTemplate>
            </asp:TemplateField>
            
                 <asp:TemplateField HeaderText="DoğumYeri" ItemStyle-Width="100">
                <ItemTemplate>
                    <asp:Label ID="lblDogumYeri" runat="server" Text='<%# Eval("DOGUMYERI") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="txtDogumYeri" runat="server" Text='<%# Eval("DOGUMYERI") %>'></asp:TextBox>
                </EditItemTemplate>
            </asp:TemplateField>
 
       
            <asp:CommandField ButtonType="Link" ShowEditButton="true" ShowDeleteButton="true"
                ItemStyle-Width="150" />
        </Columns>
    </asp:GridView>
    <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse">
        <tr>  
            <td style="width: 150px">
                Okul No:<br />
                <asp:TextBox ID="txtOkulNo" runat="server" Width="100" />
            </td>
            <td style="width: 150px">
                Adı:<br />
                <asp:TextBox ID="txtAdi" runat="server" Width="100" />
            </td>
            <td style="width: 150px">
                Soyadı:<br />
                <asp:TextBox ID="txtSoyadi" runat="server" Width="100" />
            </td>
            <td style="width: 150px">
                Doğum Yeri:<br />
                <asp:TextBox ID="txtDogumYeri" runat="server" Width="100" />
            </td>
            <td style="width: 100px">
                <asp:Button ID="btnEkle" runat="server" Text="Ekle" OnClick="Insert" />
            </td>
        </tr>
    </table>
    </form>
</body>
</html>
 

Mutlu Kodlamalar,
Oğuzhan TAŞ
Aralık, 2015 Bookmark and Share