رفتن به مطلب

ارسال های توصیه شده

جلسه 15

ایجاد ارتباط بین SQL Server و #C

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

 

ADO.Net:

 

برنامه ی رابطی که بین فرم و پایگاه داده ارتباط برقرار می کند و سه مرحله دارد:

 

مرحله 1: SQL Connection

 

مرحله 2: SQL Data Connection

 

مرحله 3: Data Set

 

1. SQL Connection

 

ابتدا برای وصل شدن به SQL Server نیاز به آدرس آن است. آدرس دهی سرور توسط کلاس SQL Connection انجام می شود.

 

2. SQL Data Connection

 

سپس تقاضاها توسط کلاسی به نام SQL Data Adaptor به سمت SQL Server فرستاده می شود. در کل چهار تقاضا داریم:

 

 

  • Insert (درج)
  • Select (انتخاب)
  • Delete (حذف)
  • Update (به روز رسانی)

 

چهار دستور بالا، دستورات زبان SQL هستند که با آن Query می نویسیم.

 

3. Data Set

 

در مرحله آخر اطلاعات از سرور به سمت کلاینت آورده می شود. این عمل توسط Date Set انجام می شود.

 

در واقع، تقاضاها از سمت کلاینت به سمت پایگاه داده ی SQL توسط SQL Data Adaptor مطرح می شود و رکوردها در ظرفی بنام Data set قرار می گیرد و به سمت کلاینت آورده می شود.

لینک به دیدگاه
  • 8 ماه بعد...
  • 3 هفته بعد...

واقعا تاپیک عالی ای هست! من موندم چرا تا الان ندیده بودمش!!!:icon_pf (34):

 

من یکی واقعا پیگیرش هستم اگه ادامه بدی:w16:

 

ممنون از زحماتت:icon_gol:

لینک به دیدگاه
  • 1 ماه بعد...

جلسه 16

 

نصب، اجرای sql server و ایجاد پایگاه داده و جدول در sql

 

قبل از اینکه آموزش سی شارپ رو ادامه بدیم، باید sql server رو نصب کنیم. در تاپیک زیر طریقه نصب، اجرا و ایجاد جداول sql گفته شده.

 

نصب (sql server 2008 (2012

لینک به دیدگاه

جلسه 17:

ایجاد جدول student

 

با توجه به آموزش جلسه 16، یک پایگاه داده با نام projectDB درست کرده و در آن یک جدول با نام Tstudent ایجاد می کنیم. نام فیلدها بصورت شکل زیر است:

 

zythly7nxmqiu90egf.png

نکات جدول Tstudent:

  • ID: بصورت is identiy است و بصورت خودکار پر می شود.
  • gender: که نشاندهنده جنسیت است، از نوع bit است.
  • جدول را با نام Tstudent ذخیره می کنیم.

 

بعد از ایجاد جدول، با گزینه edit top 200 rows، چند رکورد در جدول اضافه می کنیم. مثلا در شکل زیر ما دو رکورد به جدول اضافه کردیم. فیلد gender بخاطر اینکه از نوع bit است، دو مقدار true و false می گیرد.

 

xo44oif86fcn93ityvc1.png

بعد از ایجاد و ویرایش جدول در sql، کار ما با sql server تمام می شود. حال نوبت به دستورات در سی شارپ است.

 

کاری که میخواهیم انجام بدهیم اینست که در فرمی در ویژوال استادیو، جدول دانشجو در یک datagridview نمایش داده شود. پس باید از query مربوط به دستور select استفاده شود.

 

برای نظم بیشتر تاپیک، دستور select در پست بعدی بررسی می شود.

لینک به دیدگاه

جلسه 18:

دستور select:

همانطور که در جلسه 15 گفته شد، sql چهار query مهم دارد که عبارتند از select, insert, delete, update . در این جلسه دستور select بررسی می شود.

کاری که قرار است انجام دهیم اینست که کل اطلاعات جدول Tstudent که در جلسه قبل ایجاد کردیم را در فرمی نمایش دهیم. برای اینکار بصورت زیر عمل می کنیم:

 

1. ابتدا یک کنترل DataGridView، به فرم اضافه می کنیم. در صورتی که تنها dataGridView را به فرم اضافه کنیم و مراحل بعدی را انجام دهیم(بغیر از کد خط 6 در مرحله 4)، همه فیلدهای جدول Tstudent در DataGridView نمایش داده می شود.

 

اگر بخواهیم که تنها فیلدهایی که تعیین می کنیم نمایش داده شود، باید Datagridview را سفارشی کنیم. (برای اینکه ترتیب آموزش بهم نخورد، آموزش سفارشی کردن Datagridview را در انتهای همین پست قرار می دهیم)

 

 

2. همانطور که در جلسه 15 بیان شد، برای برقراری ارتباط بین سی شارپ و sql، سه مرحله کلی نیاز است:

 

 

  • مرحله1: ابتدا باید به sql server متصل شویم. (sql Connection)
  • مرحله 2: تقاضای مورد نظر را به آن بفرستیم. (SQLDataAdaptor)
  • مرحله 3: داده ها از سرور به سمت کلاینت آورده شود. (DataSet)

 

 

3. ابتدا در قسمت using ها در سی شارپ، using زیر را اضافه می کنیم تا بتوانیم با sql ارتباط برقرار کنیم.

6gdggo2ar6fuld9zb1x3.png

 

4. سپس در load فرم، کدهای زیر را می نویسیم(برای اینکار کافیست بروی فرم، دوبار کلیک کنیم، تا این event فراخوانی شود.)

 

t2qybba0g94czyntmznf.png

 

توضیحات کد بالا:

 

  • خط های 1 و 2 برای ایجاد ارتباط با پایگاه داده است.
  • خط 3 برای ارسال تقاضا به سمت sql server
  • خط 4 و 5 برای برگرداندن داده ها از سمت سرور به کلاینت است.

 

خط 1. یک شی از کلاس SQLConnection ایجاد می کند.

 

خط 2. رشته اتصال است که در آن

  • data source: نام کامپیوتر سرور است (در اینجا سرور و کلاینت بروی یک کامپیوتر است)
  • initial catalog: نام پایگاه داده است. (در مثال ما projectDB)
  • integrated security: اگر ویندوزی وصل شویم، true قرار می دهیم.

 

خط 3. یک شی از کلاس SQLDataAdaptor ایجاد می کنیم. این شی، دو مقدار می گیرد: رشته query و اتصال .

 

 

  • query در اینجا به اینصورت است:Select * from Tstudent یعنی همه فیلدهای را از جدول Tstudent انتخاب کن. با استفاده از con نیز به sql server متصل شدیم.

 

خط 4. یک شی از کلاس DataSet ایجاد می کنیم. در واقع یک ظرف خالی است که قرار است با داده های sql پر شود.

 

خط 5. بدلیل اینکه میخواهیم اطلاعات نمایش داشته باشیم از Fill استفاده می کنیم، می گوییم که dsa (همان ظرف خالی) را با داده های جدول Tstudent پر کن.

 

خط 6. ممکن است نخواهیم که همه فیلدهای موجود در جدول sql به کاربر نشان داده شود، با این خط می گوییم که DataGridview بصورت اتوماتیک پر نشود. در واقع خودمان تعیین کنیم که کدام فیلدها را به کاربر نشان دهد.

 

خط 7. در این خط می گوییم که dataGridView از کجا پر شود.

سفارشی کردن DataGridView:

1. ابتدا بروی DataGridView راست کلیک کرده و گزینه edit columns را انتخاب می کنیم.

 

2. در پنجره باز شده دکمه add را کلیک کرده و نام و عنوان هر ستون را می نویسیم. name حتما باید بصورت لاتین باشد ولی heather text می تواند فارسی نیز باشد. بعد از مشخص کردن هر ستون، دکمه add را می زنیم.

 

مثلا ما ستونهایی با نام های "نام، نام خانوادگی، جنسیت، معدل و شهر " ایجاد کردیم. سپس دکمه cancel را می زنیم و ok می کنیم. به این ترتیب ستونها نام گذاری می شود.

 

nc9eiiqrodo0jxvdk86j.png

 

3. حال برای اینکه بگوییم این ستونها از کجا پر شوند، دو باره باید بروی DataGridView راست کلیک کرده، edit culomns را انتخاب کرده و بروی هر کدام از نام ستونها کلیک کرده (مثلا نام)، در پنجره سمت راست، خاصیت DataPropertiesName را مساوی نام ستونی از جدول Tstudent قرار دهیم که قرار است با آن پر شود.

 

مثلا ما می خواهیم ستون نام، با مقادیر فیلد name در sql server پر شود یا نام خانوادگی با فیلد family پر شود. برای همه ستونها مشخص می کنیم.

 

6911a8p411vclrn268.png

نتیجه اجرای برنامه فوق:

 

ما در برنامه بالا، بغیر از فیلد ID بقیه فیلدها را در dataGridview نمایش دادیم، در ضمن، بدلیل اینکه فارسی نویسی داشتیم، خاصیت RighttoLeft مربوط به dataGridview را مساوی true قرار دادیم.

 

نتیجه اجرای برنامه سی شارپ بصورت زیر است.

 

 

p25mjrp2ym6j9demzol0.png

لینک به دیدگاه

جلسه 19

دستور Insert

دومین query مهم در sql server، دستور insert است که برای افزودن رکورد به جدول استفاده می شود. بدین منظور بصورت زیر عمل می کنیم:

 

1. ابتدا یک فرم ایجاد می کنیم. برای ایجاد فرم، در حالت design در پنجره Solution Explorer بروی نام پروژه راست کلیک کرده، add، windows form application را انتخاب کرده، در پنجره باز شده از سمت چپ windows forms و سپس windows form را در سمت راست انتخاب کرده و add می کنیم. به این صورت یک فرم اضافه می شود.

 

2. برای اینکه فرم مورد نظر، بعنوان فرم اولیه نمایش داده شود، در solution Explorer، بروی program.cs دوبار کلیک کرده و form1 در تابع static void main()، خط سوم یعنی application.run(new form1()) را به form2 تغییر می دهیم. به اینصورت با اجرای برنامه، فرم دوم اجرا می شود.

 

2qopw9xqcxbvo678os0.png

 

3. همانند شکل زیر 5 عدد label، 4 عدد textbox، 2 عدد radiobutton و یک button به فرم اضافه کرده و خاصیت name مربوط به textbox ها را مانند شکل زیر و خاصیت text مربوط به label ها را مانند شکل زیر تغییر دهید.

 

0uvltsa2ezeghrp1k5u.png

 

4. ابتدا باید سرباره System.Data.SqlClient را به سرباره های موجود اضافه کنیم.

6gdggo2ar6fuld9zb1x3.png

5. سپس کدهای زیر را در رویداد کلیک دکمه button می نویسیم. برای فراخوانی رویداد کلیک، کافیست بروی دکمه button دوبار کلیک کنیم.

 

y27pfjwthr88y4537vs6.png

 

توضیح کد بالا

1. این خط کدها برای ایجاد ارتباط با sql server بکار می رود. همانطور که در جلسه پیش توضیح دادیم، ابتدا یک شی از کلاس sqlconnection تعریف کرده و سپس رشته اتصال را مانند جلسه پیش تعریف می کنیم.

 

2. همانطور که در جلسه پیش دیدم، در صورتی که نمایش اطلاعات یا جستجو داشته باشیم، از SqlDataAdaptor استفاده می کنیم. ولی برای ثبت، ویرایش و حذف اطلاعات از SqlCommand استفاده می شود. ابتدا یک شی با نام cmd از کلاس SqlCommand تعریف کرده و با استفاده از new به آن مقدار می دهیم.

 

در اینجا می خواهیم داده هایی را به جدول اضافه کنیم پس بصورت زیر عمل می کنیم. یعنی ابتدا کلمه کلیدی Insert into سپس نام جدول، نام فیلدهای مورد نیاز و سپس متغیرهای نظیر نام فیلدها و رشته اتصال به پایگاه داده (con)

 

9dikh9axwhp1ipmse6th.png

 

رشته query باید داخل دابل کوتیشن گذاشته شود. علامت @ که قبل از insert است بخطار اینست که میخواستیم کدها در دو خط شکسته شود. اگر کدها را در یک خط می نویسید نیاز به آن نیست. اسم متغیرها، دلخواه است که در خطهای بعدی با متن های موجود در textbox ها مقدار دهی می شود.

 

3. بدلیل اینکه query در سی شارپ نوشته شده، نوع دستور حالت text می شود.

 

4. در این مرحله، پارامترهایی که در دستورات 2 استفاده کردیم را باید مقدار دهی کنیم. این مقادیر از textbox ها و radiobutton گرفته می شود. برای اینکار اسم پارامتر را داخل دابل کوتیشن نوشته، سپس خاصیت text مربوط به textbox ها معرفی می شود.

 

نکته مهم:

دقت کنید که فیلد gender بوسیله radiobutton مربوط به زن که با نام rdnwoman است، تکمیل شود. برای اینکار کافیست که در صورتی که این radiobutton انتخاب شده باشد (یعنی cheched آن true باشد)، مقدار gender در جدول sql مساوی با true قرار بگیرد. همانطور که در شکل با کادر آبی مشخص شده، باید خاصیت checked این radiobutton به پارامتر فرستاده شود.

 

5. برای دستورات ثبت، ویرایش و حذف باید ابتدا اتصال به پایگاه داده باز شود.

 

6. سپس از دستور ExecuteNonQuery استفاده شود.

 

7. سپس اتصال بسته شود.

 

8. در آخر یک دستور messagebox.show می گذاریم که در صورتی که اطلاعات بدرستی در پایگاه داده ثبت شد، پیامی به کاربر نشان دهد.

 

اجرای برنامه:

در صورتیکه برنامه را اجرا کنیم و مقادیری به textbox ها بدهیم و دکمه ثبت اطلاعات را بزنیم، این اطلاعات به جدول tstudent اضافه می شود و پیامی مبنی بر ثبت اطلاعات به ما نشان داده می شود. این رکورد را می توانیم در sql server ملاحظه کنیم یا فرم جلسه 18 را اجرا کنیم و رکورد جدید را ببینیم.

 

اجرای برنامه سی شارپ:

 

ks08ypd7nuajxq02947.png

 

رکورد ثبت شده در sql server:

 

44zt0blbp3y9t4jtgy.png

لینک به دیدگاه

جلسه 20

دستور Delete

سومین query، دستور Delete است که در این پست به آن می پردازیم. در این پست می خواهیم به فرم جلسه 18 یک Button با نام Delete اضافه کنیم و هر ردیف که انتخاب می شود و دکمه delete زده می شود، آن ردیف هم از dataGridView و هم از پایگاه داده پاک شود. برای اینکار بصورت زیر عمل می کنیم:

 

1. ابتدا یک Button به فرم اضافه می کنیم و از مرحله 3 جلسه 19، فرم 1 را بعنوان فرم اول قرار می دهیم . سپس رویداد کلیک آن را فراخوانی می کنیم(یعنی بر روی دکمه دابل کلیک می کنیم)

 

2. قبل از هر کار، دو خط کد زیر را از تابع form_load که در جلسه 18 استفاده کردیم را بیرون از توابع انتقال می دهیم. علت اینکار اینست که می خواهیم در تابع Button1_click نیز از con و ds استفاده کنیم.

 

nlfugiyb93jel3zhjlm8.png

 

3. سپس کدهای زیر را در داخل رویداد کلیک دکمه button1 می نویسیم:

 

ab33zm6dmzqcytvv3eg3.png

توضیحات کد:

1. این خط، کوری را تعریف می کند. صورت کلی query مربوط به Delete به صورت زیر است:

hnf6ecsowvdprys7ewlf.png

 

2. بدلیل این که query در سی شارپ نوشته شده، نوع command از نوع text است.

 

3. در اینجا باید ببینیم که کاربر کدام سطر را انتخاب کرده است. پس از دستور DataRowView استفاده می کنیم. curent به سطر جاری اشاره می کند. علت اینکه قبل از this از DataRowView استفاده شده است اینست که اگر آن را نگذاریم، خطای convert می دهد چون باید دو طرف مساوی از یک نوع باشد. پس با DataRowView نوع سمت راست را به سمت چپ تبدیل می کنیم.

 

4. حال باید ببینیم که سطر جاری که انتخاب شده، Id آن چند است. ابتدا یک متغیر از نوع int تعریف کرده و شماره سطر برگردانده می شود. علت int قبل از drv نیز برای تبدیل سمت راست به چپ است.

 

5. حال باید پارامتر id@ مقداردهی شود. شماره id سطر جاری در rowid قرار دارد که با این خط دستور، مقدار id@ برابر rowid می شود.

 

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

 

7. همانطور که قبل نیز گفتیم، برای دستورات insert، delete و update باید این سه خط دستور نوشته شود. یعنی ابتدا پایگاه داده باز شود، دستورات query اجرا شود و در آخر پایگاه داده بسته شود.

 

 

اجرای برنامه

با اجرای برنامه فوق و انتخاب یک سطر و زدن دکمه delete، سطر جاری هم از dataGridView و هم از پایگاه داده پاک می شود.

 

اجرای برنامه سی شارپ:

qi1ho0f8vswsnyxym.png

 

مشاهده حذف رکورد در sql server :

 

9n8nu2na2gjl5c1nyatt.png

لینک به دیدگاه

جلسه 21:

پرسش از کاربر، قبل از حذف رکورد

 

این پست، در تکمیل پست قبلیست. اگه در نرم افزارهای مختلف نگاه کنید، می بینید که برای حذف کردن، قبل از اینکه آنرا پاک کند از کاربر سوالی مبنی بر اطمینان از حذف پرسیده میشه. ما هم می خواهیم قبل از اینکه رکوردی حذف شود، از کاربر بپرسد که آیا از حذف مطمئن هست یا خیر. به این منظور، یک تابع برای messagebox تعریف می کنیم و سپس دکمه انتخابی توسط کاربر، بررسی می شود و در صورتی که yes انتخاب شده بود، رکورد حذف می شود.

 

مراحل کار بصورت کدهای زیر است:

 

1. یک تابع برای جعبه پیام تعریف می کنیم تا در صورتی که کاربر دکمه yes را زد، true را برگرداند و درغیراینصورت false را برگرداند.

 

2. سپس در تابع اصلی، بررسی می کنیم که در صورتیکه دکمه yes را زد، رکورد را حذف کند.

 

توضیحات کد:

i30vpj204s3uih4b56cw.png

 

1. ابتدا یک تابع برای messagebox تعریف می کنیم: نام این تابع را msgask گذاشتیم که از نوع bool است یعنی این تابع، true یا false برمیگرداند. همچنین این تابع تنها یک پارامتر دارد که از نوع string است و نام آن را msg تعریف کردیم که در واقع متن پیامی است که باید به کاربر نشان داده شود.

 

2. با دستور if بررسی می کنیم که آیا دکمه انتخابی توسط کاربر، yes است یا خیر. توضیحات

 

  • @ : همانطور که قبلا گفتیم، در صورتی که خواستیم کدها را بشکنیم و در چند خط نمایش دهیم باید قبل آن علامت @ گذاشته شود. شما می توانید کدها را در یک خط نوشته و این علامت را نگذارید.

 

  • msg: اسم پارامتر است که همانطور که گفتیم متنی است که به کاربر نشان داده می شود.

 

  • "Question": عنوان جعبه پیام است.

 

  • MessageBoxButtons.YesNo: این کد مشخص می کند که جعبه پیام شامل دو دکمه yes و no باشد.

 

  • MessageBoxIcon.Question: نوع آیکن جعبه پیام را مشخص می کند که اینجا سوالی است.

 

  • MessageBoxDefaultButton.Button2: مشخص می کند که کدام دکمه پیش فرض انتخاب شده باشد که اینجا دکمه no انتخاب شده است.

 

  • DialogResult.Yes== : جعبه پیام در واقع یک dialogresult است، با این قسمت کد، بررسی می کند که آیا دکمه انتخابی yes است یا خیر.

 

3. اگر دکمه انتخابی yes باشد، تابع جواب true برمی گرداند.

 

4. در غیراینصورت تابع جواب false را بر می گرداند.

 

5. حال در رویداد کلیک دکمه delete با دستور if بررسی می کنیم و در صورتی که yes انتخاب شده بود، کدهای جلسه 20 انجام می شود و رکورد از dataGrideView و پایگاه داده حذف می شود که خطهای آن در جلسه 20 بطور کامل توضیح داده شده است.

 

6. همان دستورات جلسه 20 است که در صورتی که کاربر دکمه yes را انتخاب کرده باشد، اجرا می شود.

 

نکته :

برای اینکه رکورد خالی را نشان ندهد، خاصیت AllowUserAddRows را false می کنیم.

 

اجرای برنامه:

 

vq8opqfl4thg93e4k8q.png

لینک به دیدگاه

جلسه 22:

جستجو براساس نام

 

در این پست، جستجو براساس نام را بررسی می کنیم.

 

مراحل کار بصورت زیر است:

1. ابتدا یک فرم جدید بنام frmsearch ایجاد می کنیم و یک textbox و یک label و یک button اضافه می کنیم و مانند شکل زیر مقدار دهی می کنیم.

 

2. همچنین dataGridView رو اضافه می کنیم و تنظمیات آن را همانطور که در جلسه 18 گفتیم، انجام می دهیم(یا می توانیم همان DataGrideView را از جلسه 18 کپی و در این فرم، paste کنیم)

 

yltrp9l23qxyv8i6nqbq.png

 

3. سپس کدهای زیر را در رویداد کلیک button1 می نویسیم:

 

y9b9h3hpw3yw970r8xy5.png

 

توضیحات کد:

 

1. ابتدا یک شی از کلاس sqlconnection و dataset تعریف می کنیم. این متغیرها را قبل از تابع تعریف کردیم تا بتوانیم در توابع مختلف استفاده کنیم.

 

2. سپس یک متغیر از نوع رشته تعریف می کنیم تا متن query را در آن بنویسیم و استفاده از آن راحت تر باشد. این متغیر را نیز بیرون از توابع تعریف می کنیم.

 

3. متن query را می نویسیم. این خط query می گوید که همه فیلدها جدول Tstudent که فیلد name آن برابر پارامتر name@ است را انتخاب کند. پارامتر name@ را بعد مقدار دهی می کنیم.

 

4. رشته اتصال را تعریف می کنیم.

 

5. بدلیل اینکه دستور select داریم، باید یک شی از کلاس sqlDataAdaptor تعریف کنیم تا درخواست ها از پایگاه داده در آن قرار گیرد.

 

6. بدلیل اینکه دستور query همینجا نوشته شده، نوع دستور از نوع text می شود.

 

7. با این خط دستور پارامتر name@ مقداردهی می شود. این پارامتر با خاصیت text مربوط به textbox مقداردهی می شود.

 

8. با این خط دستور sda که بعنوان ظرفی است که داده ها را از پایگاه داده می آورد، پر می شود.

 

9. همانطور که در پستهای قبلی هم گفته شد، در صورتی که خاصیت AutoGenaratecoulmn مربوط به DataGrideView را false می کنیم تا بطور اتوماتیک تکمیل نشود. اگه این خط را ننویسیم، حتی اگر dataGrideView را سفارشی کنیم، باز هم همه فیلدها را نمایش می دهد.

 

10. با این خط دستور می گوییم که datagrideview داده هایش را از کجا پیدا کند و براساس query پر می شود.

 

نکته :

برای اینکه رکورد خالی را نشان ندهد، خاصیت AllowUserAddRows را false می کنیم.

 

اجرای برنامه:

 

30v6hoaaeg4gwp2jrf9j.png

لینک به دیدگاه
جلسه 2

تعریف توابع

توابع در محدوده کلاسها ایجاد می شود و همانطور که گفته شد در هر پروژه بطور پیش فرض، یک تابع بنام form1 وجود دارد.

در #C دو تابع داریم:

 

1. توابعی که خروجی ندارند و صرفا یک کار انجام می دهند.

(پارامتر ورودی) نام تابع void سطح دسترسی

}

دستورات

{

 

2. توابعی که خروجی دارند.

(پارامتر ورودی) نام تابع نوع خروجی سطح دسترسی

}

دستورات

{

 

مثال1:

تابعی بنویسید که موقعیت شروع یک رشته را در رشته دیگر برگرداند. (مثلا موقعیت شروع reza در alireza، سه است. دقت کنید که موقعیت از صفر شروع می شود)

جواب مثال 1:

ابتدا یک کلاس تعریف می کنیم. برای ایجاد کلاس، روی نام پروژه در پنجره solution explorer راست کلیک-> add اسم کلاس را می نویسیم (مثلا lib.cs).

(کلاس form1 دارای یک ظاهری بنام فرم است ولی کلاسی که ایجاد می کنیم ظاهری ندارد.)

 

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

 

ndf869a6rqmk3pzoagiu.jpg

 

تعریف متغیر: برای تعریف متغیر ابتدا نوع متغیر و سپس نام متغیر را می نویسیم. مثال: string s

 

()IndexOf: متدی آماده است که string (رشته) می گیرد و موقعیت رشته دریافتی را در رشته به ما می دهد.

بعد از نوشتن تابع، باید آنرا فراخوانی کنیم.

 

فراخوانی تابع

به این منظور ابتدا form1 را در پنجره solution explorer دبل کلیک کرده و یک کنترلر label و دو کنترلر textbox و یک کنترلر button از پنجره toolbox اضافه می کنیم.

 

 

5am3wytosw3w5ao6oqo2.jpg

 

هر کنترلر، یکسری خصوصیات دارد که در پنجره properties قرار دارند. در ادامه خصوصیات مهم چهار کنترلر استفاده شده، بیان می شود. هرکدام از کنترلرها را که انتخاب کنیم می توانیم خصوصیات آنرا پنجره properties تغییر دهیم.

 

Label: این کنترلر شامل متنی است که در صفحه نمایش داده می شود. برای نوشتن متن مورد نظر، در پنجره properties، خصوصیت Text آنرا تغییر می دهیم. برای نوشتن متن فارسی یا متن فارسی و انگلیسی باید خصوصیت RightToleft آنرا برابر Yes قرار دهیم تا متن، بهم ریخته نشود.

 

Textbox: این کنترلر برای وارد کردن مقدار یا کاراکتر توسط کاربر است. در کد نویسی با نام (name) کنترلرها سروکار داریم. برای نامگذاری دو نکته مهم است:1. فارسی نباشد. 2. هدفمند باشد به اینصورت که قسمت اول نام مخفف نوع کنترلر و قسمت دوم مشخص کننده نام کنترلر باشد مثلا برای کنترلرهای textbox مربوط به رشته جستجو txts و برای textbox مربوط به عبارت جستجو شده txtstr قرار می دهیم.

 

Botton: کنترلی است که با کلیک بروی آن عملی انجام می شود. یک کنترلر botton به فرم اضافه کرده و خصوصیت name آنرا به btnsearch و خصوصیت text آنرا به جستحو تغییر می دهیم.

 

می خواهیم وقتی روی دکمه جستجو کلیک کردیم تابع findchar که قبلا تعریف کردیم فراخوانی شود. یعنی در event کلیک btnsearch تابع findchar فراخوانی شود. به این منظور می توانیم روی دکمه جستجو دوبار کلیک کنیم و یا اینکه در قسمت properties مربوط به دکمه جستجو، علامت ساعقه را کلیک کنیم تا event های مربوط به button نشان داده شود و سپس روبروی event مربوط به click دوبار کلیک کنیم.

 

نکته مهم :

ما دو کلاس داریم که فرم مربوط به کلاس form1 است و کلیک btnsearch در آن قرار دارد و یک کلاس lib که تابع findchar در آن تعریف شده است. برای فراخوانی یک تابع در یک کلاس در کلاس دیگر باید علاوه بر اینکه تابع را public تعریف می کنیم، همچنین سراسری هم تعریف شود به این منظور از کلمه static در تعریف تابع در کلاس lib استفاده می کنیم. در غیر اینصورت قادر به فراخوانی کلاس lib در کلاس form1 نیستیم.

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

برای فراخوانی تابع findchar در کلاس form1 به اینصورت عمل می کنیم:

9adenyxbppgsu6tqh2qc.jpg

برای فراخوانی تابع بصورت زیر عمل می کنیم:

 

(ورودی ها)نام تابع . نام کلاس. Namespace = نام متغیر نوع متغیر

 

 

Messagebox: پیغامی را به کاربر نشان می دهد و این پیغام از نوع string(رشته) است.

()ToString: عدد را به رشته تبدیل می کند. علت استفاده اینست که messagebox باید رشته باشد.

 

اجرای برنامه:

برای اجرای برنامه کلیک F6 را کلیک می کنیم. با اینکار برنامه شروع به کامپایل می کند. حال اگر در textbox اول رشته ایی نوشته (مانند reza) و در textbox دوم رشته دیگر مثلا alireza، در پنجره پیغام موقعیت شروع ali در alireza نشان داده می شود. شروع موقعیت در #C از صفر است. بنابراین عدد 0 نشان داده می شود.

 

 

ztp37vp8jl6n1aay209d.jpg

طریقه چسباندن رشته به متغیر در message box:

اگر بخواهیم علاوه بر موقعیت رشته در رشته دیگر، متنی نیز در پنجره پیغام به کاربر نشان داده شود، نوشته هایی که به صورت ثابت هستند و به همان شکل باید به کاربر نشان داده شود را در دابل کوتیشین (" ") قرار می دهیم.

 

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

نکته: به دلیل آنکه به رشته چسبیده شده است نیاز به تابع Tostring نیست.

 

 

hynyym3yqbdank61debl.jpg

 

اگر بخواهیم موقعیت را از یک نشان دهد بدلیل اینکه اولویت پرانتز از همه بیشتر است، می توانیم بصورت زیر عمل کنیم:

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

سلام و تشکر بابت آموزش خوبی که شروع کردین.

یک نکته :

در قسمتی که در مورد Textbox ها توضیح دادین، گفتین که خاصیت Name اونا رو txts و txtstr بذاریم ولی در قسمت کد دهی به btnsearch از txtstr1 و txtstr2 استفاده شده!!!!

یک سئوال :

من زمانی که می خوام پروژه رو Run کنم Build failed میده. اینجوری هم که در پس زمینه تاریک ذهنم خاطرم هست، قبلاً مقداری با تنظیمات Visual Studio ور رفته بودم. شما میتونید کمک کنید تا این مشکل رو حل کنم. در غیر اینصورت به گمانم می بایست از اول برنامه رو نصب کنم.

موفق باشید

لینک به دیدگاه
سلام و تشکر بابت آموزش خوبی که شروع کردین.

یک نکته :

در قسمتی که در مورد Textbox ها توضیح دادین، گفتین که خاصیت Name اونا رو txts و txtstr بذاریم ولی در قسمت کد دهی به btnsearch از txtstr1 و txtstr2 استفاده شده!!!!

یک سئوال :

من زمانی که می خوام پروژه رو Run کنم Build failed میده. اینجوری هم که در پس زمینه تاریک ذهنم خاطرم هست، قبلاً مقداری با تنظیمات Visual Studio ور رفته بودم. شما میتونید کمک کنید تا این مشکل رو حل کنم. در غیر اینصورت به گمانم می بایست از اول برنامه رو نصب کنم.

موفق باشید

سلام خیلی ممنون از توجهتون:icon_gol:

 

من خیلی بی دقتم ببخشید :icon_redface:

 

مرسی که گفتین، درستش کردم. :icon_gol: اگه در پستهای بعدی هم اشکالی دیدین خوشحال میشم بهم بگین تا درستش کنم :w16:

 

راستش اطلاعی ندارم شرمنده.

لینک به دیدگاه

جلسه 23

 

ایجاد Navigator:

 

قبل از اینکه آخرین دستور sql (دستور Update) را بررسی کنیم، میخواهیم در فرم جستجو (جلسه 22)، چند تا textbox بگذاریم، تا هر ردیف DataGrideView را انتخاب می کنیم، در textbox های پایین نشان دهد.

 

به این منظور:

 

1. ابتدا مانند شکل زیر، چندین label و textbox می گذاریم و بصورت شکل زیر نامگذاری می کنیم.

 

vog53a37zgrb3qmjbh.png

 

2. سپس کدهای زیر را وارد می کنیم:

 

 

5m1qknjd4a92kh9hn60y.png

توضیحات کد:

 

1. این قسمت از کدها، همان کدهای جستجو است که در جلسه 22 توضیح دادیم.

 

2. یک تابع برای پر کردن textbox ها می نویسیم. صورت کلی توابع به این صورت است که ابتدا کلمه کلیدی private را می نویسیم(البته در صورتی که در این کلاس استفاده شود). سپس نوع مقدار بازگشتی را مشخص می کنیم، در صورتی که تابع مقداری را بر نگرداند، از کلمه void استفاده می کنیم. اینجا نیز به خاطر اینکه فقط می خواهیم متن textbox ها عوض شود و مقداری به تابع اصلی برنمی گردد، پس از نوع void است. سپس نام تابع را می نویسیم که دلخواه است و ما filltxt گذاشتیم. در داخل پرانتز نیز ورودی ها را مشخص می کنیم. به اینصورت که ابتدا نوع ورودی و سپس نام ورودی را مشخص می کنیم. اگه چند تا ورودی داشتیم، با کاما جدا می کنیم و نوع هر کدام را جداگانه می نویسیم.

 

3. یک شی از DataRow تعریف می کنیم که با توجه به کوری، داده های جدول در dr قرار بگیرند.

 

4. textbox ها با استفاده از مقادیر متناظر پر می شود.

 

5. برای اینکه بتونیم تیک radiobutton ها رو مشخص کنیم، از دستور if استفاده می کنیم. اگر true باشد یعنی جنیست زن است پس باید تیک rdbwoman خورده شود، درغیراینصورت rdbman تیک می خورد.

 

6. سپس با استفاده از متد selectionchangeed بررسی می کنیم، در صورتی که کاربر، ردیف دیگری را انتخاب کند، این متد فراخوانی می شود.

 

7. یک متغیر از نوع int تعریف می کنیم تا ایندکس ردیفی که انتخاب می شود را نگه دارد.

 

8. سپس تابع Filltxt را با مقدار ایندکس ردیف انتخابی فراخوانی می کند.

 

اجرای برنامه:

 

 

 

fs474vtjhldbsea5qt.png

لینک به دیدگاه

جلسه 24

دستور Update:

 

آخرین query که به آن می پردازیم، دستور update است که با آن می توانیم اطلاعات پایگاه داده را ویرایش کنیم. به این منظور بصورت زیر عمل می کنیم:

 

1. ابتدا یک button به فرم جستجوی جلسه 23 اضافه می کنیم.

 

2. سپس کدهای زیر را در رویداد کلیک button2 که همان دکمه update است وارد می کنیم.

 

bwx17aej3dl7t5rb4w2a.png

توضیحات کد:

 

1. یک شی از کلاس DataRowview تعریف کرده که در واقع id مربوط به سطر جاری را برمیگرداند.

 

2. یک شی از کلاس sqlcommand ایجاد می کنیم. کوری که مربوط به آپدیت است را در آن می نویسیم. ابتدا کلمه update را نوشته، سپس نام جدول، کلمه set و بعد از نام فیلدهای جدول را مساوی با مقدار پارامتر می گذاریم. ولی باید بگوییم که کدام رکورد جدول باید به روز رسانی شود. پس می گوییم جاییکه (where) فیلد id مساوی با id ردیف انتخابی است را به روز رسانی کن.

 

3. سپس پارامترهایی که برای فیلدهای جدول مشخص کردیم را با textbox ها مقداردهی می کنیم. تنها برای جنیست باید خاصیت checked مربوط به rdbwoman را قرار دهیم تا در صورتی که انتخاب شده باشد، مقدار true در پایگاه داده ثبت شود.

 

4. همانطور که قبلا گفته شد، برای به روز رسانی، اضافه کردن و حذف باید این سه خط کد نوشته شود تا query اجرا شود.

 

5. یک messagebox به کاربر نشان می دهیم که از آپدیت اطلاعات اطمینان حاصل شود.

 

6. برای اینکه همان موقع که ویرایش انجام می دهیم، در DataGridView بتوان به روز رسانی را دید، این خط دستورات را می نویسیم که در واقع برعکس مرحله 4 است.

 

 

نتیجه اجرا:

 

 

gxetprm54v5fn8mewahr.jpg

 

پ.ن: خب اینم از چهار دستور اصلی:ws37:، راستش هدف اصلی این تاپیک این بود که یاد بگیریم چطوری سی شارپ با sql ارتباط برقرار کنه، امیدوارم که مفید باشه. مطمئنن اشکالات تایپی زیادی داره و توضیحاتم ناقصه، امیدوارم ببخشین.

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

لینک به دیدگاه
  • 2 ماه بعد...
  • 1 سال بعد...

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

لینک به دیدگاه
  • 1 سال بعد...

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...