مقاله های علمی و تخصصی

ASP

برای اجرا صفحات ASP به چه چیزی نیاز دارید؟

شاید این سوال برای شما پیش بیاید که اگر صفحات Server Side نظیر ASP، بر روی سرور اجرا می شوند، پس چگونه آنها را بر روی کامپیوتر خود اجرا نمائیم؟ مایکروسافت برای حل این مشکل، از IIS در ویندوزهای 2000,XP و PWS در ویندوزهای 98,ME استفاده می کند. این نرم افزارها به شما این اجازه را می دهند که در حقیقت، یک سرور مجازی بر روی کامپیوتر خود ایجاد نمایید.

PWS مخفف عبارت Personal Web Server و IIS هم مخفف  Internet Information Serviceمی باشد. البته شما مجبور نیستید که PWS  ویا IIS را برروی کامپیوتر خود نصب کنید. اگر شما از سیستم عامل Windows استفاده نمی کنیدو بطور مثال از سیتم عامل های Linux و یا Apple/Mac  استفاده می کنید میتوانید از Instant ASP و یا از Chili!ASP  استفاده کنید.

شما نمی توانید سورس کد های ASP را بوسیله انتخاب گزینه View Source در Browser مشاهده کنید، شما فقط خروجی فایل ASP را مشاهده مى‌کنید که HTML ساده است. زیرا که اسکریپت ها قبل از این که نتایج به Browser فرستاده شود بر روی سرور اجرا مى‌گردد.

برای اجرا صفحات ASP به چه چیزی نیاز دارید؟

شاید این سوال برای شما پیش بیاید که اگر صفحات Server Side نظیر ASP، بر روی سرور اجرا می شوند، پس چگونه آنها را بر روی کامپیوتر خود اجرا نمائیم؟ مایکروسافت برای حل این مشکل، از IIS در ویندوزهای 2000,XP و PWS در ویندوزهای 98,ME استفاده می کند. این نرم افزارها به شما این اجازه را می دهند که در حقیقت، یک سرور مجازی بر روی کامپیوتر خود ایجاد نمایید.

PWS مخفف عبارت Personal Web Server و IIS هم مخفف  Internet Information Serviceمی باشد. البته شما مجبور نیستید که PWS  ویا IIS را برروی کامپیوتر خود نصب کنید. اگر شما از سیستم عامل Windows استفاده نمی کنیدو بطور مثال از سیتم عامل های Linux و یا Apple/Mac  استفاده می کنید میتوانید از Instant ASP و یا از Chili!ASP  استفاده کنید.

شما نمی توانید سورس کد های ASP را بوسیله انتخاب گزینه View Source در Browser مشاهده کنید، شما فقط خروجی فایل ASP را مشاهده مى‌کنید که HTML ساده است. زیرا که اسکریپت ها قبل از این که نتایج به Browser فرستاده شود بر روی سرور اجرا مى‌گردد.

قواعد اساسی نحو

یک فایل ASP به طور عادی دقیقا همانند HTML حاوی Tagهای HTML است. اگر چه، یک فایل ASP می تواند همچنین حاوی Scriptها نیز باشد. این اسکریپت ها به وسیله علامت های %> و <% احاطه شده اند. اسکریپت های سرور بر روی سرور اجرا می شود و می تواند حاوی هر گونه expressions، دستورات (Statements)، توابع، یا عملگرهایی باشد.

یک فایل ASP ، در واقع  یک فایل با پسوند .asp است که شامل هر نوع ترکیبی از موارد زیر می باشد:

  • متن
  • برچسب های HTML
  • اسکریپت ها

یک راه سریع برای ساختن یک فایل .asp این است که نام فایلهای HTML خود را تغییر دهید.برای این کار کافی است پسوند .htm یا .html را با .asp عوض کنید.

برای انتشار یک فایل .asp بر روی وب ، فایل جدید را در یک دایرکتوری مجازی بر روی وب سایت خود ذخیره کنید.سپس با تایپ کردن آدرس URL آن فایل در برنامه مرورگر آن را از سرویس دهنده در خواست کنید.

برای ساختن فایل.asp همیشه می توانید از یک برنامه واژه پرداز ساده استفاده کنید.

زبانهایasp

این امکان وجود دارد از زبانهای مختلف اسکریپت نویسی در فایل ASP استفاده کرد  تنها کافی است موتور مفسر آن زبان بر روی سرویس دهنده نصب شده باشد.هنگام نصب موتور ASP ، موتورهای زبان های VBScript و JScript  نیز به همراه آن نصب می شود.زبان پیش فرض vbscriptاست .

برای اینکه javascript   را زبان پیش فرض برای یک صفحه خاص مشخص کنید بایستی از راهنمایی های زبانی در ابتدای صفحه خود استفاده کرد.javascript برعکس vbscript یک زبانcase sensetive  می باشد.

برای نوشتن یک صفحه ASP می توان از چند زبان استفاده کرد.هر صفحه ASP یک زبان پیش فرض یا اولیه دارد که با دستور <%LANGUAGE=%> در ابتدای صفحه مشخص می شود.

برای استفاده از یک زبان دیگر ، می توان کد مورد نظر را درون برچسب SCRIPT با تعیین پارامتر Language نوشت،مانند دستور زیر:

<SCRIPT Language=somelanguage runat=Server>Some Code</SCRIPT>

به پارامتر runat= توجه کنید.با تعیین مقدار Server برای این پارامتر ، می توان تعیین نمود که کد مزبور باید بر روی سرویس دهنده اجرا شود.در غیر اینصورت Client-Side در نظر گرفته شده و بر روی کامپیوتر سرویس گیرنده اجرا خواهد شد.

ASP شامل دوبخش می باشد: 1- کدهای برنامه نویسی 2- کدهای HTML. کدهای برنامه نویسی میتوانند به وسیله تعدادی از زبانهای دست نویس(Scripting Language) نوشته شوند.

حال، چطور یک سرویس دهنده وب تعیین می کند که سرویس گیرنده یک صفحه HTML ایستا را درخواست کرده است یا یک صفحه ASP را؟ سرویس دهنده وب بوسیله پسوند صفحه وب، این موضوع را تعیین می نماید. به همین دلیل است که وقتی شما یک صفحه ASP را ایجاد می کنید باید پسوند آن را asp قرار دهید. با این کار سرویس دهنده وب می فهمد که قبل از فرستادن خروجی برای سرویس گیرنده باید کد برنامه نویسی را پردازش نماید.

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

<%@ Language="VBScript" %>
<html>
<body>
The current time is:
<%
Response.Write Time ( )
%>
</body>
</html>

تجزیه و تحلیل: توجه کنید که کد ASP بوسیله علامت <% %> احاطه شده است. وقتی یک صفحه  ASP از یک سرویس دهنده وب درخواست می گردد، سرویس دهنده وب به طور کامل همه کدهای مابین علامت <% %> را قبل از فرستان خروجی برای سرویس گیرنده پردازش می کند.

کد بالا ممکن است شباهت زیادی به فایل HTML واقعی داشته باشد. در حقیقت، تنها کد ASP خطوط 1و 5 می باشد. خط 1 به سرویس دهنده وب اطلاع میدهد که زبان Scripting در این صفحه ASP بکار رفته است. آن هم از نوع VBScript. به خاطر بیاورید که یک صفحه ASP می تواند از یکی از چهار زبان اصلی اسکریپت نویسی استفاده نماید.برای تعیین کردن یک زبان اسکریپت نویسی، برای یک صفحه ASP، شما از فرمان Language @ استفاده می کنید. اگر می خواستید از JScript بجای VBScript در مثال بالا استفاده کنید، باید خط  اول کد بالا را بصورت زیر بنویسید:

<%@ Language= "JScript" %>

حط دوم از کد بالا وقت و زمان فعلی را نشان میدهند. تابع ( ) Time یک تابع VBScript می باشد.

 قسمت Response.Write نتایج حاصل از تابع ( ) Time را به سرویس گیرنده به عنوان خروجی می فرستد.اگر یک سرویس دهنده وب مابکروسافت بر روی کامپیوترتان دارید، میتوانید کدهای بالا را آزمایش نمایید. یک فایل با نام current-time.asp ایجاد کرده و آنرا در دایرکتوری ریشه سایت وب(wwwroot) خود قرار دهید.

اشیاء درون ASP

1.      Server

2.      application

3.      session

4.      request

5.      response

6.      scripting context

  شیserver

برای یک سرویس دهنده وب تنها یک شیserver  وجود دارد. از این شیء برای ساختن نمونه ای  از یک شیء خاص در یک صفحه ASP استفاده می شود. ویژگی و متدهای این شیء موجب می شود که آدرسهای مجازی وب به آدرسهای فیزیکی تبدیل کند به علاوه اینکه این شیء می تواند اطلاعات رشته ای بر اساس پروتکل HTTP کد گذاری کند.

شیءApplication

برای هر برنامه کاربردی یک شی Application  وجود دارد . این شی می تواند اشیاء و متغیرهای دیگر را در بر بگیرد.

شیءsession  

هر برنامه کاربردی می تواند چندین جلسه کاری داشته باشد که هریک از این جلسات به یکی از کاربران برنامه مربوط می شود.  این شیء مانند شیء Application است که می تواند برای ذخیره کردن متغیرها و اشیاء دیگر به کار رود تنها تفاوت این شی با شیء application در این است که برای هر کاربر یک شیء منحصر به فرد اختصاص داده می شود درحالی که شیء  application  برای تمام کاربران مشترک می باشد.

شیء Request

مرورگرها برای هر صفحه درخواستی ، اطلاعات زیادی را به سرویس دهنده ارسال می کنند.معمولاً هنگامی که شما صفحات مختلف یک سایت را مشاهده می کنید،هیچ یک از این اطلاعات را نمی بینید،ولی این اطلاعات برای استفاده برنامه های کاربردی روی سرویس دهنده در دسترس می باشند.موتور ASP این اطلاعات را به شکل زیبایی در یک شیء به نام Request بسته بندی می کند.شیء Requestتمام اطلاعات سرآیند را به همراه درخواست صفحه مورد نظر کاربر و همچنین اطلاعاتی که ممکن است کاربر در فیلدهای یک فرم HTML وارد کرده باشد در بر می گیرد.

  شی response

برای پاسخگویی به مرورگر از متدهای این شیء استفاده می شود. در واقع این شی راهی برای ارتباط با سرویس گیرنده است.

 

scripting context

این شیء امکان دسترسی اشیاءActiveX خارجی به اشیاءدرونی ASP را فراهم می کند.

دریافت اطلاعات از ورودیها به وسیله فرمها

یکی از مزایای برنامه های ASP قابلیت ایجاد ارتباط متقابل با کاربران است. در برنامه های ASP ، با استفاده از فرم ها می توان اقدام به اخذ اطلاعات از کاربران نمود. پس از ارسال اطلاعات در قالب فرم ها زمینه پردازش آنها بر روی سرویس دهنده فراهم می گردد. نکته مهم در این زمینه این است که محل اخذ اطلاعات و محل پردازش اطلاعات دو محل کاملا متمایز از هم بوده و ایده پردازش سیستمهای سرویس گیرنده / سرویس دهنده در این مدل معنای خاص خود را پیدا می کند. در برنامه های ASP با استفاده از شیء Request ودستورات Request.QueryString و Request.Form امکان اخذ اطلاعات فراهم می گردد. Request.QueryString با استفاده از دستور فوق می توان اقدام به جمع آوری اطلاعات یک فرم بصورت متن نمود. اطلاعات جمع آوری شده توسط متد GET ارسال خواهند شد. استفاده از متد فوق جهت ارسال اطلاعات یک فرم دارای محدودیت حجم اطلاعات ارسالی است. مثال زیر یک فرم ساده را که دارای دوفیلد متن معمولی با نام FirstName و LastName است ، ایجاد و پس از تکمیل فرم توسط کاربر و همزمان با فشردن دکمه Send آنها را برای برنامه getname.asp بر روی سرویس دهنده ارسال میدارد :

<form method="GET" action="getname.asp">
First Name: <input type="text" name="FirstName" size="20"><br>
Last Name : <input type="text" name="LastName" size="20"><br>
<input type="submit" value="Send">
</form>

در صورتیکه فرم فوق پس از تکمیل توسط متد GET ( همانطور که در تعریف فرم نیز آورده شده است ) ارسال گردد و کاربر در قسمت نام کلمه keyvan ودر قسمت نام خانوادگی کلمه salehi را تایپ کرده باشد ، آدرس زیر پس از فشردن دکمه Send برای سرویس دهنده ارسال می گردد.

http://www.mycompany.com/getname.asp?FirsName=keyvan&LastName=salehi

 آدرس فوق در بردارنده چندین نکته مهم است :

 اولاً نام فایل (برنامه ای) که می بایست بر روی سرویس دهنده فعال گردد را مشخص میسازد ( getname.asp ) و ثانیاً داده های اخذ شده و ذخیره شده در دو متغیر با نام FirstName و LastName را در اختیار برنامه فوق قرار خواهد داد. هر یک از پارامترهای تایپ شده توسط علامت & از دیگری جدا شده است. تا اینجای قضیه، فرم توسط کاربر تکمیل و ارسال شده است در ادامه می بایست با ماهیت برنامه getname.asp که بر روی سرویس دهنده قرار دارد و بر روی داده های ارسالی عملیات مورد نظر را انجام می دهد ، آشنا شویم. این برنامه می تواند دارای اسکریپت هائی مطابق زیر باشد :

 ASP.Blogfa.com To Site Welcome

<%
response.write(request.querystring("FirstName"))
response.write("&nbsp;")
response.write(request.querystring("LastName"))
%>

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

 site ASP.Blogfa.com  keyvan salehi  Welcome to

در صورتیکه اطلاعات موجود در یک فرم را از طریق متد POST اخذ کرده باشیم ، از دستور فوق استفاده می شود. برخلاف متد GET این متد ( POST ) دارای محدودیت از بعد حجم اطلاعات ارسالی نبوده و امنیت ارسال اطلاعات نیز دارای مقبولیت بیشتری است. در صورتیکه فرم فوق پس از تکمیل توسط متد POST ( در تعریف فرم می بایست مشخص گردد ) ارسال گردد و کاربر در بخش نام keyvan ودر بخش نام خانوادگی salehi را تایپ کرده باشد ، آدرس زیر پس از فشردن دکمه Send برای سرویس دهنده ارسال می گردد.

http://www.mycompany.com/getname.asp

مدیریت جلسات کاری

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

ASP برای حل مشکل مدیریت اطلاعات در جلسات کاری یک راه حل واحد ارائه کرده است.با استفاده از شیءSession و یک شناسه کاربر که توسط سرویس دهنده تولید می شود، می توانید برنامه های کاربردی باهوشی بنویسید که بتوانند هر یک از کاربران را شناسایی کرده و اطلاعات آنها را جمع آوری کنند و با استفاده از این اطلاعات ، انتخاب ها و خواسته های هر کاربر را ردیابی کنند.

اگر بخواهید مدت زمان یک جلسه کاری را کمتر از مقدار پیش فرض تعیین کنید می توانید ویژگی Timeout آن شیء را تنظیم کنید.به عنوان مثال دستور اسکریپتی زیر ، مدت زمان جلسه کاری را به اندازه پنج دقیقه تنظیم می کند.

<%
Session.Timeout=5

%>

برای اینکه یک جلسه کاری را به طور سنجیده و با احتیاط ببندید، می توانید از متد Abandon  شیء Session استفاده کنید.به عنوان مثال می توانید روی یک فرم یک دکمه Quit قرار دهید.سپس پارامتر ACTION این دکمه را را آدرس URL یک فایل .asp که شامل دستور زیر است تنظیم کنید.

<%
Session.Abandon

%>

ذخیره و حذف اطلاعات از یک شیء Session

شیء Session یک آرایه دینامیک ارائه می دهد که برای ذخیره  اطلاعات می توانید از آن استفاده کنید. می توانید متغیرهای عددی و اشیاء را در شیء Session نگهداری نمایید.برای ذخیره یک متغیر در شیء Session مقدار مورد نظر خود را به یک ورودی نامدار در شیء Session نسبت دهید.به عنوان مثال ، دستور زیر دو متغیر جدید در شیء Session ذخیره می کند:

<%
Session("username")="Donald Duck"
Session("age")=50

%>

برای بازیابی اطلاعات ذخیره شده کافی است به ورودیهای نامدار تعیین شده اشاره کنید.به عنوان مثال برای نمایش مقدار فعلی Session("username") از دستور زیر استفاده نمایید.

                      Welcome <%Response.Write(Session("username"))%>

شما می توانید خواسته های کاربر را در شیء Session ذخیره کنید و سپس با دستیابی به این اطلاعات ، صفحه ای را که باید به کاربر ارسال شود تعیین نمایید.به عنوان مثال می توانید در اولین صفحه برنامه امکان انتخاب چگونگی نمایش محتویات صفحات دیگر را برای کاربر فراهم کنید.

فرض کنید کاربر حالت نمایش تمام- متن را انتخاب می کند.پس می توانید این انتخاب را برای بقیه صفحات به کار ببرید تا کاربر آنها را به صورت متنی و بدون شکل مشاهده کند:

<%If Session("screenres")="low" Then%> 
  This is the text version of the page.
<%Else%> 
  This is the multimedia version of the page

<%End If%>

در شرایطی نیز لازم است که اطلاعات ذخیره شده در شیء Session را حذف کنید.به عنوان مثال فرض کنید که در یک فروشگاه الکترونیکی ، کاربر چند کالا را برای خرید انتخاب کرده است.برای این که انتخاب های انجام شده در بین صفحات دیگر از دست نروند، باید آنها را در شیء Session ذخیره کنید.حال امکان دارد که این کاربر تصمیم خود را تغییر داده و بخواهد یک یا همه کالاهای انتخاب شده را حذف نموده و کالاهای دیگری را انتخاب نماید.در این شرایط باید یک یا همه اطلاعات ذخیره شده در شیء Session را حذف کنید.کلکسیون Contents شیء Session شامل تمام متغیرهای ذخیره شده در یک جلسه می باشد.با استفاده از متد Remove کلکسیون Contents ، می توانید متغیرهای ذخیره شده در آن جلسه را به طور انتخابی حذف نمایید.

در مثال زیر اگر محتوای age کمتر از 18 بود متغیری به نام sale ذخیره شده بود حذف می شود.

<%
If Session.Contents("age")<18 then 
  Session.Contents.Remove("sale")
End If 

%>

در صورت تمایل با استفاده از متد RemoveAll کلکسیون Contentes می توانید تمام متغیرهای ذخیره شده در شیء Session را بطور همزمان حذف کنید.

<%
Session.Contents.RemoveAll()

%>

برای حذف آیتم های ذخیره شده با دستور Remove ، می توانید از نام یا ایندکس آنها کمک بگیرید. اسکریپت های زیر ، روش گردش در میان مقادیر ذخیره شده در شیء Session و حذف مشروط بعضی از آنها را نشان می دهند:

<%
For Each intQuote in Session.Contents
  If Session.Contents(intQuote)<200 Then
     Session.Contents.remove(intQuote)
End If
Next

%>

دسترسی به یک پایگاه داده

استفاده از اشیاء ADO[1] راه بسیار ساده ای است که امکان دسترسی به پایگاه داده را در صفحات وب شما فراهم می کند.با استفاده از ADO می توانید دستوراتی بنویسید که دسترسی به منابع اطلاعاتی سازگار با OLE DB ، مثل پایگاه های داده، صفحات گسترده ، فایلهای اطلاعاتی ترتیبی، یا دایرکتوری های ذخیره E-mail را برای شما میسر سازند.

ساختن یک رشته ارتباطی

اولین قدم برای ساختن یک برنامه کاربردی تحت وب که به یک پایگاه داده متصل باشد،معرفی منبع ذخیره اطلاعات به ADO می باشد.این کار با استفاده از یک رشته ارتباطی انجام می شود.این رشته شامل تعدادی آرگومان ، مثل نام ارائه دهنده منبع اطلاعات و محل ذخیره اطلاعات است که با استفاده از سمی کولن از هم جدا می شوند. ADOبرای مشخص کردن ارائه دهنده OLE DB و هدایت کردن آن به سمت منبع اطلاعات از این رشته استفاده می کند.

ارائه دهنده یک مولفه است که وظیفه ارائه اطلاعات را به عهده دارد و داده های مورد نیاز را به صورت سطری به برنامه کاربردی شما ارسال می کند.

جدول زیر رشته های ارتباطی OLE DB را برای چندین منبع اطلاعاتی مرسوم نشان می دهد:

منبع اطلاعات

رشته ارتباطی OLE DB

Microsoft®Access

Provider=Microsoft.Jet.OLEDB.4.0;

Data Source=physical path to .mdb file

Microsoft SQL Server

Provider=SQLOLEDB.1;

Data Source= path todatabase on server

Oracle

Provider =MSDAORA.1 ;

Data Source= path todatabase on server

Microsoft Indexing Service

Provider =MSIDXS ;

Data Source= path to file

ارائه دهنده OLE DB که برای ODBC بکار می رود ، به منظور سازگاری با برنامه های قدیمی تر از رشته ارتباطی ODBC پشتیبانی می کند.جدول زیر رشته های ارتباطی ODBC مرسوم را نشان می دهد:

ارائه دهنده منبع اطلاعات

رشته ارتباطی OLE DB

Microsoft Access 

Driver={Microsoft Access Driver

(*.mdb)};DBQ= physical path to .mdb file

Microsoft SQL Server

Driver={SQL Server};SERVER=path to server

Oracle

Driver={Microsoft ODBC for Oracle };SERVER=path to server

اتصال به یک منبع اطلاعاتی

ADO برای شناسایی و مدیریت ارتباط ها بین برنامه های کاربردی شما و منابع اطلاعاتی سازگار با OLE DB یا پایگاه های داده سازگار با ODBC ، شیءConnection را ارائه می دهد.این شیء ویژگیهایی دارد که با استفاده از آنها می توانید با یک پایگاه داده ارتباط برقرار کنید و یا ارتباط موجود را قطع کنید.

برای برقراری ارتباط با یک پایگاه داده ابتدا باید یک نمونه از شیءConnection بسازید.

در رشته ارتباطی قبل و بعد از علامت = فضای خالی وجود ندارد.

 در ASP برای ارتباط با بانک های اطلاعاتی از ADO استفاده می شود و ADO برای پرس و جو از بانک اطلاعاتی از زبان استاندارد SQL استفاده می کند. یعنی برای ارتباط با بانکهای اطلاعاتی از داخل صفحات ASP باید هم SQL و هم ADO را فرا بگیرید زیرا از هر دوی آنها به طور مشترک در ASP استفاده می شود.

 ADO یک زبان نیست بلکه یک تکنولوژی است که توسط میکروسافت برای دسترسی به بانکهای اطلاعاتی از داخل صفحات وب ساخته شده است که به همراه IIS در ویندوز نصب می شود. برای برقراری ارتباط با بانک های اطلاعاتی بوسیله ADO دو راه وجود دارد :

 ۱- ارتباط DSN_LESS این نحوه ارتباط به این صورت است که بعد از ساختن یک شئ Connection و مشخص کردن درایور بانک اطلاعاتی، مسیر فایل بانک اطلاعاتی را مشخص می کنیم و بدین صورت بانک اطلاعاتی را از داخل صفحه وب معرفی می کنیم. در مثال زیر، یک بانک اطلاعاتی را از درایو C باز کرده ایم :

 <%
‘Create a connection object.
set cnn=Server.CreateObject("ADODB.Connection")
‘open a connection using the OLE DB connection string.
cnn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data 
Source=c:\data\Emploees.mdb"%>

۲- ارتباط ODBC نحوه برقراری ارتباط ODBC با یک بانک اطلاعاتی MS Access : آیکون ODBC را از داخل پنجره ControlPanel انتخاب کنید و روی قسمت DSN System کلیک کنید، دکمه ADD را برای ساختن یک ارتباط جدید کلیک کنید. سپس Microsoft Access Driver را انتخاب کرده و روی Finish کلیک کنید. در صفحه بعد روی دکمه Select کلیک کنید و مسیر فایل بانک اطلاعاتی را مشخص نمائید. سپس در فیلد Name نام بانک اطلاعاتی خود را وارد نمایید و OK را فشار دهید.

 در روش اول برای برقراری ارتباط نیاز به DSN System در ODBC نداریم و تمام اعمال مربوط به ارتباط در داخل صفحه ASP انجام می شود لذا این روش هنگامی مفید است که میزبان شما یک سرور خارجی باشد و یا اینکه شما به میزبان سایت خود دسترسی فیزیکی نداشته باشید. اما اگر به سرور میزبان سایت خود دسترسی دارید می توانید از روش دوم استفاده کنید. البته در این حالت از روش اول هم می توانید استفاده کنید. اما پیشنهاد می شود که در هر حالت شما از روش اول یعنی DSN_LESS استفاده کنید زیرا در تمام حالات و وضعیت ها جواب می دهد و مشکلی پیش نخواهد آمد.

انجام پرس و جوهای SQL با شیءConnection

 SQL یک زبان استاندارد ANSI برای دستیابی به یک بانک اطلاعاتی و همچنین پرس و جو از بانک اطلاعاتی است. زبان SQL با برنامه های بانک اطلاعاتی مانند : Access, Oracle, MS SQL Server, DB2, Informix و ... کار می کند. چون SQL زبان استاندارد بانکهای اطلاعاتی است برای دستیابی به بانکهای اطلاعاتی از این زبان استفاده می شود.

 دستورات زیر برای پرس و جو از بانکهای اطلاعاتی در SQL بکار می رود :

 Select : داده ها را از بانک اطلاعاتی فراخوانی میکند.

 Insert : داده ها را به بانک اطلاعاتی اضافه می کنند.

 Update : داده ها را در بانک اطلاعاتی تغییر می دهند و به روز می کنند.

 Delete : داده ها را از داخل بانک اطلاعاتی پاک می کنند.

 Select

     From

Where P

هر نشانگر یک صفت خاصه و هر  نشان دهنده یک رابطه و P یک گزاره است.

مثال:

SELECT *
FROM students

WHERE age < 15 AND name = 'ali'

دستور Insert

این دستور یک یا چند رکورد را به جدول اضافه می کند.این دستور به صورت زیر به کار می رود:

INSERT Into Table-Name (Field1,Field2,…,Fieldn)

 VALUES(value1,value2,…,valuen)

 پارامتر Table-Name نام جدولی را مشخص می کند که باید داده ها به آن اضافه بشود. پارامترهای Field1,Field2,…,Fieldn فیلدهایی را مشخص می کنند که داده ها باید در آن قرار گیرند و value1,value2,…,valuen مقادیری را مشخص می نمایند که باید در فیلدهای جدول قرار گیرند.

به عنوان مثال دستورات زیر را در نظر بگیرید:

Insert Into Student(StNo,Fname,Lname)

Values("15","رضا","رحمانی")

این دستور رکوردی را به جدول Student اضافه می کند و مقادیر"15" ، "رضا" و" رحمانی" را به ترتیب در فیلدهای شماره دانشجویی،نام و نام خانوادگی آن ها قرار می دهد.

دستور  Update (بهنگام کردن)

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

Update Table_Name

Set Field1=Value1, Field2=Value2,…, Fieldn=Valuen,

[where شرط]

 در این کاربرد ، Table_Nameنام جدولی است که باید اطلاعات آن اصلاح شود و Field1 ، Field2 ،...و Fieldn نام فیلدهایی را مشخص می کند که مقادیر Value1، Value2،...و Valuenباید در آن ها قرار گیرد.به عنوان مثال دستورات زیر را در نظر بگیرید:

Update  Student

Set  StNo="12", Lname"بابلی"

where StNo=' '

این دستور ، مقادیر "12" و"بابلی" را به ترتیب در فیلدهای StNo و Lname جدول Student قرار می دهد که مقدار StNo آنها خالی باشد.

مثال :در جدول P به وزن قطعاتی که قرمز رنگ هستند 5 کیلو اضافه کنید .

Update   P

Set  Weight = Weight +5

Where  P. color = ‘red’

دستور Delete

به وسیله این دستور می توان بعضی از سطر ها را طبق شرط های خاصی حذف کرد بر خلاف دستور  Select که بر روی جدول تغییراتی اعمال نمی کرد دستور Delete  سطر هارا حذف می کند.

این دستور تقاضایی را برای حذف رکوردها ی جدول ایجاد می کند و به صورت زیر استفاده می شود:

Delete From Table_Name

where شرط

در این کاربرد Table_Name نام جدولی است که باید رکوردهای آن حذف شوند.به عنوان مثال دستورات زیر را در نظر بگیرید:

Delete From Student

Where StNo="15"

این دستور رکوردی از جدول Student را حذف می کند که شماره دانشجویی آن "15" باشد.

انجام پرس و جوههایSQL  با شیء Connection

با استفاده از متد Execute شیء Connection می توانید دستورات مورد نظر خود، مثل پرس و جوهای زبان SQL را به منابع اطلاعاتی بفرستید.متد Execute می تواند پارامترهایی بگیرد که دستور (یا پرس و جو) ، تعداد رکوردهایی را که باید تحت تاثیر قرار بگیرند، و نوع دستور مورد استفاده را مشخص می کنند.

اسکریپت زیر ، برای ارسال یک پرس و جو به فرم دستور INSERT زبان SQL که برای قرار دادن اطلاعات در یکی از جداول پایگاه داده بکار می رود،از متد Execute استفاده می کنند.در این حالت ، نام Jose Lugo در یکی از جداول با نام Customers قرار می گیرد.

<%
SrtConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data 
Source=c:\data\Emploees.mdb"
Set cnn=Server.CreateObject("ADODB.Connection")
Cnn.Open strConnectionString
‘Define SQL INSERT statement.
strSQL="INSERT INTO Customers(FirstName,LastName)VALUES(‘Jose’,’Lugo’)"
‘Use the Execute method to issue a SQL query to database.
Cnn.Execute strSQL,,adCmdText+adExecuteNoRecords
%>

توجه کنید که برای اجرای این پرس و جو، دو پارامتر مشخص شده است: adCmdTextو adExecuteNoRecords. پارامتر adCmdText که اختیاری نیز می باشد، نوع دستور را مشخص می کند و به این مفهوم است که ارائه دهنده (provider) باید پرس و جوی مورد نظر را به صورت متن ارزیابی کند و نتیجه را (که یک دستور SQL می باشد ) اجرا نماید. پارامتر  adExecuteNoRecords به ADO دستور می دهد که اگر در اجرای دستور تعیین شده نتیجه ای به برنامه کاربردی برگردانده نشد،رکودهای اطلاعاتی ایجاد نکند.

انجام پرس و جوههایSQL  با شیRecordset

برای گرفتن اطلاعات ، بررسی نتایج، و اعمال تغییرات به پایگاه داده ، از شیءRecordset استفاده می شود.این شیء ویژگیهایی دارد که با کمک آنها می توانید تعدادی از سطرهای موجود در یک جدول را گرفته و آنها را نمایش دهید، که این سطرها را رکورد می نامییم. شیء Recordsetمحل هر یک از رکوردهایی را که با اجرای یک پرس و جو برگردانده می شوند نگه میدارد و به این ترتیب به شما امکان می دهد که نتایج جستجوی خود را به صورت تک تک بررسی کنید.

گرفتن مجموعه ای از رکوردها

برنامه های کاربردی- اطلاعاتی خوب، از هر دو شیء Connection (برای برقراری ارتباط با پایگاه داده) و شیءRecordset (برای کار کردن با اطلاعات بدست آمده) استفاده می کنند.با ترکیب توابع خاصی که این دو شیء ارائه می دهند، می توانید برنامه هایی بنویسید که توانایی انجام همه کارهای لازم با اطلاعات را داشته باشند.

محتوای همه فیلد هاتنها به فرم روبرواستفاده میشود:

’ ’”&contentfield&”’

جهت درج کردن فیلد در پایگاه داده:

SQLSTR=”INSERT INTO  tablename(field1,field2)VALUES=(“&”’”&contentfield1&”’ ’”&contentfield2&”’)

جهت به روز رسانی  فیلد در پایگاه داده:

SQLSTR=UPDATE tablename SET table1.fieldname=”contentfield”

WHERE (((tablename.field)=”oldcontent”))

جهت حذف کردن فیلد از پایگاه داده:

SQLSTR=DELETE tablename.field1,tablename.field2 FROM tabename WHERE(((tablename.field1)=”contentfield”))

جهت جست وجوی فیلد از پایگاه داده:

SQLSTR=SELECT * FROM tabename WHERE(((tablename.field1)=”contentfield”))

اسکریپت زیر که بر روی سرویس دهنده اجرا می شود ، از شیءRecordset استفاده کرده و دستور SELECT زبان SQL را به اجرا در می آورد.این دستور مجموعه ای از اطلاعات خاص را بر حسب شرایط و معیارهای پرس و جوی مورد نظر بر میگرداند.پرس و جوی تعیین شده شامل یک عبارت WHERE نیز می باشد که سبب می شود نتیجه آن توسط معیار مشخص شده محدود شود.در این مثال، عبارت WHERE سبب می شود که این پرس و جو تنها بر روی رکوردهایی از جدول Customers که مقدار فیلد LastName آنها Smith است عمل کند.

<%
SrtConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data 
Source=c:\data\Emploees.mdb"
Set cnn=Server.CreateObject("ADODB.Connection")
Cnn.Open strConnectionString
Set rstCustomers=Server.CreateObject("ADODB.Recordset ")
strSQL="SELECT FirstName,LastName FROM Customers WHERE LastName=’Smith’"
rstCustomers.Open strSQL,cnn
set objFirstName = rstCustomers("FirstName")
set objLastName = rstCustomers("LastName")
Do Until rstCustomers.EOF
  Response.Write objFirstName & " " & objLastName & " <BR>"
  rstCustomers.MoveNext
Loop
%>


استفاده از ارتباطها در چند صفحه

اگر چه با ذخیره اشیاء Connection در شیءApplication می توانید یک ارتباط را در چند صفحه ASP بکار برید،ولی بدانید که این کار یک ارتباط را به طور غیر ضروری نگه می دارد.اگر شما کاربران زیادی دارید که همه آنها باید به یک برنامه کاربردی ASP متصل شوند،بهتر است به جای شیءConnectio رشته ارتباطی خود را در شیءApplication ذخیره کنید.به عنوان مثال می توانید در رویه Application_OnStart که در فایل Global.asa نوشته می شود،یک رشته ارتباطی تعریف کنید.

ایجا یک سیستم Login برای ورود اعضاء یک سایت

امروزه اغلب سایتهایی را که مشاهده می کنید معمولا دارای یک سیستم Login هستند که بوسیله یک شناسه کاربری(UserID) و یک کلمه عبور (Password)، قادر به تشخیص افراد خاصی از میان تمام مراجعه کنندگان به سایت هستند. یک نمونه بارز آن صفحه SignIn سایت معروف Yahoo! برای ورود به پست الکترونیک کاربران است که یاهو پس از بررسی وجود شناسه کاربری و صحت کلمه عبور وارد شده، به کاربران اجازه ورود به صندوق پستی خود را می دهد. قبل از هر چیز ما نیاز به ساختن یک بانک اطلاعاتی برای ذخیره کردن اطلاعات کاربران سایت داریم. این بانک اطلاعاتی می تواند بوسیله برنامه های مختلفی از جمله Access ساخته شود. بانک اطلاعاتی مورد نیاز برای این برنامه شامل یک جدول بنام Members و دو ستون به نامهای UserID وPassword برای ذخیره اطلاعات کاربران است. همچنین دستور SQL برای ساختن این جدول در صفحات ASP بصورت زیر است :

 Create Table Members ( UserID(20) Password(15) )

 پس از ساختن بانک اطلاعاتی نیاز به ساخت یک فرم ساده برای دریافت اطلاعات کاربران داریم که آنرا در داخل صفحه ای بنام login.html می سازیم. این صفحه به سادگی و بوسیله دستورات مقدماتی HTML قابل تهیه است که بصورت زیر میباشد :

<HTML>
<HEAD><TITLE>Login</TITLE></HEAD>
<BODY>
<TABLE cellSpacing="0" cellPadding="0" border="0" width="300" align="center">
<TR><TD align="center" Colspan="2"><H2>Login Members</H2></TD></TR>
<TR Height="35">
<TD align="right" Width="100">
<FORM Method="post" Action="login-action.asp">
UserID&nbsp;:&nbsp;
</TD>
<TD align="Left">
<INPUT type="text" name="UserID" Size="20">
</TD>
</TR>
<TR Height="35">
<TD align="right">
Password&nbsp;:&nbsp;
</TD>
<TD align="left">
<INPUT type="Password" name="Password" Size="20">
</TD>
</TR>
<TR Height="35"><TD align="center" Colspan="2">
<INPUT type="Submit" name="Submit" value="Login">
</TD></TR>
</TABLE>
</FORM>
</BODY>
</HTML>

در کد بالا چند نکته قابل توجه وجود دارد :

 Form method=Post

 نحوه ارسال اطلاعات فرم را مشخص می کند. بدین صورت که اگر ما بخواهیم اطلاعات دریافتی از یک کاربر را به صفحه دیگری برای پردازش ارسال کنیم، باید از این متد، یعنی متد Post استفاده کنیم. اطلاعاتی که بوسیله متد Post ارسال می شوند، در صفحه بعدی بوسیله شئ Request و بصورت زیر قابل بازیابی هستند.

 Request.Form("fieldname") Action=login-action.asp

 مقداری که در مقابل ویژگی Action در دستور Form قرار گرفته، نام فایلی است که اطلاعات فرم پس از دریافت از کاربر، به آن صفحه ارسال می شود. ویژگی Name در دستور Input نام متغیری است که کلمه ورودی کاربر در فیلد جاری در آن ذخیره می شود. هر کلمه ای که کاربر در یک فیلد وارد می کند در صفحه مقصد بوسیله نامی که برای آن فیلد تعیین شده قابل دسترسی است. پس از ساخت بانک اطلاعاتی و یک فرم ساده برای دریافت اطلاعات کاربران، نوبت به ساخت صفحه ای برای پردازش و پاسخ متقابل به اطلاعات ورودی کاربران است. این صفحه را با نام login-action.asp  می سازیم :

<%@Language="VBScript"%>

<%User = Request.Form("UserID")
Pass = Request.Form("Password")
Set AdoCon = Server.CreateObject("ADODB.Connection")
StrCon = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("Users.mdb")
AdoCon.Open StrCon
Set AdoRec = Server.CreateObject("ADODB.Recordset")
StrSQL = "SELECT * FROM Members WHERE UserID ='" & User & "'"
AdoRec.Open StrSQL, StrCon
IF NOT AdoRec.EOF Then
IF Pass = Trim(AdoRec("Password")) Then
Response.Write ("Welcome " & User)
Else
Response.Write ("Invalid Password")
End IF
Else
Response.Write ("Invalid UserID")
End IF
Set AdoCon = Nothing
Set StrCon = Nothing
Set AdoRec = Nothing


%>



[1] ActiveX Data Objects