ACCESS VERİTABANI İLE C# FORM İŞLEMLERİ
Microsoft Access bir İlişkisel Veri Tabanı Yönetim Sistemi uygulamasıdır. Bir veri tabanını oluşturmak ve kullanmak Access ile diğer veri tabanı uygulamalarına göre çok daha kolaydır. Bunun nedeni Access’in , Windows ortamının Grafiksel Kullanıcı Arabiriminin sağladığı avantajların tümünden yararlanma imkanı vermesidir. Grafiksel Kullanıcı Arabirimi , karmaşık komut dizilerini öğrenmeyi gerektirmeden , ekran üzerindeki nesneler ve simgeler yardımıyla , fare desteğinden de yararlanarak kullanıcının çalışmasına olanak verir.
Konuyu yaptığım küçük bir projeyle ele alacağım. Örnek uygulamada, şekildeki formdan girilen verileri access veritabanına kaydederek bilgileri saklar veya veritabanından bilgi siler. Ayrıca program arka palanda sürekli çalışarak, seçilen etiket rengine göre belirlenen süre sonunda kullanıcıya masaüstü bildirimi verir.
Program kodları;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace OgrenciProgrami
{
public partial class frmApartmanProgrami : Form
{
public frmApartmanProgrami()
{
InitializeComponent();
}
OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=Apartman.accdb;Jet OLEDB:Database Password=123");
OleDbCommand komut = new OleDbCommand();
DataTable tablo = new DataTable();
// Listele Metodu
private void Listele()
{
tablo.Clear();
OleDbDataAdapter adtr = new OleDbDataAdapter("Select * From Ogrenciler ", baglanti);
adtr.Fill(tablo);
dgListele.DataSource = tablo;
}
// Textboxları Temizleme Metedu
private void Temizle()
{
txtAd.Clear();
txtNo.Clear();
mtxtTarih.Clear();
cmbEtiket.Text = "";
}
private void btnKaydet_Click(object sender, EventArgs e)
{
// Kaydetme İşlemi
try
{
baglanti.Open();
//komut.Connection = baglanti;
string ekle = "insert into Ogrenciler (AsansorNo,ApartmanAdi,Tarih,Etiket) values (@a_no,@a_adi,@tarih,@etk)";
OleDbCommand komut = new OleDbCommand(ekle, baglanti);
komut.Parameters.AddWithValue("@a_no", Convert.ToInt32(txtNo.Text));
komut.Parameters.AddWithValue("@a_adi", txtAd.Text);
komut.Parameters.AddWithValue("@tarih",Convert.ToDateTime(mtxtTarih.Text));
komut.Parameters.AddWithValue("@etk", cmbEtiket.Text);
komut.ExecuteNonQuery();
baglanti.Close();
Listele();
for (int i = 0; i < this.Controls.Count; i++)
{
if (Controls[i] is TextBox) Controls[i].Text = ""; ;
}
MessageBox.Show("Kayıt Eklendi", "Başarılı İşlem",MessageBoxButtons.OK,MessageBoxIcon.Question);
Temizle();
}
catch (Exception hata)
{
MessageBox.Show(hata.Message);
}
}
private void Form1_Load(object sender, EventArgs e)
{
cmbEtiket.SelectedItem = 0;
// Combobox'taki değer 1. index'ten başlasın.
DateTime tarih=DateTime.Today.AddDays (-30);
DateTime tarih2=DateTime.Today.AddDays (-60);
OleDbCommand kmt = new OleDbCommand("Select * From Ogrenciler where (Tarih =@tarih2 and Etiket=@et2) or (Tarih =@tarih1 and Etiket=@et1)", baglanti);
kmt.Parameters.AddWithValue("@tarih1", tarih);
kmt.Parameters.AddWithValue("@et1", "Kırmızı");
kmt.Parameters.AddWithValue("@tarih2", tarih);
kmt.Parameters.AddWithValue("@et2", "Sarı");
OleDbDataAdapter adtr = new OleDbDataAdapter(kmt);
adtr.Fill(tablo);
//MessageBox.Show (tablo.Rows.Count.ToString());
dgListele.DataSource = tablo;
for (int i = 0; i < tablo.Rows.Count; i++) {
int asansor_no = tablo.Rows[i].Field("AsansorNo");
string apart_ad = tablo.Rows[i].Field("ApartmanAdi");
DateTime tarihh = tablo.Rows[i].Field("Tarih");
string etiket = tablo.Rows[i].Field("Etiket");
BildirimVer (asansor_no,apart_ad,tarihh,etiket);
System.Threading.Thread.Sleep (4000);
}
}
private void btnSil_Click(object sender, EventArgs e)
{
// Silme İşlemi
DialogResult cevap;
cevap = MessageBox.Show("Kaydı Silmek istediğinizden Eminmisiniz ?", "Uyarı", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (cevap == DialogResult.Yes)
{
baglanti.Open();
komut.Connection = baglanti;
komut.CommandText = @"Delete From Ogrenciler Where ApartmanAdi ='" + txtAd.Text + "'";
komut.ExecuteNonQuery();
baglanti.Close();
Listele();
MessageBox.Show("Kayıt Silindi", "Başarılı İşlem");
Temizle();
}
}
private void btnListele_Click(object sender, EventArgs e)
{
Listele();
}
private void numericUpDown3_ValueChanged(object sender, EventArgs e)
{
}
public void BildirimVer(int asansor_no,string apart_ad, DateTime tarihh, string etiket)
{
if (etiket == "Kırmızı") {
//NotifyIcon1.ShowBalloonTip(Balonun kalma süresi(milisaniye), "Yazılacak başlık", "Yazılacak açıklama", Gözükecek İcon);
notifyIcon1.ShowBalloonTip (10000, "Kırmızı etiket uyarısı! ", tarihh + " tarihli " + apart_ad + " apartmanının 30 günlük süresi dolmuştur.\nAsansör no : " + asansor_no, ToolTipIcon.Info);
Random rnd = new Random ();
int sayi = 0;
int mlssaniye = 0;
for (int i = 0; i < 10; i++) {
//sayilari değiştirebilirnizi ama 37 ile 37000 arası olsun
sayi = rnd.Next (1000, 3700);
//çook yüksek değer girmeyin
mlssaniye = rnd.Next (10, 100);
Console.Beep (sayi, mlssaniye);
}
} else if (etiket == "Sarı") {
//NotifyIcon1.ShowBalloonTip(Balonun kalma süresi(milisaniye), "Yazılacak başlık", "Yazılacak açıklama", Gözükecek İcon);
notifyIcon1.ShowBalloonTip (10000, "Sarı etiket uyarısı! ", tarihh + " tarihli " + apart_ad + " apartmanının 60 günlük süresi dolmuştur.\nAsansör no : " + asansor_no, ToolTipIcon.Info);
Random rnd = new Random ();
int sayi = 0;
int mlssaniye = 0;
for (int i = 0; i < 10; i++) {
//sayilari değiştirebilirnizi ama 37 ile 37000 arası olsun
sayi = rnd.Next (1000, 3700);
//çook yüksek değer girmeyin
mlssaniye = rnd.Next (10, 100);
Console.Beep (sayi, mlssaniye);
}
}
}
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (FormWindowState.Minimized == this.WindowState)
{
notifyIcon1.Visible = true; notifyIcon1.ShowBalloonTip(500);
this.Hide();
} else if (FormWindowState.Normal == this.WindowState)
{
notifyIcon1.Visible = false;
this.Show();
}
}
private void programıGösterToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Show();
notifyIcon1.Visible = false;
}
private void çıkışToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.ExitThread();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
notifyIcon1.Visible = true;
this.Hide();
}
private void hakkındaToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("Bu program Bilg. Müh. Nuran ÖZDEMİR tarafından yapılmıştır. Soru görüş ve önerileriniz için nuranozdemir61@gmail.com adrresinden ulaşabilirsiniz.");
}
}
}
Projeyi derleyip kapattıktan sonra kodları tekrar derlemek istediğimde hata veriyor ?
YanıtlaSilProgram arkapalanda açık kaldığından tekrar başlatılamıyor. Bildirimler köşesinden programdan çıkış alarak yeniden derleyebilirsiniz.
YanıtlaSilSorun düzeldi teşekkürler.
Sil