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 به اين صورت مي نويسيم :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کار تمام است ميتوانيد جستجو را تست کنيد
اميد وارم به دردتون بخوره
نظر فراموش نشه تا زحمت نوشتن اين مطلب هم ضايع نشه!!!
يکي از پر کاربرد ترين بخش هاي هر سايتي ، بخش جستجو سايت مي باشد.
جستجو در سايت بدليل کاهش زمان کاربر در رسيدن به هدف بسيار مهم است ، از آنجايي که امروزه قريب به اتفاق سايت هاي پويا از بانک هاي اطلاعاتي استفاده مي کنند و مطالب و محتويات سايت را داخل اين بانک هاي اطلاعاتي قرار ميدهند مبحث جستجو در بانک هاي اطلاعاتي اهميت قابل توجهي پيدا کرده است.
خوب فرض کنيد يک ثبت نام اينترنتي انجام داده ايد! و از هر کاربر 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 به اين صورت مي نويسيم :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کار تمام است ميتوانيد جستجو را تست کنيد
اميد وارم به دردتون بخوره
نظر فراموش نشه تا زحمت نوشتن اين مطلب هم ضايع نشه!!!