C# Yardım

Kapalı Hesap (153535)
30-09-2011, 19:42   |  #1  
OP Kapalı Hesap
Teşekkür Sayısı: 27
2,297 mesaj
Kayıt Tarihi:Kayıt: Eki 2009

Arkadaşlar ADO.NET ve C# kullanarak veritabanında arama yapan bir program yazdım program sorunsuz çalışıyor fakat ben örneğin girilen kayıt veritabanında yoksa kullanıcıya "aradığınız kayıt bulunumadı" gibi bir mesaj dönsün istiyorum.Bunun için programı try-catch bloklarıyla yazdım fakat mevcut olmayan bir kayıt girdiğimde herhangi bir hata döndürmedi.Yardımcı olursanız sevinirim.
Kodlar:
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 Database_Trying_5
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnFind_Click(object sender, EventArgs e)
        {


            string baglanti = "Data Source=COMPUTER;Initial Catalog=People;Integrated Security=True";
            SqlConnection conn = new SqlConnection(baglanti);
            string sorgu = "SELECT * FROM p_info WHERE name='" + txtFind.Text + "'";
            SqlCommand cmd = new SqlCommand(sorgu, conn);
            conn.Open();
            SqlDataReader rdr = cmd.ExecuteReader();
            while(rdr.Read())
            {
                lbFound.Items.Add(rdr["name"].ToString()+ " " +rdr["surname"].ToString()+" "+ rdr["job"].ToString()+" "+rdr["phone"].ToString());
            }


        }
    }
}
Arayüz:

censez41
03-10-2011, 18:24   |  #2  
censez41 avatarı
Yıllanmış Üye
Teşekkür Sayısı: 3
1,705 mesaj
Kayıt Tarihi:Kayıt: Nis 2009

http://www.aratmedya.com/webtasarim/adonet-arama-yapma.html

sayfasından
if (dataGridView1.Rows.Count
== 0)
{
MessageBox.Show("kayıt bulunamadı");
}
uyarla  mesela
lbFound.Items.count==0)
{
MessageBox.Show("kayıt bulunamadı");
}


gibi bişey olabilir
yani herhangi bir kayıt dönmemesi hata olarak yorumlanmıyor
eğer ibfound un içi boş ise kayıt bulunamadı diye mesaj yazdır
konu hakkında bilgim yok ama bu mantıkla yapılacağını düşünüyorum




Kapalı Hesap (153535)
03-10-2011, 18:53   |  #3  
OP Kapalı Hesap
Teşekkür Sayısı: 27
2,297 mesaj
Kayıt Tarihi:Kayıt: Eki 2009

Teşekkürler zaten geçen o siteden yararlanmıştım.Ama dediğin gibi hata dönmesi için listbox'ın içinin boş olması gerekiyor.Başka türlü olmuyor heralde.

censez41
03-10-2011, 18:58   |  #4  
censez41 avatarı
Yıllanmış Üye
Teşekkür Sayısı: 3
1,705 mesaj
Kayıt Tarihi:Kayıt: Nis 2009

yani aramının sonucunda kayıt dönmemesi bir hata değil bu nedenle trt catch hata yakalamıyor
eğer listbox ın içi boş ise kayıt bulunamadı
diye yapacaksın

Kapalı Hesap (153535)
03-10-2011, 19:00   |  #5  
OP Kapalı Hesap
Teşekkür Sayısı: 27
2,297 mesaj
Kayıt Tarihi:Kayıt: Eki 2009

Tamam veritabanında olmayan kayıtlar için bulunamadı hatası döndürdü teşekkürler.

censez41
03-10-2011, 19:00   |  #6  
censez41 avatarı
Yıllanmış Üye
Teşekkür Sayısı: 3
1,705 mesaj
Kayıt Tarihi:Kayıt: Nis 2009

c++ da muh34 çok yardımcı oluyordu artık o da girmiyor

Kapalı Hesap (153535)
03-10-2011, 19:01   |  #7  
OP Kapalı Hesap
Teşekkür Sayısı: 27
2,297 mesaj
Kayıt Tarihi:Kayıt: Eki 2009

Evet artık hiç girmiyor  öyleydi ama o da bu konularda eksikti.

Son Düzenleme: Kapalı Hesap (153535) ~ 03 Ekim 2011 19:05
Kapalı Hesap (153535)
03-10-2011, 19:04   |  #8  
OP Kapalı Hesap
Teşekkür Sayısı: 27
2,297 mesaj
Kayıt Tarihi:Kayıt: Eki 2009

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 Database_Trying_5
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnFind_Click(object sender, EventArgs e)
        {


            string baglanti = "Data Source=COMPUTER;Initial Catalog=People;Integrated Security=True";
            SqlConnection conn = new SqlConnection(baglanti);
            string sorgu = "SELECT * FROM p_info WHERE name='" + txtFind.Text + "'";
            SqlCommand cmd = new SqlCommand(sorgu, conn);
            conn.Open();
            lbFound.Items.Clear();            
            SqlDataReader rdr = cmd.ExecuteReader();
            while(rdr.Read())
            {
                lbFound.Items.Add(rdr["name"].ToString()+ " " +rdr["surname"].ToString()+" "+ rdr["job"].ToString()+" "+rdr["phone"].ToString());
            }


            if (lbFound.Items.Count == 0)
            {
                MessageBox.Show("Kayıt bulunamadı.");
            }

            conn.Close();

        }
    }
}
En son bu haliyle oldu.

censez41
03-10-2011, 19:10   |  #9  
censez41 avatarı
Yıllanmış Üye
Teşekkür Sayısı: 3
1,705 mesaj
Kayıt Tarihi:Kayıt: Nis 2009

if (dataGridView1.Rows.Count== 0)
{
bunu kafama göre değiştirip
lbFound.Items.count==0)
{
MessageBox.Show("kayıt bulunamadı");
}
yaptım demek tutturmuşum :))

Kapalı Hesap (153535)
03-10-2011, 19:11   |  #10  
OP Kapalı Hesap
Teşekkür Sayısı: 27
2,297 mesaj
Kayıt Tarihi:Kayıt: Eki 2009

Evet zaten anlamıştım öyle yazacağımı :))

Kapalı Hesap (153535)
14-08-2012, 14:34   |  #11  
OP Kapalı Hesap
Teşekkür Sayısı: 27
2,297 mesaj
Kayıt Tarihi:Kayıt: Eki 2009

Bu programdaki espri aslında lbFound.Items.Clear(); satırında gizli.Verileri çekmeden önce listbox nesnesindeki öğeler temizlendiği için eğer ilgili kayıt bulunamazsa kullanıcıya hata mesajının gösterilmesini sağlıyor.Aylar sonra bu işin mantığını iyice kavradım ve ADO.NET ile ilgili önceden yazılacağını düşünmediğim programları da yazdım ama sonuç olarak herkes bir acemilik döneminden geçiyor.

Son Düzenleme: Kapalı Hesap (153535) ~ 14 Ağustos 2012 14:34