در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

پایگاه داده Sql Server در سی شارپ (بخش پنجم)

در بـخش قــبلی سی شارپ چطور به رکورد های جدول workers دست پیدا کنیم صحبت شد.

در این بخش یاد میگیریم که چطور در بین رکورها حرکت کنیم.

در درس گذشته برای اینکه بین رکورد های ذخیره شده در جدول حرکت کنیم به یک Dataset و یکDataAdapter نیاز بود که به خوبی با این ابزار آشنا شدیم

پایگاه داده Sql Server در سی شارپ (بخش پنجم)

جابجایی بین رکوردها

همانطور که اشاره شد در این بخش در مورد جابجایی بین رکوردهای موجود در پایگاه داده بحث خواهیم کرد. یعنی خواهیم آموخت که چگونه به رکورد های قبلی و رکوردهای بعدی حرکت کنیم و یا اصلاً چطور به آخرین رکورد یا اولین رکورد در پایگاه داده برسیم (به صورت آنی).

البته به صورت خیلی مختصر راجع به این موضوع در بخش قبلی اشاره شده است ولی در اینجا کامل و کاربردی یاد خواهیم گرفت.

دگمه های پیمایش پایگاه داده

حرکت رو به جلو بین رکورد ها

برای اینکه به کاربر اجازه دهیم بتواند به رکورد بعدی انتقال پیدا کند می بایست با برنامه نویسی و تغییر در مقدار Row در DatasSet این کار صورت پذیرد.

برای این کار باید دو متغیر در پروژه از قبل ایجاد شده بنویسیم که این دو متغیر باید بیرون فرم load باشند این دو متغیر که در زیر آمده اند اولی که MaxRows می باشد تعداد سطرهایی که در Dataset وجود دارد را نگه می دارد و متغیر دومی که ایجاد میکنیم برای منظور تغییر شماره Row فعلی استفاده می شود زیرا میخواهیم بین رکورد ها حرکت کنیم.

int MaxRows = 0;

int inc = 0;

پایگاه داده Sql Server در سی شارپ (بخش پنجم)

همانطور که در تصویر بالا مشخص است دو متغیر در بیرون از Load نوشته شده اند و دارای مقدار اولیه 0 می باشند.

شاید برخی بپرسند برای گرفتن تعداد سطرها (Row ها) در Dataset نیاز به متغیر می باشد؟ جواب خیر است زیرا شما می توانید از خاصیت Count مربوط به Rows استفاده کنید.

کد زیر را در رویداد load فرم زیر ()NavigateRecords وارد کنید:

MaxRows = ds1.Tables["Workers"].Rows.Count;

همانطور که در کد بالا خواهید دید جهت استفاده از خاصیت Count میتوان به جای مشخص کردن شماره یک سطر مشخص، بعد از Rows یک نقطه یا همان Dot گذاشته و از خاصیت Count بهره بگیریم. خاصیت Count تعداد سطرهای موجود در یک Dataset مشخص را به ما میدهد.

پایگاه داده Sql Server در سی شارپ (بخش پنجم)

پس تا اینجا وقتی برنامه اجرا شود داخل متغیر MaxRows ما تعداد سطرهای موجود در Dataset ما خواهد بود .

در درس های گذشته دیدیم که متد NavigateRecords چطور تکمیل شد در واقع دستوری که در تصویر زیر میبینیم اولین سطر از جدولی را که درون ds1 ذخیره شده را گرفته و درون متغیری با نام dRow و از نوع DataRow قرار می دهد که این متد را باید تغییر داد.

پایگاه داده Sql Server در سی شارپ (بخش پنجم)

این دستور به صورت ثابت همیشه به اولین سطر یعنی سطر صفر اشاره دارد حتی اگر تغییر کند بنابر این میتوان از متغیر inc استفاده نمود زیرا عملیاتی که می خواهیم انجام دهیم این است که وقتی روی دکمه Next Record کلیک شد، مقدار را افزایش دهیم و این مقدار در این متغیر بماند.

کد NavigateRecord بالا را به صورت زیر تغییر میدهیم یعنی به جای اینکه 0 داخل براکت باشد متغیر inc را جایگزاری میکنیم.

DataRow dRow = ds1.Tables["Workers"].Rows[inc];

سپس به محیط طراحی میرویم یک دگمه جدید به فرم اضافه میکنیم و خاصیت Text آن را به Next Record تغییر میدهیم خاصیت نام آن را به btnNext تغییر میدهیم مطاق شکل زیر کار را ادامه خواهیم داد.

پایگاه داده Sql Server در سی شارپ (بخش پنجم)

همانطور که میدانید اگر ذوروی Button دابل کلیک کنیم وارد محیط کدنویسی و رویداد کلیک دگمه میشویم پس با دابل کلیک روی Button و کد نویسی داخل این رویداد میخواهیم بررسی کنیم که چه چیزی درون متغیر MaXRows وجود دارد؟ ضمن اینکه فراموش نشود باید متغیر inc را یک واحد افزایش دهیم زیرا این متغیر inc است که ما را به رکورد بعدی هدایت می کند.

در ادامه شرط if زیر را به Button Next Record اضافه می نماییم.

پایگاه داده Sql Server در سی شارپ (بخش پنجم)

توضیحات کد:خط ااول دستور if می گوید که اگر inc برابر با تعداد سطرها (MaxRows – 1) نشده، متغیر inc را ۱ واحد افزایش بده و سپس متغیر NavigateRecords را فرامی خواند در غیر این صورت هم یک پیغام مبنی بر No more rows برای ما چاپ میشود یعنی اگر به پایان سطرهای MaxRows رسیدیم با پیغامی ما را آگاه کن.

شاید خیلی از شما بدانید که سی شارپ Zero Base هست یعنی تمام عملکردهای شمارش آن از 0 آغاز میشود پس دلیل اینکه ما از MaxRows -1 استفاده می کنیم این است که سطرهای جدول ما از شماره صفر شروع می شوند ولی در متغیر MaxRows تعداد سطرها از ۱ شروع شده است پس باید MaxRows را منهای عدد ۱ کنیم. مثلا اگر جدول ما دارای ۴ سطر باشد، این سطر ها از شماره صفر تا ۳ هستند که جمعا می شود ۴ تا دقت کنید اگر MaxRows را منهای ۱ نکنیم با خطای IndexOutOfRange مواجه خواهیم شد.

برنامه را با کلید F5 یا Run آغاز میکنیم.

پایگاه داده Sql Server در سی شارپ (بخش پنجم)

حرکت رو به عقب در پایگاه داده

همانند کار های بالا به راحتی میتوان برای عقب رفتن در پایگاه نیز کد نوشت ابتدا یک دگمه دیگر به فرم موجود اضافه میکنیم ،خاصیت Text آن را Previous Record قرار دهید و خاصیت نام آن را btnPrevious میگذاریم

روی Button دابل کلیک کرده تا به قسمت کدنویسی آن برویم و دستورات زیر را تایپ میکنیم.

پایگاه داده Sql Server در سی شارپ (بخش پنجم)

توضیحات کد: ابتدا چک می شود که متغیر inc بزرگتر از صفر باشد. اگر این متغیر بزرگتر از صفر باشد آنگاه دستورات میان کروشه های if اجرا می شوند که ابتدا 1واحد از متغیر inc کم می شود و سپس متد NavigateRecords فراخوانی می شود. اگر مقدار متغیر inc برابر با صفر باشد و ما روی دکمه کلیک کنیم (یعنی وقتی برنامه اجرا می شود و هنوز روی دکمه ای که در بخش قبل ایجاد کردیم کلیک نکرده ایم، روی این دکمه کلیک کنیم) دستورات مربوط به else اجرا می شوند یعنی First Record.

برنامه را با کلید F5 یا Run آغاز میکنیم و روی هر دو دگمه کلیک میکنیم تا رو به عقب و جلو برویم

پایگاه داده Sql Server در سی شارپ (بخش پنجم)

پرش به آخرین رکورد در پایگاه داده Jump To End Record

برای رفتن به آخرین رکورد از پایگاه داده، فقط کافی است متغیر inc و MaxRows مقدار یکسانی داشته باشند.

یک دگمه جدید به فرم اضافه میکنیم و خاصیت Text آن را Last Record گذاشته و خاصیت نام آن را btnLast قرار میدهیم و کد های زیر را درون رویداد کلیک Button جدید مینویسیم.

پایگاه داده Sql Server در سی شارپ (بخش پنجم)

شکل کلی فرم ما تا این لحظه شبیه تصویر زیر خواهد بود

پایگاه داده Sql Server در سی شارپ (بخش پنجم)

پرش به اولین رکورد در پایگاه داده

برای رفتن به اولین رکورد از پایگاه داده کافی است مقدار صفر را درون متغیر inc قرار دهیم.

همانند قبل دگمه ای اضافه کرده و درون رویداد آن طبق تصویر زیر کد ها را تایپ میکنیم.

پایگاه داده Sql Server در سی شارپ (بخش پنجم)

این کد چک می کند که آیا inc برابر با صفر است یا خیر؟ و اگر برابر با صفر نبود دستورات درون if اجرا شده و آن را برابر با صفر می کند. سپس متد NavigateRecord اجرا می شود.

فرم کلی ما تا اینجا به اینجا به شکل زیر است.

پایگاه داده Sql Server در سی شارپ (بخش پنجم)

با در ITPRO باشید در ادامه این سری از مطالب با اضافه، حذف، به روز رسانی و جستجوی رکوردها .

جهت خواندن مطالب بخش های قبل به لینک های زیر مراجعه نمایید

پایگاه داده Sql Server در سی شارپ (بخش اول)

پایگاه داده Sql Server در سی شارپ (بخش دوم)

پایگاه داده Sql Server در سی شارپ (بخش سوم)

پایگاه داده Sql Server در سی شارپ (بخش چهارم)

منبع:C# .NET: Databases

نویسنده : فرهاد خانلری

منبع : انجمن تخصصی فناوری اطلاعات ایران

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد

#آموزش_کار_با_سی_شارپ_و_sql #حرکت_بین_رکورد_های_پایگاه #بانک_اطلاعاتی_و_سی_شارپ #c#_و_پایگاه_sql #آموزش_کار_با_sql_server #کار_با_sql_در_سی_شارپ #پایگاه_داده_در_سی_شارپ #آموزش_sql #اتصال_به_پایگاه_داده_sql
عنوان
1 پایگاه داده Sql Server در سی شارپ (بخش اول) رایگان
2 پایگاه داده Sql Server در سی شارپ (بخش دوم) رایگان
3 پایگاه داده Sql Server در سی شارپ (بخش سوم) رایگان
4 پایگاه داده Sql Server در سی شارپ (بخش چهارم) رایگان
5 پایگاه داده Sql Server در سی شارپ (بخش پنجم) رایگان
زمان و قیمت کل 0″ 0
7 نظر
احسان مكرمي

با تشکر از این سری آموزش

منتطر ادامه آموزش هستیم

mahtab_67

آموزش عالی و با جزییات بود.لطفا ادامه بدین.

f.v

سلام

وقت بخیر

ممنون از توضیحات مفیدتون، فقط من تو این 5 سری به جواب سوالم نرسیدم.

من هم برای برنامم از بانک sql server express خود ویژوال استفاده کردم. برنامه رو ران میکنم . تو یکی از فرم ها رکورد درج میکنم. بعد تو یه فرم دیگه و در یک combobox میخوام که اون رکورد ها رو نمایش بدم و خب اینکار هم به خوبی انجام میشه.

اشکال کار اینجاست که وقتی برنامه رو استاپ میکنم و دوباره ران میکنم. اطلاعاتی که قبلا ثبت کردم پاک شده. میشه بگید اشکال کارم کجاست؟

یه کوئری Insert با کانکشن استرینگ بانکم دارم که خب به نظرم باید مستقیما تو بانک ذخیره بشه. مطلبی هست که جا انداخته باشم؟

محمدجواد

سلام

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

1- آیا برای وصل شدن به اسکوئل خارج از ویژوال استودیو نحوه دستورات و کانکشن استرینگش فرق می کنه یا نه

2- جهت آموزش طراحی با وب اپلیکیش چه مرحله را باید دنبال کرد

پیمان بهرامی

سلام مرسی جالب و مفید بود ادامه داره یا نه ؟

فرهاد خانلری

سلام اگر مورد استقبال قرار بگیره حتماً در برنامه کاری ام قرار میدم که ادامه بدم

مهدی صادقی

با در ITPRO باشید در ادامه این سری از مطالب با اضافه، حذف، به روز رسانی و جستجوی رکوردها .

با تشکر بسیار برای تا اینجای آموزش ها ولی طبق قولی که دادید لطفا ادامه اش رو هم بزارید

جستجو و آپدیت و حذف رکورد ها ممنون میشم بزارین. یه پروژه دارم برای درسم که باید sql وصل بشه به برنامه #c فک می کنم اموزش های شما خیلی مفید واقع می شوند.. اگر ادامه رو هم ارئه بدین خیلی عالیست.

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....