26 Eylül 2017 Salı
Twitter

İl - İlçe - Semt - Mahalle Veritabanları ve Uygulaması

Yazılımlarınızda gerekli olur diyerek böyle bir yazı yazayım dedim. Hem çeşitli tipteki veritabanlarını hem de ASP.NET uygulamasını bu yazıda bulabileceksiniz.

Önce çeşitli tiplerdeki veritabanlarını paylaşayım:

MySQL:

Access:

Excel:

XML:

SQL Server:


Şimdi de sizlerle uygulama örneğini paylaşayım:

Uygulamamız ASP.NET ortamında C# ile hazırlandı.

Örnek ekran görüntüleri:

Sayfa tasarımı kodları:

<div>
    <asp:DropDownList ID="ddlIller" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlIller_SelectedIndexChanged" />
    <br />
    <asp:DropDownList ID="ddlIlceler" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlIlceler_SelectedIndexChanged"
        Enabled="false" />
    <br />
    <asp:DropDownList ID="ddlSemtler" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlSemtler_SelectedIndexChanged"
        Enabled="false" />
    <br />
    <asp:DropDownList ID="ddlMahalleler" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlMahalleler_SelectedIndexChanged"
        Enabled="false" />
    <br />
    <asp:Button ID="btnBilgileriGetir" runat="server" Text="Bilgileri Getir" OnClick="btnBilgileriGetir_Click"
        Enabled="false" />
    <asp:Label ID="lblBilgiler" runat="server" Visible="false" />
</div>

Bilgilerin okunması ile ilgili kodlar:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        HelperDB helperDB = new HelperDB();
        string sql = "select IL_ID, IL_ADI from il order by IL_ADI";
        ddlIller.DataSource = helperDB.ExecuteDataTable(sql);
        ddlIller.DataTextField = "IL_ADI";
        ddlIller.DataValueField = "IL_ID";
        ddlIller.DataBind();

        ddlIller.Items.Insert(0, new ListItem("(Seçiniz)", "0"));
    }
}

protected void ddlIller_SelectedIndexChanged(object sender, EventArgs e)
{
    ddlIlceler.Items.Clear();
    ddlSemtler.Items.Clear();
    ddlMahalleler.Items.Clear();
    ddlSemtler.Enabled = false;
    ddlMahalleler.Enabled = false;
    btnBilgileriGetir.Enabled = false;
    lblBilgiler.Visible = false;

    int id = ddlIller.SelectedValue.ToInt32();

    if (id == 0)
    {
        ddlIlceler.Enabled = false;
        return;
    }

    HelperDB helperDB = new HelperDB();
    string sql = "select ILCE_ID, ILCE_ADI from ilce where IL_ID=?il order by ILCE_ADI";
    MySqlParameter p = new MySqlParameter("?il", MySqlDbType.Int32);
    p.Value = id;
    ddlIlceler.DataSource = helperDB.ExecuteDataTable(sql, p);
    ddlIlceler.DataTextField = "ILCE_ADI";
    ddlIlceler.DataValueField = "ILCE_ID";
    ddlIlceler.DataBind();

    ddlIlceler.Items.Insert(0, new ListItem("(Seçiniz)", "0"));

    ddlIlceler.Enabled = true;
}

protected void ddlIlceler_SelectedIndexChanged(object sender, EventArgs e)
{
    ddlSemtler.Items.Clear();
    ddlMahalleler.Items.Clear();
    ddlMahalleler.Enabled = false;
    btnBilgileriGetir.Enabled = false;
    lblBilgiler.Visible = false;

    int id = ddlIlceler.SelectedValue.ToInt32();

    if (id == 0)
    {
        ddlSemtler.Enabled = false;
        return;
    }

    HelperDB helperDB = new HelperDB();
    string sql = "select SEMT_ID, SEMT_ADI from semt where ILCE_ID=?ilce order by SEMT_ADI";
    MySqlParameter p = new MySqlParameter("?ilce", MySqlDbType.Int32);
    p.Value = id;
    ddlSemtler.DataSource = helperDB.ExecuteDataTable(sql, p);
    ddlSemtler.DataTextField = "SEMT_ADI";
    ddlSemtler.DataValueField = "SEMT_ID";
    ddlSemtler.DataBind();

    ddlSemtler.Items.Insert(0, new ListItem("(Seçiniz)", "0"));

    ddlSemtler.Enabled = true;
}

protected void ddlSemtler_SelectedIndexChanged(object sender, EventArgs e)
{
    ddlMahalleler.Items.Clear();
    btnBilgileriGetir.Enabled = false;
    lblBilgiler.Visible = false;

    int id = ddlSemtler.SelectedValue.ToInt32();

    if (id == 0)
    {
        ddlMahalleler.Enabled = false;
        return;
    }

    HelperDB helperDB = new HelperDB();
    string sql = "select MAH_ID, MAHALLE_ADI from mahalle_koy where SEMT_ID=?semt order by MAHALLE_ADI";
    MySqlParameter p = new MySqlParameter("?semt", MySqlDbType.Int32);
    p.Value = id;
    ddlMahalleler.DataSource = helperDB.ExecuteDataTable(sql, p);
    ddlMahalleler.DataTextField = "MAHALLE_ADI";
    ddlMahalleler.DataValueField = "MAH_ID";
    ddlMahalleler.DataBind();

    ddlMahalleler.Items.Insert(0, new ListItem("(Seçiniz)", "0"));

    ddlMahalleler.Enabled = true;
}

protected void ddlMahalleler_SelectedIndexChanged(object sender, EventArgs e)
{
    lblBilgiler.Visible = false;

    int id = ddlSemtler.SelectedValue.ToInt32();

    if (id == 0)
    {
        btnBilgileriGetir.Enabled = false;
        return;
    }
    btnBilgileriGetir.Enabled = true;
}

protected void btnBilgileriGetir_Click(object sender, EventArgs e)
{
    lblBilgiler.Text = string.Format(
@"
<br/>
<br/>
İl: {0} - {1}
<br/>
İlçe: {2} - {3}
<br/>
Semt: {4} - {5}
<br/>
Mahalle - Köy: {6} - {7}
",
ddlIller.SelectedValue, ddlIller.SelectedItem.Text,
ddlIlceler.SelectedValue, ddlIlceler.SelectedItem.Text,
ddlSemtler.SelectedValue, ddlSemtler.SelectedItem.Text,
ddlMahalleler.SelectedValue, ddlMahalleler.SelectedItem.Text);

    lblBilgiler.Visible = true;
}

Programda, HelperDB, birkaç genişletme metodu, ve MySQL dll leri kullanılmıştır.

Program kodlarını buradan indirebilirsiniz.

Notlar:

  1. Yukarıdaki kodlar Default.aspx'teki kodlardır. Ayrıca aynı örneğin UpdatePanel kullanılarak gerçekleştirilmiş hali de Default2.aspx'tedir.
  2. MySQL ConnectionString bilgisini web.config ten değiştirebilirsiniz.
  3. Örnek MySQL DB'si ni de örnek uygulama klasöründe bulabilirsiniz.

Herkese kolay gelsin.

Değerlendirme

Yazım dilinin sadeliği ve anlaşılabilirliği Puan: 3,47 (10 oy)
Yazıdaki kodların kalitesi Puan: 3,40 (10 oy)
İhtiyaca cevap verme Puan: 3,35 (10 oy)
Tavsiye edilebilirlik Puan: 3,40 (10 oy)
Genel değerlendirme Puan: 3,38 (10 oy)
Puanlamalar 5 üzerindendir.
  • Site Yorumları
  • Facebook Yorumları Facebook Yorumları
Yeni yorum yaz Toplam: 22, Onay bekleyen: 0.
  1. Turabi

    Merhaba Devrim Bey, Öncelikle elinize sağlık. Faydalı bir çalışma. Bu veriler ne kadar güncel acaba, TUIK veri tabanından mı çekiyor? Teşekkürler,

  2. Mustafa Zahid Efe

    Tesekkur ederim veritabanlari guzelmis :)

  3. Bora Şenyiğit

    Bugün 23 02 2015 itibariyle kesinlikle güncel liste Çok teşekkürler

    • murat2@hotmail.com

      Merhaba server name ve authentication login ID ve password soruyor SQL server bu kısımda nasıl bir yol izlemeliyim

  4. Mustafa KAYALI

    Devrim hocam ilaç gibi adamsın. İyi ki varsın.

  5. fatih

    Sql scr_iptleri paylaşmanız çok faydalı olmuş. Ellerinize sağlık.