PDA

نسخه کامل مشاهده نسخه کامل : در این مقاله نحوه جستجوی ساده در بانک اطلاعاتی Sql Sever را آموزش داده ام



ahmadirad1365
07-10-2008, 23:01
جستجو در بانک اطلاعاتي :

يکي از پر کاربرد ترين بخش هاي هر سايتي ، بخش جستجو سايت مي باشد.

جستجو در سايت بدليل کاهش زمان کاربر در رسيدن به هدف بسيار مهم است ، از آنجايي که امروزه قريب به اتفاق سايت هاي پويا از بانک هاي اطلاعاتي استفاده مي کنند و مطالب و محتويات سايت را داخل اين بانک هاي اطلاعاتي قرار ميدهند مبحث جستجو در بانک هاي اطلاعاتي اهميت قابل توجهي پيدا کرده است.

خوب فرض کنيد يک ثبت نام اينترنتي انجام داده ايد! و از هر کاربر 1 سوال در مورد علايق او پرسيده ايد و اطلاعات زير را ثبت کرده ايد !

1- نام و نام خانوادگي

2- علايق شخص

و اين اطلاعات را داخل يک جدول بانک اطلاعاتي SQL Server 2005 به نام Search ذخيره کرده ايد ! و قصد داريد از اطلاعات جمع آوري کرده استفاده کنيد .

بنابراين جدول بانک اطلاعاتي شما داراي 3 ستون به شرح زير مي باشد :

1- UserID : کد کاربر ( که بصورت خود کار داده مي شود )

2- UserFamily : نام و نام خانوادگي کاربر

3- UserAnswer : پاسخ کاربر به سوال پرسيده شده

خوب اسم اين جدول را TblUSers مي گذاريم .

بنابراين اکنون يک ديتابيس به نام Search به همراه يک جدول به نام TblUsers در اختيار داريم :

خوب حالا چند رکورد براي تست وارد اين جدول کنيد !



جستجو در بانک اطلاعاتي چيزي نيست جز يک عمل Select که به همراه يک شرط و کليد واژه Like به کار مي رود .

فرض کنيد مي خواهيد تمامي رکورد هاي جدول بانک اطلاعاتي را فراخواني کنيد به شرطي که نام کاربر “rad” باشد ! براي اينکار دستور Sql زير را مي نوشتيم :


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

و از کاراکتر N به منظور شناسايي کارکتر هاي Unicode استفاده مي کرديم.

عمل فوق تنها رکوردي را براي ما بر ميگرداند که ستون UserFamily در آن دقيقا "rad" باشد و اگر داخل بانک رکوردي به نام "ahmadi rad" وجود داشته باشد دستور فوق آنرا بر نمي گرداند.

بدين منظور است که از کليد واژه Like به همراه کارکتر هاي % استفاده مي کنيم :


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

کاراکتر % در سمت چپ و راست کلمه "rad" به SQL Server مي گويد که کاربر قصد جستجوي کلمه دلشاد را دارد و چون هم قبل و هم بعد آن % وجود دارد بدين معني است که ما اهميتي نمي دهيم که قبل و بعد از کلمه دلشاد چه کاراکتر هايي موجود است فقط کافيست آن رکورد کلمه "دلشاد" را شامل باشد .

نکته جالب اينجاست که اگر از کاراکتر هاي % استفاده نکنيد ، کليد واژه Like دقيقا مانند عملگر "=" عمل خواهد کرد ( با توجه به گفته بالا کاملا منطقي به نظر ميرسد )

با توجه به نکات فوق قصد داريم يک جستجو در اين جدول توسط Asp.NET و به زبان C# انجام دهيم .

براي اينکار ابتدا نرم افزار ويژوال استوديو دات نت را باز کرده و يک پروژه جديد به نام Search مي سازيم.

داخل صفحه Default.aspx شده و يک کنترل Gridview به نام Grv_Search، يک Textboxبه نام Txt_Search و يک باتن به نام Btn_Submit به صفحه اضافه مي کنيم.

وارد CodeBehind ابتدا کتابخانه هاي زير را پيوست مي کنيم :

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

ميخواهيم يک جستجوي ساده بنويسيم به اين صورت که کاربر کلمه کليدي خود را داخل TextBox وارد کرده و پس از اينکه کليد جستجو را فشرد تمامي رکورد هايي که شامل کلمه کليدي هستند داخل GridView نمايش مي يابند .
بدين منظور زير روال BindGridview را بصورت زير تعريف مي کنيم :

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

در زير روال فوق پس از اتصال به بانک و اجراي دستور دلخواه که توضيح دادم ، Gridview را بايند مي کنيم .

در اينجا من از ExecuteReader بصورت مستقيم استفاده کردم ، شما ميتوانيد از ديتاست ، ObjectDataSource و... استفاده کنيد !

دستور Select را طوري نوشتم که داخل ستون UserAnswer هر کلمه کليدي را جستجو نمايد . کلمه کليدي نيز به اين دستور بصورت پارامتر @KeyWord پاس مي شود.

خوب در روال مربوط به رويداد کليک شدن Btn_Submit به اين صورت مي نويسيم :


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


کار تمام است ميتوانيد جستجو را تست کنيد

اميد وارم به دردتون بخوره

نظر فراموش نشه تا زحمت نوشتن اين مطلب هم ضايع نشه!!!

Ultimator
08-10-2008, 01:46
ممنون دوست عزیز ..

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

به هر حال ممنون

Ship Storm
08-10-2008, 09:03
ممنون دوست عزیزم
فقط کاش میتونستید یک نمونه از برنامه که تکمیل شده و آماده کار کردن هستش رو آپلود میکردید تا با این قضایا بیشتر آشنا بشیم
با تشکر

ahmadirad1365
08-10-2008, 12:48
ممنون دوست عزیزم
فقط کاش میتونستید یک نمونه از برنامه که تکمیل شده و آماده کار کردن هستش رو آپلود میکردید تا با این قضایا بیشتر آشنا بشیم
با تشکر
یقینا اگه خودتون زحمت انجام مراحلو بکشید بهتر میفهمید و ماندگاریش هم بیشتره در ذهن.
اما چشم اگه تونستم فایل مربوطه رو میزارم:46:

rezagm
08-02-2010, 17:13
سلام ده علیچم . شوما چوجوری میتونید ها ولی منا نم تونمی .

کژتاب بیدید.

sam stormy
30-06-2012, 10:41
سلام من همین جستجو رو یجور دیگه نوشتم : دستور Select رو داخل Gridviwe گذاشتم جواب هم میده ولی اگه بخوام یکم پیشرفته ش کنم مثلا جستجو بر اساس نام نام خانوادگی و نام کاربری اگه هر3 رو طرف وارد کرد 1 نتیجه بده اگه فقط یکی از اینا رو وارد کرد هم بازم نتیجه بده حالا ممکنه نتیجه چندتا باشه
ممنون میشم کمکم کنید

2317
27-03-2013, 21:18
سلام منم این ها رو وارد کردم ولی جواب نمی ده..
اینم برنامه من است دکمه که می زنیم چیزی پیدا نمی کنه لطفا راهنمایی فرمایید؟


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

RezaNrzdh
15-06-2013, 19:43
سلام.
query که نوشتید مشکل داره باید به این صورت باشه

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اما خب این سبک نوشتن خیلی اذیت میکنه.اول اینکه بعدا بخواین کانکشن استرینگ رو توی وبسایت تغییر بدید.باید یکی یکی تمام جاهایی که sqlconnection نوشتید رو بازنویسی کنید.دوم هم برمیگرده به خود کوئری..استفاده از like توی جستجو ها شاید برای رکورد های پایین جواب بده اما در رکورد های زیاد دچار مشکل میشه..که توصیه میشه از full text search ها استفاده بشه