PDA

View Full Version : راهنمایی در مورد کار با دیتابیس



beginerc#
دوشنبه 17 خرداد 1389, 19:15 عصر
سلام
من دارم تازه کار کردن با دیتابیس رو توی سی شارپ تجربه می کنم :خجالت: و یه کم گیج شدم،مطالبی هم که توی سایت بود رو خوندم اما بدتر شد اگه کسی بتونه ساده توضیح بده ممنون میشم:خجالت:.
یکی از مشکلاتی که دارم:
بهترین راه گرفتن داده ها از دیتابیس چیه؟مثلا وقتی می خوام داده ها رو بگیرم و توی یه کمبباکس بذارم از دیتاست استفاده کنم یا راه بهتری هست؟چیزی که من فهمیدم اینه که دیتاست میاد و داده ها رو توی حافظه نگه میداره،حالا وقتی که من ازش استفاده می کنم و داده ها رو میریزم توی یه کمبو باکس،حالا اگه بخوام دوباره با زدن یه باتن بیام و یه داده دیگه ای رو توی یه تکست باکس بذارم باید بیام دوباره به به دیتابیس کانکت شم و تمام مراحل رو برم و بعد داده جدیدم رو بگیرم یا اینکه دیگه نیازی به اتصال به دیتابیس نیست و باید از همون دیتا ست که تویحافظه هست دادم رو بگیرم و بذارم توی تکست باکسم؟

هنوز کلی مشکل دیگه دارم اما فکر کنم اگه یکی یکی بپرسم و حل شه بهتر باشه و کمتر گیج کننده باشه.
ممنون.

Happy_davood
دوشنبه 17 خرداد 1389, 19:32 عصر
معمولاً در هر بار نیاز به اطلاعات باید با کوئری مناسب داده های تازه رو از بانک بردارید . در نظر داشته باشید که شما نمی دونید چه داده ای رو باید داخل اون TextBox قرار بدید و ممکنه فعالیت کاربر مشخص کنه که کدوم داده ها باید از بانک Fetch بشن . بنابراین نیاز به مراجعات بعدی به بانک همیشه وجود داره . ضمناً ممکن در این حین داده های جدید وارد بانک شده باشند صحت دادهای داخل DataSet درست نباشه .

معمولاً در سازنده کلاس یک کانکشن رو باز خواهید کرد و در سایر Member Function های کلاس از همون کانکشن استفاده خواهید کرد و داده های جدید رو Fetch خواهید کرد . برخلاف Connection توصیه میشه Command ها رو بصورت محلی در داخل Member Function های کلاس تعریف کنید .

beginerc#
چهارشنبه 19 خرداد 1389, 14:59 عصر
سلام
واقعا بابت راهنماییتون ممنونم.حالا اگر داده ها ثابت باشن،مثلا یکسری اسم که قراره از توی یک کمبوباکس انتخاب شن و خود این اسمها براساس یه کمبو باکس دیگه مثلا رشته تحصیلی داخل کمبوباکس ریخته شن،وقتی تمام داده ها در دیتا ست هست هربار که یه رشته انتخاب میشه بیام و یه کوئری با شرط بدم و داده ها رو بریزم تو دیتاست و بیام از اون تو بریزم توی کمبوباکس یا راه دیگه ای داره؟
اگه با یه مثال و کمی سطح پایین توضیح بدین که ما تازه کارهام متوجه بشیم ممنون میشم.

sds1920
چهارشنبه 19 خرداد 1389, 16:42 عصر
اگه شما ميگيد داده ها توي ديتاست هست پس نيازي به نوشتن Query نداريد.
شما مي تونيد از ديتاويد استفاده كنيد و داده ها رو فيلتر كنيد مثل زير :


DataView DV=new DataView;
DV.Table=Dset.Tables["MyTable"];
Dv.RowFilter="Name LIKE '*Ali'";


اين فقط داده هايي رو شامل ميشه كه اول نامشون Ali هست .

Happy_davood
چهارشنبه 19 خرداد 1389, 16:43 عصر
نخیر روش همین هست که خودتون گفتید .

یعنی باید در وقفه SelectedIndexChange مربوط به کمبوباکس اول یک کوئری با شرط مناسب بنویسید که ....

شاید شما چون تازه با بانک اطلاعاتی کار می کنید به نظرتون مراجعات به بانک کار عجیب یا دشواری میاد ولی اینطور نیست و در پروژه های واقعی که ممکن چند تا کاربر در حال حذف اضافه اطلاعات هستند اصولاً باید به بانک مراجعه بشه و آخرین اطلاعات بر روی فرم قرار بگیره و نه اطلاعاتی که چند دقیقه یا چند ده دقیقه قبل واکشی شدند .

sds1920
چهارشنبه 19 خرداد 1389, 16:52 عصر
دوست عزيز.اين چيزي كه شما مي گيد هر چند دقيقه يكبار بايد اطلاعات Load بشه مال زماني هست كه برنامه توي شبكه باشه.دستمون توي سوالي كه پرسيده بودند اشاره به تغيير اطلاعات نكردند.

Happy_davood
چهارشنبه 19 خرداد 1389, 17:06 عصر
اين چيزي كه شما مي گيد هر چند دقيقه يكبار بايد اطلاعات Load بشه مال زماني


یادم نمیاد همیچین چیزی گفته باشم .
واقعیت این هست که در بیشتر مواقع و در آینده که دوستمون روی پروژه های واقعی کارخواهند کرد در بیشتر مواقع از این روش استفاده خواهند کرد و نه ... بنابراین من خواستم از همین حالا روش های ... پیشنهاد داده باشم .

دوستومون داده ای رو که لازم دارند بیارند به حافظه (DataTable هم کافیه و نیازی به دیتاست نیست) بقیه اطلاعات رو هر وقت که لازم باشه (OnDemand) واکشی می کنند .

beginerc#
چهارشنبه 19 خرداد 1389, 19:47 عصر
سلام
اول ممنون بابت راهنماییتون
شاید دلیل اینکه من این سوالا برام پیش میاد اینه که چندسالی هست تحت وب و با php کار می کنم و اونجا برای امنیت بیشتر سعی میکنم کمتر به db سربزنم و اگر اطلاعاتم تغییر نکنن یا حداقل توی اون لحظه ثابت باشند از همونها استفاده کنم.

beginerc#
پنج شنبه 20 خرداد 1389, 17:23 عصر
دوباره سلام
من الان دوباره گیج شدم باز:گیج::افسرده::ناراحت:
میشه راههای پرکردن کمبو باکس را از روی دیتابیس یکی با مثال توضیح بده:عصبانی++: من میومدم با for تمام داده ها رو از datareader اضافه و add می کردم اما الان می خوام یه کد تمیز و بدون اشکال با استفاده از دیتاست داشته باشم، اما نمیشه!!! میشه یکی یهکد کامل بذاره،از اول تعریف SqlConnection . چرا توی سی شارپ اینقدر کار با دیتابیس گیج کنندس :ناراحت:

سهراب_1389
پنج شنبه 20 خرداد 1389, 19:30 عصر
سلام
1-از تو یه کتاب ،من کتاب آقای هاشمیان رو توصیه میکنم،ADO.NET یک بار بخون
2-با استفاده از ویزارد از قسمت properties کومبو باکس اون رو به دیتا بیس وصل کن.