All World Countries Data

السلام عليكم ورحمة الله وبركاته

إخـواني الأعضـاء الكرام, كيف حال الجميع؟
أسـأل الله العظيم أن تكـونوا فى أفضل حال وأتم عافية.

فى الغالب حين تقوم بإنشـاء حساب جديد على أي موقع يتطلب منك الأمر تحديد البلد, والمدينة التابع إليها حتى يضُمها ضمن بياناتك الشخصية, وقد تكون فكرت فى نسخ البيانات حتى تستخدمها فى أي من تطبيقاتك سواءاً كانت موجهه نحو Web أو نحو Desktop وبصراحة أنا نفسي إحتجتها منذ فترة قريبة وقمت بالبحث وحصلت فعلاً على مصدر لبيانات دول العالم من الإسم, اللغـ(ا)ـة الخاصة بتلك البلد, كذلك المدن المتواجدة بها و والإختصار المُتداول لها.

وقد قمت بتجميع جميع تلك البيانات فى قاعدة بيانات من نوع SQL Server 2008و كذلك Access, وإليك قاعدة البيانات:

أما لكيفية التعامل مع قاعدة البيانات للحصول على البيانات الخاصة بالدول, فلقد قمت بعمل مشروع صغير كمثـال لكيفية الإستخدام, والمشروع مُنشأ بإستخدام بيئة Visual Studio 2010 ولذلك سأضع المشروع والأكواد أيضاً حتى يتسفيد من يعمل على 2008 مثلا.

صـورة للمثـال

الكـود كاملاً للـ Form:

رموز PHP:
'Author: Programmation(OmarNegm)
'Country: Egypt.
'E_Mail: Programmation2000@hotmail.com
'Mobile: +2 01 22 88 55 353
Imports System
Imports System.Data
Imports System.Data.OleDb
Public Class frmMain
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
lblProccess.Text = "Process..."
lblCounter.Text = "( 0 Of 0)"
Call LoadAllContries()
End Sub
Private Sub LoadAllContries()
Dim Conn As OleDbConnection = New OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;Data Source=" & Application.StartupPath & "\World.mdb")
Dim Comm As OleDbCommand = New OleDbCommand("SELECT tblCountries.country_Name FROM tblCountries ORDER BY tblCountries.country_Name;", Conn)
Try
Conn.Open()
Dim dReader As OleDbDataReader = Comm.ExecuteReader
If dReader.HasRows Then
cmbCountries.Text = ""
cmbCountries.Items.Clear()
While dReader.Read
cmbCountries.Items.Add(dReader("country_Name").ToString.Trim) 'Or dReader(0).ToString.Trim
End While
cmbCountries.Refresh()
End If
Catch ex As Exception
MessageBox.Show("An error has occurred:" & vbNewLine & "Error description:" & ex.ToString, "World Countries", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Finally
Conn.Dispose()
Comm.Dispose()
End Try
End Sub
Private Sub ShowCountryData()
Dim Conn As OleDbConnection = New OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;Data Source=" & Application.StartupPath & "\World.mdb")
Dim Comm As OleDbCommand = New OleDbCommand
Try
Conn.Open()
Comm.Connection = Conn
Comm.CommandType = CommandType.Text
Comm.CommandText = "SELECT tblCities.city_Name FROM tblCities WHERE tblCities.city_ID IN (SELECT tblCountriesCities.city_ID FROM tblCountriesCities WHERE tblCountriesCities.country_ID = (SELECT tblCountries.country_ID FROM tblCountries WHERE tblCountries.country_Name LIKE '" & cmbCountries.Text.Trim & "')) ORDER BY tblCities.city_Name;"
'''''''''''''''''''''''''''''''''''''''''''''''''''
pbLoader.Value = 0
pbLoader.Minimum = 0
pbLoader.Maximum = ReturnedRowsCount("SELECT tblCities.city_Name FROM tblCities WHERE tblCities.city_ID IN (SELECT tblCountriesCities.city_ID FROM tblCountriesCities WHERE tblCountriesCities.country_ID = (SELECT tblCountries.country_ID FROM tblCountries WHERE tblCountries.country_Name LIKE '" & cmbCountries.Text.Trim & "')) ORDER BY tblCities.city_Name;")
lblProccess.Text = "Loading Cities..."
lblProccess.Refresh()
lblCounter.Text = "( 0 Of " & pbLoader.Maximum & " )"
lblCounter.Refresh()
Dim dReader As OleDbDataReader = Comm.ExecuteReader
If dReader.HasRows Then
lstCities.Items.Clear()
While dReader.Read
pbLoader.Value += 1
pbLoader.Refresh()
lblCounter.Text = "(" & pbLoader.Value & " Of " & pbLoader.Maximum & ")"
lblCounter.Refresh()
lstCities.Items.Add(dReader("city_Name").ToString.Trim) 'Or dReader(0).ToString.Trim
End While
End If
''''''''''''''''''''''''''''''''''''''''''''''''''
If Not dReader.IsClosed Then dReader.Close()
''''''''''''''''''''''''''''''''''''''''''''''''''
Comm.CommandText = "SELECT tblLanguages.language_Name FROM tblLanguages WHERE tblLanguages.language_ID IN (SELECT tblCountriesLanguages.language_ID FROM tblCountriesLanguages WHERE tblCountriesLanguages.country_ID = (SELECT tblCountries.country_ID FROM tblCountries WHERE tblCountries.country_Name LIKE '" & cmbCountries.Text.Trim & "')) ORDER BY tblLanguages.language_Name;"
pbLoader.Value = 0
pbLoader.Minimum = 0
pbLoader.Maximum = ReturnedRowsCount("SELECT tblLanguages.language_Name FROM tblLanguages WHERE tblLanguages.language_ID IN (SELECT tblCountriesLanguages.language_ID FROM tblCountriesLanguages WHERE tblCountriesLanguages.country_ID = (SELECT tblCountries.country_ID FROM tblCountries WHERE tblCountries.country_Name LIKE '" & cmbCountries.Text.Trim & "')) ORDER BY tblLanguages.language_Name;")
lblProccess.Text = "Loading Languages..."
lblProccess.Refresh()
lblCounter.Text = "( 0 Of " & pbLoader.Maximum & " )"
lblCounter.Refresh()
dReader = Comm.ExecuteReader
If dReader.HasRows Then
lstLanguages.Items.Clear()
Do While dReader.Read
pbLoader.Value += 1
pbLoader.Refresh()
lblCounter.Text = "(" & pbLoader.Value & " Of " & pbLoader.Maximum & ")"
lblCounter.Refresh()
lstLanguages.Items.Add(dReader("language_Name").ToString.Trim) 'Or dReader(0).ToString.Trim
Loop
End If
lblProccess.Text = "Process..."
lblCounter.Text = "( 0 Of 0)"
pbLoader.Value = 0
Catch ex As Exception
MessageBox.Show("An error has occurred:" & vbNewLine & "Error description:" & ex.ToString, "World Countries", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Finally
Conn.Dispose()
Comm.Dispose()
End Try
cmbCountries.Focus()
End Sub
Private Sub RefreshData()
Call LoadAllContries()
lstCities.Items.Clear()
lstLanguages.Items.Clear()
lblProccess.Text = "Process..."
lblCounter.Text = "( 0 Of 0)"
pbLoader.Value = 0
End Sub
Private Function ReturnedRowsCount(ByVal strSQL As String) As Integer
Dim Conn As OleDbConnection = New OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;Data Source=" & Application.StartupPath & "\World.mdb")
Dim Comm As OleDbCommand = New OleDbCommand(strSQL, Conn)
Dim Result As Integer = 0
Try
Conn.Open()
Dim dReader As OleDbDataReader = Comm.ExecuteReader
If dReader.HasRows Then
While dReader.Read
Result += 1
End While
End If
Catch ex As Exception
MessageBox.Show("An error has occurred:" & vbNewLine & "Error description:" & ex.ToString, "World Countries", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Finally
Conn.Dispose()
Comm.Dispose()
End Try
Return Result
End Function
Private Sub btnShow_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShow.Click
If Not cmbCountries.Text.Trim = "" Then
Call ShowCountryData()
End If
End Sub
Private Sub btnRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRefresh.Click
Call RefreshData()
End Sub
Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click
Me.Dispose()
Me.Close()
End Sub
Private Sub cmbCountries_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbCountries.SelectedIndexChanged
If chkAutoShow.Checked Then
Call btnShow_Click(Nothing, Nothing)
End If
End Sub
Private Sub chkAutoShow_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkAutoShow.CheckedChanged
cmbCountries.Focus()
End Sub
End Class


Advertisements

2 thoughts on “All World Countries Data

  1. من الجميل أن ييكون شرحك بهذة الروعة وعلمك والبساطة لدرجة تجعل منهم فى سنى يحب قواعد البيانات ويبدأ فى تعلمها
    أعزك الله وزادك علما ونفعا للناس
    مرة أخرى لك جزيل الشكر وزدنا من علمك

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s