مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

ali.majed

عضویت از 1394/09/15

دسترسی به داده های sql server

  • جمعه 13 فروردین 1395
  • 13:59
تشکر میکنم

با عرض سلام و خسته نباشید
من توی پروژه ی asp.net نیاز دارم داده ها رو از توی sql server بخونم و توی چند تا listview نمایش بدم و نیاز دارم که یک داده به صورت رندوم از پایگاه داده انتخاب کنم .
از روش اول که استفاده کنم برای listview اول درست کار می کنه ولی برای دو یا پند لیست ویو خطا می ده :

string strConnection = "Data Source =Ali-HP;Database=EzBuy;Integrated Security=yes";
                using (SqlConnection Connection = new SqlConnection(strConnection))
                {
 
                    String strQuery = "SELECT TOP 1 * FROM product ORDER BY NEWID()";
                    SqlCommand cmd = new SqlCommand();
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = strQuery;
                    cmd.Connection = Connection;
 
                     
                    cmd.Connection.Open();
                    lv1.DataSource = cmd.ExecuteReader();
                    lv2.DataBind();
                     
                    cmd.Connection.Close();
                    cmd.Connection.Dispose();
                }

توی این روش من می تونم شرط بذارم که فقط یک محصول رو انتخاب کنه ولی برای یک لیست ویو ، ولی در روش بعد برای هر تعداد لیست ویو جواب می ده ولی نمی تونم شرط بذارم که یک محصول رو به صورت رندم انتخاب کنه

MasterDCDataContext db = new MasterDCDataContext();
            var q = db.PrSubTypes;
            lvKitchen.DataSource = q.Where(c => c.TypeID.ToString() == "1001" );
            lvKitchen.DataBind();


توی این روش از data class استفاده کردم

با تشکر از وقتی که برای راهنمایی صرف می کنید

پاسخ های این پرسش

تعداد پاسخ ها : 8 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 13 فروردین 1395
  • 17:44

در روش دوم چرا نمیتونید شرط بزارید ؟

میتونید از Take استفاده کنید

lvKitchen.DataSource = q.Where(c => c.TypeID.ToString() == "1001" ).Take(1);

 

کاربر سایت

ali.majed

عضویت از 1394/09/15

  • جمعه 13 فروردین 1395
  • 18:59

خیلی متشکرم ، بسیار عالی بود .

سوال دیگه اینکه چه گونه می توانم در همین روش ، رکوردی رو که بیشترین مقدار در یک فیلد رو دارد برگردونم ؟

از متد max در همین روش استفتده می کنم ولی خطا دارد

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 14 فروردین 1395
  • 08:08

چگونه از Max استفاده کردید ؟

کوئری را قرار دهید تا بررسی کنم

کاربر سایت

ali.majed

عضویت از 1394/09/15

  • شنبه 14 فروردین 1395
  • 10:55

با عرض سلام

MasterDCDataContext db = new MasterDCDataContext();
var p = db.products;
lvKitchen.datasource = q.where(c => c.prType == "kitchen").take(1).max(t => t.pesell);
lvKitchen.databind();

این کد برای یافتن بیشترین تعداد فروش است ولی خطا دارد

با تشکر

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 14 فروردین 1395
  • 10:57

به شکل زیر بنویسید

MasterDCDataContext db = new MasterDCDataContext();
var p = db.products;
lvKitchen.datasource = q.where(c => c.prType == "kitchen").OrderByDescending(t => t.pesell).take(1);
lvKitchen.databind();

 

کاربر سایت

ali.majed

عضویت از 1394/09/15

  • شنبه 14 فروردین 1395
  • 11:01

به این صورت نوشتم ، ولی کالا با بیشترین تعداد فروش را انتخاب نمی کند

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 14 فروردین 1395
  • 11:02

شاید در ساختار جدوالتون و یا اطلاعات موجود مشکلی وجود دارید

بررسی کنید

کاربر سایت

ali.majed

عضویت از 1394/09/15

  • شنبه 14 فروردین 1395
  • 11:04

حتما بررسی می کنم ، بسیار سپاس گذارم

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)