در جلسه قبل با آموزش حذف در سی شارپ و همچنین افزودن آشنا شدید در این جلسه، هم قصد دارم تا دستور Select در سی شارپ را معرفی کنم.
با استفاده از دستور Select در جلسه قبلی توانستید اطلاعات دیتابیس را در گرید ویو نمایش دهید در این جلسه هم قصد داریم با همان دستور Select عملیات جستجو را انجام دهیم و سپس نتیجه را در همان گریدویو نمایش دهیم. پس بنابراین پروژه قبلی را باز کرده و یک TextBox به پروژه اضافه کنید یا یک پروژه جدید ایجاد کنید و کنترل های لازم را به پروژه اضافه کنید.
دیتابیس پروژه
دیتابیس این پروژه بشکل زیر می باشد.
- نام دیتابیس: db_user
- نام جدول User
- کلیداصلی UserId
- جستجو با نام کاربری
در این پروژه می خواهیم عملیات جستجو را با نام کاربری انجام دهیم. شما می توانید به جای آن هر فیلدی را در نظیر بگیرید، هچنین می توانید دو فیلد را همزمان در نظر بگیرید.
ارتباط با دیتابیس
قبل از اینکه وارد پروژه جستجو در سی شارپ شویم، در ابتدای کار می خواهیم با دیتابیس ارتباط برقرار کنیم برای چنین منظوری مراحل زیر را دنبال کنید:
۱٫کلیدهای ترکیبی Ctrl+Alt+S را فشار دهید تا پنجره Server Explorer واقع در منوی View باز شود. بشکل زیر
۲٫روی آیکون Connect To database کلیک کنید پنجره زیر ظاهر خواهد شد در این پنجره در بخش Server Name نام سرور را وارد کنید چون سرورما محلی است در آن قسمت localhost را وارد کنید و در بخش Select or enter a database name دیتابیس مورد نظر را انتخاب کنید ولی و روی TestConnection کلیک کنید.
وارد بخش Advanced در این پنجره شوید و قسمت مشخص شده با رنگ آبی را در تصویر زیر کپی کنید و آن نگه دارید تا برسیم به آن و استفاده کنیم.
برنامه نویسی پروژه
به پروژه برگشته و روی Textbox دابل کلیک کنید تا وارد رویداد TextChange آن شویم دستورات زیر را در آن قرار دهید.
در این پروژه به فضای نام زیر نیاز داریم آن در بالا قرار دهید
using System.Data.SqlClient; |
حال در رویداد TextChange تکست باکس دستورات زیر را می توانید قرار دهید. قسمت های مبهم را توضیح خواهم داد.
stringaddConn="Data Source=localhost;Initial Catalog=db_user;Integrated Security=True"; SqlConnection conn=newSqlConnection(addConn); |
در متغیر addConn مقداری که گفته بودم موقع ارتباط با دیتابیس کپی کنید قرارداده شده است. این در واقع آدرسی ایست که دیتابیس در آن سرور قراردارد می باشد.
حال کوئری مورد نظر برای جستجو بصورت زیر می باشد:
stringquery="SELECT * FROM [User] WHERE UserName LIKE '%' +@parametr+ '%'"; |
@parametr اشاره دارد به مقداری که قرار است در دیتابیس جستجو شود و این مقدار را از TextBox خواهیم گرفت.
در این دستور هم گفتیم که query ما را بردار و در آدرسی که دادم قرار بده.
SqlCommand cmd=newSqlCommand(query,conn); |
در دستور زیر گفتیم پارامتر ما از txtSearch گرفته خواهد شد.
cmd.Parameters.AddWithValue("@parametr",txtSearch.Text); |
ما برای اینکه بتوانیم اطلاعات دیتابیس را به گریدویو انتقال دهیم، باید اطلاعات دیتابیس را در DataTable قرار دهیم و سپس از DataTable به گرید ویو منتقل کنیم. و کلاس SqlCommand قادر نیست تا این کار را برای ما انجام دهد کلاسی که می توانید این کار را انجام دهد SqlDataAdapder می باشد بنابراین cmd را در SqlDataAdapter قرار می دهیم.
SqlDataAdapter sda=newSqlDataAdapter(cmd); DataTable dt=newDataTable(); |
با این دستور گفتیم آقای sda لطفاً دیتاتیبل ما را پر کن.
در دستور زیر گفتیم که کانکشن ما را باز کن و کوئری ما را در نهایت اجرا کن، سپس کانکشن را ببند.
conn.Open(); cmd.ExecuteScalar(); conn.Close(); |
حال اطلاعات دیتابیس در DataTable قرار دارد و ما کافی است تا dt را در DataSource گرید ویو قرار دهیم.
dataGridView1.DataSource=dt; |
کل سورس کد:
stringaddConn="Data Source=localhost;Initial Catalog=db_user;Integrated Security=True"; SqlConnection conn=newSqlConnection(addConn); stringquery="SELECT * FROM [User] WHERE UserName LIKE '%' +@parametr+ '%'"; SqlCommand cmd=newSqlCommand(query,conn); cmd.Parameters.AddWithValue("@parametr",txtSearch.Text); SqlDataAdapter sda=newSqlDataAdapter(cmd); DataTable dt=newDataTable(); sda.Fill(dt); conn.Open(); cmd.ExecuteScalar(); conn.Close(); dataGridView1.DataSource=dt; |
اگر با مشکلی روبرو شدید لطفاً سوال خود را مطرح کنید.
دانلود پروژه به همراه دیتابیس