C#-da Telefon Kitabçasının Yaradılması
Salam əziz dostlar.
Bu məqaləmdə çalışacağam sizlərə Telefon Kitabçası hazırlanmasını açıq şəkildə izah edim. İlk əvvəl bizə məlumatları saxlamaq üçün verilənlər bazası lazım olacaq bunun üçün MS SQL, My Sql, Access və. s istifadə etmək olar mən bu məqaləmdə MS SQL verilənlər bazasından istifadə edəcəyəm.
İlk əvvəl biz verilənlər bazasında hansı məlumatları hansı tipdə yadda saxlamalıyıq onları müəyyən etməliyik. Mən bu programımda çox sadə bir şəkildə bunu izah edəcəyəm siz istəsəniz programın imkanların genişləndirib dahada təkmilləşdirə bilərsiniz. Bildiyimiz kimi telefon kitabçasında hər bir şəxsin Adı, Soyadı, Mobil telefonu, Ev Telefonu ,İş telefonu,E-mail ünvanı və. s kimi məlumatlar saxlanılır. İlk əvvəl biz MS SQL bazasında bu verilənləri saxlamaq üçün cədvəl yaratmalıyıq.
Bu proqramın yazılmasında lazım olan proqramlar aşağıdakılardır.
Microsoft SQL Server 2008 R2.
Yükləmə keçidi: http://www.microsoft.com/sqlserver/2008/tr/tr/R2Downloads.aspx
Microsoft SQL Server 2008 Management Studio Express
Yükləmə keçidi: http://www.microsoft.com/download/en/details.aspx?id=7593
Microsoft Visual Studio 2010 Ultimate
Yükləmə keçidi: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=12752
Yuxarıda göstərilən proqramlar kompüterinizə yüklənmiş olmalıdır.
İlk əvvəl Microsoft SQL Server 2008 Management Studio Expressaçırıq və Microsoft SQL Servereqoşuluruq.
Şəkil. 1
Serverin adı (Server name ) bölməsinə serverin adını seçib Connect edirsiniz. (Şəkil. 1)
Şəkil. 2
Şəkil. 3
Burdan New Database seçib yeni verilənlər bazası yaradırıq. (Şəkil. 2). Database name phoneBook daxil edin və sonda OK əmrini icra edin. (Şəkil. 3)
Şəkil. 4
Şəkil. 5
Şəkil. 6
Şəkil. 7
İndi phoneBook bazası içərisində New Table əmrini icra edib lazım olan cədvəli (Şəkil. 4) və məlumatları saxlamaq üçün lazım olan sütunları əlavə edək (Şəkil. 5). Ctrl + S edirik bu zaman bizdən cədvəlin adın soruşacaq phoneBook daxil edib ok əmrini icra edirik (Şəkil. 6). Sonda isə Şəkil. 7 olan cədvəli və sütunlarının yarandığını görürük. Sql server ilə işimiz hələlik bu qədərdir.
Visual Studio 2010 ilə File –>New ->Project ->Visual C#->Windows ->Windows Forms Application se çib yeni bir proyekt yaradırıq. Name istədiyiniz adı yazıb yarada bilərsiniz mən phoneBook adi ilə yaradacam.
Şəkil. 8
Yuxarıda (Şəkil. 8 ) göstərilən kimi bir form dizayn edirsiniz. Forma bir ToolStrip ve birde DataGridView elave edirik.
Şəkil. 9
Bundan sonra DataGridView üzərində sağ düyməni vuraraq Edit Columns daxil oluruq. (Şəkil. 9)
Şəkil. 10
Sonra Add daxil oluruq və burdan bizə lazım olan sütunları əlavə etməyə başlayırıq. Name bölməsinə programımızda istifadə edəcəyimiz adı daxil edirik və Header text bölməsinə isə DataGridView-da görünəcək adı daxil edirik. Bunun fərqi nədir biz əgər bazamızda adı adında sütun əlavə etmişiksə biz ekrana onu adi kimi yox Adı kimi yazmalıyıq onun üçün Header text bölməsindən istifadə edirik. (Şəkil. 10)
Şəkil. 11
Bu bölmələri əlave edirik. Burda yalniz DataGridView-da görmək istəmədiyimiz bir bölmə var oda id bunun üçün id seçib Visible falseedirik.
Şəkil. 12
İndi isə bazadakı məlumatlar ilə DataGirdView-daki məlumatları əlaqələndirməliyik. Bunun üçün DataPropertyName istifadə edirik. Bütün bölmələri eyni qaydada doldururuq. Qeyd: Bazadakı adi ilə DataPropertyName ad eyni olmalıdır. id => id, Adı=> adi, Soyadı => soyad, Mobil Nömrə => mobil_nomre ,Ev Nömrəsi => ev_nomre, İş Nömrəsi => is_nomre, E-mail => email. Bunları etdikdən sonra Ok edirik. (Şəkil. 12)
Şəkil. 13
Form-un son görünüşü şəkildə göstərilən formada olur. (Şəkil. 13)
İndi isə proqramın əasas hissəsi olan kod hissəsinə yazmağa başlayaq ilk əvvəl burdakı komponentlərin adlarını təyin edək. Yeni (phoneYeni), Redaktə (phoneRedakte), Sil (phoneSil), (phoneAxtarisBox), Axtar (phoneAxtar), DataGridView (phoneGridView).
İlk əvvəl phoneGridView -ya bazada olan məlumatların necə əlavə olunmasına baxaq bunun kodu aşağıdakı şəkildədir.
formEsas. cs
using System;
using System. Collections. Generic;
using System. ComponentModel;
using System. Data;
using System. Drawing;
using System. Linq;
using System. Text;
using System. Windows. Forms;
using System. Data. SqlClient;
namespace phoneBook
{
public partial class formEsas : Form
{
public formEsas()
{
InitializeComponent();
}
//Bazaya qoşulma.
public SqlConnection bazayaQosul = new SqlConnection(@”Data Source=NOTEBOOK\SQLEXPRESS;”+
“Initial Catalog=phoneBook;Integrated Security=True;”);
//Sql sorğuların icara olunması.
public SqlCommand sqlSorguCommand= new SqlCommand();
//Sorğuların yazılması üçün yazı tipində sqlSorğu.
public string sqlSorgu;
public int redakteId=0;
//phoneGridView-ya məlumatların çağırılması funksiyası
private void loadPhoneGrid()
{
try
{
//phoneBook cədvəlində olan məlumatların seçilməsi üçün sorğu
sqlSorgu = “select * from phoneBook”;
SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlSorgu, bazayaQosul);
//Bazadan seçilən məlumatların dataTable əlavə olunmsı
DataTable dataTable = new DataTable();
dataAdapter. Fill(dataTable);
//dataTable cədvəlində olan məlumatların phoneGridView ilə əlaqələndirilməsi
phoneGridView. DataSource = dataTable;
}
catch (SqlException sehv)
{
MessageBox. Show(sehv. Message);
}
}
private void Form1_Load(object sender, EventArgs e)
{
//Baza ilə əlaqənin açılması.
bazayaQosul. Open();
//phoneGridView-ya məlumatların doldurulması
loadPhoneGrid();
}
}
}
Program. csfaylında bir neçə dəyişikliklər edək.
Program. cs
using System;
using System. Collections. Generic;
using System. Linq;
using System. Windows. Forms;
namespace phoneBook
{
static class Program
{
///<summary>
/// The main entry point for the application.
///</summary>
//Bütün formlarda istifadə etmək üçün public esas yaradırıq.
public static formEsas esas;
/* •————————————————————————————————————————————————————————————————————————————•
| Bunun əsas məqsədi ondan ibarətdir ki digər forumlardada formEsas-da olan |
| komponenetlərdən rahatlıqla istifadə edə bilək. |
•———————————————————————————————————————————————————————————————————————————•*/
[STAThread]
static void Main()
{
Application. EnableVisualStyles();
Application. SetCompatibleTextRenderingDefault(false);
esas = new formEsas();
Application. Run(esas);
}
}
}
Indi isə Yeni telefon nömrəsinin əlavə olunması üçün yeni form elave edib dizayn edək. Yeni form əlavə etmək üçün Project ->Add Windows Forms daxil olub form adını (formYeni) daxil edib ok edirik. formYeni aşağıdakı şəkildə dizayn edirik. (Şəkil. 14)
Şəkil. 14
İndi bizə lazımdır ki esasForm-da Yeni üzərində vuran zaman bu formu bizə açsın bunun üçün Yeni onClickevent-inə aşağıdakı kodları yazırıq.
formEsas. cs
private void phoneYeni_Click(object sender, EventArgs e)
{
//Yeni üzərində vuran zaman formYeni formunun açılması
formYeni elaveEtme = new formYeni();
elaveEtme. ShowDialog();
}
Bunu yazdıqdan sonra programı işə salırıq. Yeni açan zaman bu şəkildə açılacaq.
Şəkil. 16
Biz proqramımızda Yeni və Redaktə olunmanı eyni form-da yerinə yetirəcəyik. Bunun üçün ilk əvvəl Redaktə və Sil Enabledfalse edirik. Bunların Enable grid üzərində vuran zaman trueedəcəyik. (Şəkil. 17)
Şəkil. 17
phoneGridView-nun Properties-inə daxil oluruq ReadOnly Trueedirik və SelectionMode FullRowSelect edirik. (Şəkil. 18)
Şəkil. 18
Şəkil. 19
phoneGridView-nun CellClick eventin-ə aşağıdakı kodlar yazırıq. (Şəkil. 19)
formEsas. cs
private void phoneGridView_CellClick_1(object sender,DataGridViewCellEventArgs e)
{
//Burda yoxlayırıq əgər phoneGridView-da hər hansı bir məlumat varsa.
if (phoneGridView. RowCount > 0)
{
//Sil ve Redaktə eti aktivləşdiririk
phoneSil. Enabled = true;
phoneRedakte. Enabled = true;
}
}
Şəkil. 20
Burda məlumatları daxil etdikdən və Əlavə et Bağla vurduqda phoneGridView-da baxan zaman daxil etdiklərimizi görə bilməyəcəyik bunun üçün Yeni vuran zaman yazdığımız loadPhoneGrid() Əlavə edirik.
formEsas. cs
private void phoneYeni_Click(object sender, EventArgs e)
{
//Yeni üzərində vuran zaman formYeni formunun açılması
formYeni elaveEtme = new formYeni();
elaveEtme. ShowDialog();
//Əlavə etmə formu bağlanan zaman phoneGridView-unu yenidən doldurulur.
loadPhoneGrid();
}
Əlavə etbutton-una aşağıdakı kodları yazırıq.
formYeni. cs
private void btnElaveEt_Click(object sender, EventArgs e)
{
//Bu hissədə məlumatların daxil edilib edilmədiyini yoxlayaırıq.
if (textAdi. Text == “”)
{
MessageBox. Show(“Zəhmət olmasa adı daxil edin”,“Xəta”,MessageBoxButtons. OK,MessageBoxIcon. Information);
}
else if (textSoyadi. Text == “”)
{
MessageBox. Show(“Zəhmət olmasa soyadı daxil edin. “,“Xəta”,MessageBoxButtons. OK,MessageBoxIcon. Information);
}
//Bu hissədə Mobil, İs ,Ev telefonu və E-mail ünvanından biri daxil edilib edilmədiyin yoxlayırıq
else if (textMobilNomre. Text == “” && textIsNomre. Text == “” && textEvNomresi. Text == “” && textEmail. Text == “”)
{
MessageBox. Show(“Zəhmət olmasa bir nömrə və ya email adresini daxil edin. “, “Xəta”, MessageBoxButtons. OK, MessageBoxIcon. Information);
}
else
{
try
{
//Məlumatların bazaya yazılması
string sqlSorgu = “insert into phoneBook (adi,soyadi,mobil_nomre,ev_nomre,is_nomre,email) values (“” + textAdi. Text + “”,””+textSoyadi. Text+“”,””+textMobilNomre. Text+“”,””+textEvNomresi. Text+“”,””+textIsNomre. Text+“”,””+textEmail. Text+“”)”;
Program. esas. sqlSorguCommand. CommandText = sqlSorgu;
Program. esas. sqlSorguCommand. Connection = Program. esas. bazayaQosul;
Program. esas. sqlSorguCommand. ExecuteNonQuery();
//Məlumatlar bazaya yazıldıqdan sonra textBoxları içərsində olan yazıları təmizləyirik
textAdi. Clear();
textSoyadi. Clear();
textMobilNomre. Clear();
textEvNomresi. Clear();
textIsNomre. Clear();
textEmail. Clear();
}
catch (SqlException sehv)
{
//Sql ilə bağlı baş verən səhvləri programın işini dayandırmadan ekrana çıxarırıq
MessageBox. Show(sehv. Message);
}
}
}
Əlavə et & Bağla- ya isə aşağıdakı kodları yazırıq.
formYeni. cs
private void btnElaveEtBagla_Click(object sender, EventArgs e)
{
//Bu hissədə məlumatların daxil edilib edilmədiyini yoxlayaırıq.
if (textAdi. Text == “”)
{
MessageBox. Show(“Zəhmət olmasa adı daxil edin”, “Xəta”, MessageBoxButtons. OK, MessageBoxIcon. Information);
}
else if (textSoyadi. Text == “”)
{
MessageBox. Show(“Zəhmət olmasa soyadı daxil edin. “, “Xəta”, MessageBoxButtons. OK, MessageBoxIcon. Information);
}
//Bu hissədə Mobil, İs ,Ev telefonu və E-mail ünvanından biri daxil edilib edilmədiyin yoxlayırıq
else if (textMobilNomre. Text == “” && textIsNomre. Text == “” && textEvNomresi. Text == “” && textEmail. Text == “”)
{
MessageBox. Show(“Zəhmət olmasa bir nömrə və ya email adresini daxil edin. “, “Xəta”, MessageBoxButtons. OK, MessageBoxIcon. Information);
}
else
{
try
{
//Məlumatların bazaya yazılması
string sqlSorgu = “insert into phoneBook (adi,soyadi,mobil_nomre,ev_nomre,is_nomre,email) values (“” + textAdi. Text + “”,”” + textSoyadi. Text + “”,”” + textMobilNomre. Text + “”,”” + textEvNomresi. Text + “”,”” + textIsNomre. Text + “”,”” + textEmail. Text + “”)”;
Program. esas. sqlSorguCommand. CommandText = sqlSorgu;
Program. esas. sqlSorguCommand. Connection = Program. esas. bazayaQosul;
Program. esas. sqlSorguCommand. ExecuteNonQuery();
//Sorğu icara olunduqdan sonra Formu bağlayırıq.
this. Close();
}
catch (SqlException sehv)
{
//Sql ilə bağlı baş verən səhvləri programın işini dayandırmadan ekrana çıxarırıq
MessageBox. Show(sehv. Message);
}
}
}
Redaktənin Click event-inə aşağıdakı kodları yazırıq.
formEsas. cs
public int redakteId=0;
private void phoneRedakte_Click(object sender, EventArgs e)
{
//phoneGridView seçilən sətrin id götürmək.
redakteId=Int32. Parse(phoneGridView[“id”, phoneGridView. CurrentCell. RowIndex]. Value. ToString());
//Redaktə etmək üçün formYeni formunun açılması
formYeni elaveEtme = new formYeni();
elaveEtme. ShowDialog();
//Redaktə formu bağlanan zaman phoneGridView-unu yenidən doldurulur.
loadPhoneGrid();
}
İndi isə formYeni Load eventin-də düzəlişlər edək.
formYeni. cs
private void formYeni_Load(object sender, EventArgs e)
{
//Burda yoxlayırıq əgər Redaktə edilmə açılıbsa
if (Program. esas. redakteId > 0)
{
//Əlavə et buttonun görünməz edirik
btnElaveEt. Visible = false;
// Əlavə et Bağla adın dəyişib yenilə edirik.
btnElaveEtBagla. Text = “Yenilə”;
//Forumun başlığın dəyişib Redaktə yazırıq.
this. Text = “Redaktə”;
}
}
Nəticə aşağıdakı şəkildəki kimi olacaq. (Şəkil. 21)
Şəkil. 21
Əlavə et & Bağla –nın kodlarını aşağıdakı kimi dəyişiklik edirik. Bunun məqsədi odur ki əgər redaktə olunmaya vurulubsa onda Program. esas. redakteIdəgər 0-a bərabərdisə onda əlavə etmə icara edəcək əgər 0 deyilsə onda yenilənmə əmri icra edir.
formYeni. cs
private void btnElaveEtBagla_Click(object sender, EventArgs e)
{
//Bu hissədə məlumatların daxil edilib edilmədiyini yoxlayaırıq.
if (textAdi. Text == “”)
{
MessageBox. Show(“Zəhmət olmasa adı daxil edin”, “Xəta”, MessageBoxButtons. OK, MessageBoxIcon. Information);
}
else if (textSoyadi. Text == “”)
{
MessageBox. Show(“Zəhmət olmasa soyadı daxil edin. “, “Xəta”, MessageBoxButtons. OK, MessageBoxIcon. Information);
}
//Bu hissədə Mobil, İs ,Ev telefonu və E-mail ünvanından biri daxil edilib edilmədiyin yoxlayırıq
else if (textMobilNomre. Text == “” && textIsNomre. Text == “” && textEvNomresi. Text == “” && textEmail. Text == “”)
{
MessageBox. Show(“Zəhmət olmasa bir nömrə və ya email adresini daxil edin. “, “Xəta”, MessageBoxButtons. OK, MessageBoxIcon. Information);
}
else
{
try
{
string sqlSorgu =“”;
//Əlavə etmə
if (Program. esas. redakteId == 0)
{
//Məlumatların bazaya yazılması
sqlSorgu = “insert into phoneBook (adi,soyadi,mobil_nomre,ev_nomre,is_nomre,email) values (“” + textAdi. Text + “”,”” + textSoyadi. Text + “”,”” + textMobilNomre. Text + “”,”” + textEvNomresi. Text + “”,”” + textIsNomre. Text + “”,”” + textEmail. Text + “”)”;
}
else
{
//Məlumatların yenilənməsi.
sqlSorgu = “update phoneBook set “ +
“adi=”” + textAdi. Text + “”,” +
“soyadi=”” + textSoyadi. Text + “”,” +
“mobil_nomre=”” + textMobilNomre. Text + “”,” +
“ev_nomre=”” + textEvNomresi. Text + “”,” +
“is_nomre=”” + textIsNomre. Text + “”,” +
“email=”” + textEmail. Text + “” where id=” + Program. esas. redakteId;
}
//Sorğuların icara olunması.
Program. esas. sqlSorguCommand. CommandText = sqlSorgu;
Program. esas. sqlSorguCommand. Connection = Program. esas. bazayaQosul;
Program. esas. sqlSorguCommand. ExecuteNonQuery();
//Sorğu icara olunduqdan sonra Formu bağlayırıq.
this. Close();
}
catch (SqlException sehv)
{
//Sql ilə bağlı baş verən səhvləri programın işini dayandırmadan ekrana çıxarırıq
MessageBox. Show(sehv. Message);
}
}
}
Silə isə aşağıdakı kodları yazırıq.
formEsas. cs
private void phoneSil_Click(object sender, EventArgs e)
{
//Ekrana sorğu pəncərəsi açıb yoxlayırı.
DialogResult cavabYesNo= MessageBox. Show(“Bunu silmək istəyirsən?”, “Məlumat”, MessageBoxButtons. YesNo, MessageBoxIcon. Question);
//Əgər Bəli(Yes) cavabı verilibsə onda silməni icra edirik
if (DialogResult. Yes == cavabYesNo)
{
// phoneGridView-dən id götürüb ona uyğun sorğumuzu yazırıq.
sqlSorgu = “delete from phoneBook where id=” + phoneGridView[“id”, phoneGridView. CurrentCell. RowIndex]. Value. ToString();
//Sorğunu icra edirk.
Program. esas. sqlSorguCommand. CommandText = sqlSorgu;
Program. esas. sqlSorguCommand. Connection = Program. esas. bazayaQosul;
Program. esas. sqlSorguCommand. ExecuteNonQuery();
}
}
Şəkil. 22
Axtar-a aşağıdakı kodları yazırıq. Burda where şərtini like ilə yoxlayırıq.
formEsas. cs
private void phoneAxtar_Click(object sender, EventArgs e)
{
try
{
//phoneBook cədvəlində olan məlumatların seçilməsi üçün sorğu.
sqlSorgu = “select * from phoneBook where adi like “%” +
phoneAxtarisBox. Text + “%” or soyadi like “%” +
phoneAxtarisBox. Text + “%” or mobil_nomre like “%” +
phoneAxtarisBox. Text + “%” or ev_nomre like “%” +
phoneAxtarisBox. Text + “%” or is_nomre like “%” +
phoneAxtarisBox. Text + “%” or email like “%” +
phoneAxtarisBox. Text + “%””;
SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlSorgu, bazayaQosul);
//Bazadan seçilən məlumatların dataTable əlavə olunmsı
DataTable dataTable = new DataTable();
dataAdapter. Fill(dataTable);
//dataTable cədvəlində olan məlumatların phoneGridView ilə əlaqələndirilməsi
phoneGridView. DataSource = dataTable;
}
catch (SqlException sehv)
{
MessageBox. Show(sehv. Message);
}
}
}
Şəkil. 23
Biz burda bütün bölmələrə yoxlayırıq hər hansı bir bölmədə bu məlumatlar vardısa phoneGridView-da göstəririk.
Telefon Kitabçası programın aşağıdakı keçiddən yüklə.
Bu məqalə ilə bağlı sizi maraqlandıran sualları öyrənmək istəsəniz mənimlə əlaqə saxlaya bilərsiniz.
Hazırladı
Elvin Yusifli
Əlaqə
http://facebook.com/elvin.yusifli
Fecebook Grup