پیغام دادن در سی شارپ صورت خالی بودن جدول - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

پیغام دادن در سی شارپ صورت خالی بودن جدول

0 امتیاز
سلام دوستان واساتید.

پیغام دادن در صورت خالی بودن جدول.

من می تونم دیتاگرید رو چک کنم و پیام بدم. اما می خوام حالت کلی و اصولی و بهتر و بهینه تر رو بدونم رو  انجام بدم.

 

ممنون از همه دوستان
سوال شده اسفند 23, 1392  بوسیله ی rahgozar (امتیاز 224)   18 26 35

2 پاسخ

+2 امتیاز
 
بهترین پاسخ

روش قبلی استفاده از ADO بود، اگر با entity میخواید می تونید از عملگر Take استفاده کنید (گرچه راه های دیگه ای هم هست مثل استفاده از عملگر FirstOrDefault ).

این عملگر یه ورودی عددی میگیره و به تعداد اون عدد، از ابتدای جدول براتون رکورد برگشت میده. ما در اینجا باز هم برای اینکه چک کنیم جدول خالی نباشه، عدد 1 رو بهش میدیم تا اولین رکورد رو برگشت بده. اگر رکوردی برگشت نداد یعنی جدول خالی هست :

DBStudentEntities MyDB = new DBStudentEntities();
            var q = MyDB.TblResults.Take(1);
            if (q.Count() == 0)
            {
                MessageBox.Show("جدول خالی است");
            }
            else
            {
                dataGridView1.DataSource = q.ToList();
            }

 

پاسخ داده شده اسفند 24, 1392 بوسیله ی veniz2008 (امتیاز 2,083)   1 5 21
انتخاب شد اسفند 25, 1392 بوسیله ی rahgozar
ممنون استاد عزیز
+2 امتیاز

سلام.

یه راهش استفاده از دستور count هست ولی یه ایرادی ممکنه بوجود بیاد، اونم اینه که اگر تعداد رکوردهای جدول خیلی زیاد باشه سرعت شمردن همه رکوردها و برگشت جواب ممکنه یه کم طول بکشه. یه راه ساده و کم هزینه اینه که اولین رکورد جدول رو برگشت بدید (استفاده از دستور Top ). مطمئنا اگر جدولی خالی نباشه، حداقل شامل یک رکورد خواهد بود و جوابی برگشت داده میشه و اگر رکوردی برگشت داده نشد مشخص هست که اون جدول خالی هست. کد زیر این کار رو انجام میده :

SqlDataAdapter da = new SqlDataAdapter("Select Top (1) * from TblStudent", con);
DataTable dt = new DataTable();
da.Fill(dt);
if(dt.Rows.count == 0)
   {
      MessageBox.Show("هیچ رکوردی در جدول موجود نیست");
   {

 

پاسخ داده شده اسفند 23, 1392 بوسیله ی veniz2008 (امتیاز 2,083)   1 5 21
ممنون دوست عزیز.  اما من از entity استفاده می کنم.

مثل دستور قبلی که اسه درج بود دستوری ندرارید که این کار ر انجام بده؟
...