#include <STDIO.H>
#include <CONIO.H>
#include <STDLIB.H>
#include <DOS.H>
void main()
{ union REGS r;
clrscr();
r.x.ax= 0;
int86(0x33,&r,&r);
if(r.x.ax==0)
{
printf("No Mouse Available.....");
getch();
exit(1);
}
r.x.ax=1;//place 01 in AX register
int86(0x33,&r,&r);//showing the mouse pointer
printf(“press any key to exit…”);
getch();
}
تابع مفید دیگری برای کار با ماوس تابع 02 از وقفه 33hex میباشد. این تابع نشانگر ماوس را پنهان می کند. فرض کنید می خواهید مانند برنامه Paint وقتی ماوس را میکشید یک خط هم با آن کشیده شود. در این حالت اگر نشانگر ماوس دیده شود بعضی از نقاط خط پاک خواهند شد و بهتر است که در این مواقع نشانگر را پنهان کنیم. بعدا مثال کاملتری برایتان خواهم نوشت. برای کار با ماوس ما باید بدانیم که نشانگر اکنون د رکجای صفحه می باشد یعنی مختصات (x,y) آن را بدست آوریم. برای این کار از تابع شماره 03 استفاده می کنیم. که پس از فراخوانی تابع ثبات CX حاوی مختصات افقی(x) و DX حاوی مختصات عمودی نشانگر خواهد بود. کار مهم دیگر تشخیص کلیدهای فشرده شده ماوس است. تابع 03 همچنین تعیین می کند که کدام کلید از ماوس فشرده شده است. این کلیدها را ثبات BX تعیین میکند. فقط همین کافی است که بدانید پس از فراخوانی وقفه اگر BX برابر با 00000001)Hex (باشد کلید چپ ماوس فشار داده شده است. راجع به فشار دادن کلیدهای دیگر اگر علاقه مند بودید به من ایمیل بزنید تا نحوه تشخیص آنها را هم بنویسم. مثال زیر نحوه کار را مشخص می کند:< /P>< /P>
#include <STDIO.H>
#include <CONIO.H>
#include <STDLIB.H>
#include <DOS.H>
void main() {
union REGS i,o;
clrscr();
i.x.ax=0;
int86(0x33,&i,&o);
if(o.x.ax==0) {
printf("No Mouse Available...");
exit(1);
}
i.x.ax=1;
int86(0x33,&i,&o);
gotoxy(25,23);
printf("Press any key to exit...");
while(!kbhit())
{
i.x.ax=3;
int86(0x33,&i,&o);
gotoxy(2,2);
printf("x->co-ordinate=(%d)
y->co-ordinate=(%d) ",o.x.cx,o.x.dx);
if(o.x.bx==0x01) printf(“Right button of mouse pressed.”); }
i.x.ax=2; int86(0x33,&i,&o);
}
برای پایان کار می خواهیم یک برنامه که ابزار pencil برنامه های گرافیکی را شبیه سازی می کند بنویسیم. برای این کار ما ابتداصفحه را درحالت گرافیکی قرار می دهیم برای این کهبرنامه زیر کار کند در دستور initgraph(&gd,&gm,""); در داخل کوتیشن مسیرفایلهای .bgi را بنویسید.
#include <CONIO.H>
#include <STDIO.H>
#include <STDLIB.H>
#include <GRAPHICS.H>
#include <DOS.H>
union REGS i,o;
main() {
int show_mouse();
int hide_mouse();
int get_mouse_pos(int *,int *,int *);
int gd=DETECT,gm,button,x1,y1,x2,y2;
initgraph(&gd,&gm,"");
i.x.ax=0; int86(0x33,&i,&o);
if(o.x.ax==0)
{ printf("No Mouse is available..");
exit(1);
restorecrtmode();
}
outtextxy(230,400,"Press any key to exit....");
while(!kbhit())
{
show_mouse(); get_mouse_pos(&x1,&y1,&button);
x2=x1;
y2=y1;
while(button==1) {
hide_mouse();
line(x1,y1,x2,y2);
x1=x2;
y1=y2;
get_mouse_pos(&x2,&y2,&button); }
}
restorecrtmode();
} show_mouse()
{
i.x.ax=1; int86(0x33,&i,&o);
}
hide_mouse()
{
i.x.ax=2; int86(0x33,&i,&o);
}
get_mouse_pos(int *x,int *y,int *button)
{
i.x.ax=3;
int86(0x33,&i,&o);
*x=o.x.cx;
*y=o.x.dx; *button=o.x.bx&1;
}
لطفا اگر علاقه مند بودید که بیشتر راجع به ماوس بدانید و یا اگر سوالی داشتید با من تماس بگیرید.
#include <STDIO.H>
#include <CONIO.H>
#include <STDLIB.H>
#include <DOS.H>
void main()
{ union REGS r;
clrscr();
r.x.ax= 0;
int86(0x33,&r,&r);
if(r.x.ax==0)
{
printf("No Mouse Available.....");
getch();
exit(1);
}
r.x.ax=1;//place 01 in AX register
int86(0x33,&r,&r);//showing the mouse pointer
printf(“press any key to exit…”);
getch();
}
تابع مفید دیگری برای کار با ماوس تابع 02 از وقفه 33hex میباشد. این تابع نشانگر ماوس را پنهان می کند. فرض کنید می خواهید مانند برنامه Paint وقتی ماوس را میکشید یک خط هم با آن کشیده شود. در این حالت اگر نشانگر ماوس دیده شود بعضی از نقاط خط پاک خواهند شد و بهتر است که در این مواقع نشانگر را پنهان کنیم. بعدا مثال کاملتری برایتان خواهم نوشت. برای کار با ماوس ما باید بدانیم که نشانگر اکنون د رکجای صفحه می باشد یعنی مختصات (x,y) آن را بدست آوریم. برای این کار از تابع شماره 03 استفاده می کنیم. که پس از فراخوانی تابع ثبات CX حاوی مختصات افقی(x) و DX حاوی مختصات عمودی نشانگر خواهد بود. کار مهم دیگر تشخیص کلیدهای فشرده شده ماوس است. تابع 03 همچنین تعیین می کند که کدام کلید از ماوس فشرده شده است. این کلیدها را ثبات BX تعیین میکند. فقط همین کافی است که بدانید پس از فراخوانی وقفه اگر BX برابر با 00000001)Hex (باشد کلید چپ ماوس فشار داده شده است. راجع به فشار دادن کلیدهای دیگر اگر علاقه مند بودید به من ایمیل بزنید تا نحوه تشخیص آنها را هم بنویسم. مثال زیر نحوه کار را مشخص می کند:< /P>< /P>
#include <STDIO.H>
#include <CONIO.H>
#include <STDLIB.H>
#include <DOS.H>
void main() {
union REGS i,o;
clrscr();
i.x.ax=0;
int86(0x33,&i,&o);
if(o.x.ax==0) {
printf("No Mouse Available...");
exit(1);
}
i.x.ax=1;
int86(0x33,&i,&o);
gotoxy(25,23);
printf("Press any key to exit...");
while(!kbhit())
{
i.x.ax=3;
int86(0x33,&i,&o);
gotoxy(2,2);
printf("x->co-ordinate=(%d)
y->co-ordinate=(%d) ",o.x.cx,o.x.dx);
if(o.x.bx==0x01) printf(“Right button of mouse pressed.”); }
i.x.ax=2; int86(0x33,&i,&o);
}
برای پایان کار می خواهیم یک برنامه که ابزار pencil برنامه های گرافیکی را شبیه سازی می کند بنویسیم. برای این کار ما ابتداصفحه را درحالت گرافیکی قرار می دهیم برای این کهبرنامه زیر کار کند در دستور initgraph(&gd,&gm,""); در داخل کوتیشن مسیرفایلهای .bgi را بنویسید.
#include <CONIO.H>
#include <STDIO.H>
#include <STDLIB.H>
#include <GRAPHICS.H>
#include <DOS.H>
union REGS i,o;
main() {
int show_mouse();
int hide_mouse();
int get_mouse_pos(int *,int *,int *);
int gd=DETECT,gm,button,x1,y1,x2,y2;
initgraph(&gd,&gm,"");
i.x.ax=0; int86(0x33,&i,&o);
if(o.x.ax==0)
{ printf("No Mouse is available..");
exit(1);
restorecrtmode();
}
outtextxy(230,400,"Press any key to exit....");
while(!kbhit())
{
show_mouse(); get_mouse_pos(&x1,&y1,&button);
x2=x1;
y2=y1;
while(button==1) {
hide_mouse();
line(x1,y1,x2,y2);
x1=x2;
y1=y2;
get_mouse_pos(&x2,&y2,&button); }
}
restorecrtmode();
} show_mouse()
{
i.x.ax=1; int86(0x33,&i,&o);
}
hide_mouse()
{
i.x.ax=2; int86(0x33,&i,&o);
}
get_mouse_pos(int *x,int *y,int *button)
{
i.x.ax=3;
int86(0x33,&i,&o);
*x=o.x.cx;
*y=o.x.dx; *button=o.x.bx&1;
}
لطفا اگر علاقه مند بودید که بیشتر راجع به ماوس بدانید و یا اگر سوالی داشتید با من تماس بگیرید.
در این مقاله شما در مورد کار با با پایگاه داده در ASP.NET آشنا خواهید شد. بدین معنا که در صدد هستیم تا رویه ای کلی از مفاهیم، روشها وابزارهای مورد استفاده در ASP.NET جهت برقراری ارتباط با پایگاه داده، نشان دادن داده ها، دستکاری داده ها، بهنگام سازی و... توسط اشیایی چون مهیا کننده های بانک های اطلاعاتی، DataSetها XML، و ... معرفی می شود.
اگر تا بحال با پایگاه داده کار نکرده اید شاید provider یک پایگاه داده برای شما نامفهوم باشـد. بطور خلاصه راهی را که باید طی کرد تا به پایگاه داده متصل شده، آنرا باز کرده و داده ها را دستکاری کرده و دستورات را اجرا نمود، بوسیله یک تهیه کننده اطلاعات مشخص می شود. در ASP.NET معمولا از دو روش برای این کار استفاده می شود. روش اول اینکه اگر پایگاه داده شما از نوع SQL Server باشد بایستی با مدل SQLClient کار کرد و اگر پایگاه داده شما غیر از SQL Server باشد (در حال حاضر) باید از روش دیگر یعنی مدل OleDb استفاده نمود. بعنوان مثال اگر پایگاه داده شما Oracle ،Sybase و یا Access باشد باید از روش OleDb استفاده کنید.
روش کار بدین صورت است که ابتدا بایستی فضانام زیر را در صفحاتی که از بانک اطلاعاتی استفاده می شود فراخوانی کرد:
<% @ Import NameSpace="System.Data" %>
<% @ Import NameSpace="System.Data.OleDb" %>
برای برقراری ارتباط با پایگاه معمولا از عبارت زیر استفاده می شود:
Dim ObjConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; DataSource=e:dbusers.mdb”)
که قسمت DataSource آدرس فایل پایگاه داده است که در اینجا یک بانک Access است. همانگونه که ملاحظه می کنید از رشته ارتباطی یا Connection String بعنوان پارامتر استفاده شده است و بوسیله متد Open ارتباط باز می شود:
objConn.Open()
لازم به توضیح است که در پایان کار بوسیله متد Close ارتباط را خاتمه می دهیم.
بمحض ارتباط با پایگاه داده می توان دستورات را به آن فرستاد. این کار معمولا بوسیله شی OleDbCommand انجام می شود. جهت انجام این کار می توان یک دستور SQL یا نام یک روال ذخیره شده (Stored Procedure) را مشخص نمود و بنا به مقتضیات می توان اعمال مختلفی را روی پایگاه پیاده نمود:
Dim objCommand As New OleDbCommand ( "Select * From users", objConn )
ملاحظه می کنید که کلاس Command از دو پارامتر رشته SQL و نام رشته ارتباطی برای فرستادن دستورات به پایگاه داده استفاده می کند. برای مثال آنچه را که در عبارت فوق دیدید می توان به بخشهای کوچکتر زیر تقسیم کرد.
ابتدا تعریف شی:
Dim objCommand As New OleDbCommand()
سپس نسبت دادن آن به رشته ارتباطی جهت برقراری ارتباط پایگاه:
objCommand.Connection= objConn
مشخص کردن عملیات مورد نظر بوسیله دستورات SQL:
objCommand.CommandText="Select * From Users"
حتی می توانید عملیات فوق را بصورت ذیل انجام دهید:
Dim objCommand As New OleDbCommand( SQL string, Connection string )
روشهای فوق دقیقا یک کار مشابه را انجام می دهند با این اوصاف که در عبارت آخر بجای شئ ارتباطی از یک رشته ارتباطی استفاده شده است. تا این مرحله هنوز عبارات فوق را به اجرا در نیاورده ایم. برای این کار راه های متفاوتی وجود دارد:
- از ExecuteNonQuery زمانی استفاده می شود که قصد برگرداندن داده ها از پایگاه مورد نظر نباشد مثلا در مواقعی که از دستورات SQL جهت درج (Insert) و بهنگام سازی (Update) استفاده شود.
objCommand.ExecuteNonQuery
- از ExecuteReader برای خواندن و برگرداندن اطلاعات از پایگاه استفاده می کنیم.
Dim ObjRead As OleDbDataReader
objRead=objCommand.ExecuteReader
- برای دستکاری یک تک مقدار مشخص و مورد نظر از متد ExecuteScalar استفاده می شود.
برای خواندن داده ها معمولا از کلاس DataReader استفاده می شود -برای خواندن نه برای اضافه کردن یا بروز کردن- این شئ بصورت مستقیم به پایگاه داده دسترسی دارد و فقط خواندنی (Read Only) است. البته این خاصیت محدودیتی برای آن است اما برای خواندن ساده داده روشی کامل بشمار می رود.
Dim objReadaer As OleDbDataReader
objReader=objCommand.ExecuteReader
Whlie objReader.Read
Response.write(objReader.GetString(0)& " <br> " )
End While
عبارت فوق جهت نمایش و چاپ داده ها بکار می رود. متد Read خواندن را تا زمانیکه به پایان نتایج نرسد ادامه می دهد و عبارت objReader.GetString(0) برای برگرداندن نسخه رشته ای ستونهای رکورد کاربرد دارد. در لیست زیر چند متد دیگر برای برگرداندن مقادیر داده ای متغیرها آمده است:
GetBoolean(x) مقدار منطقی را بر می گرداند.
GetChar(x) مقدار کاراکتری را برمی گرداند.
Get DataTypeColumn(x) نوع داده را در ستون برمیگرداند.
GetString(x) مقداررشته ای را برمی گرداند.
در این بخش شما به دانسته های بخش اول نیاز دارید. شئ بعدی که مورد بحث قرار می گیرد کلاس Data Adapter است. OleDBDataAdapter اطلاعات را می گیرد و یک ارتباط منطقی بین داده ها و کلاس Dataset ایجاد میکند. بطور کلی میتوان گفت Data Adapter در نظر اول معادل Data Command می باشد. روش استفاده از Data Adapter ها بطور معمول بصورت زیر تعریف می شود:
Dim objAdapter As New OleDBDataAdapter("Select * From Users",objConn)
ملاحظه می کنید که شئ Adapter از دو پارامتر- یکی رشته دستورات SQL و دیگری رشته ارتباطی - برای فرستادن دستورات به پایگاه داده استفاده می کند. بطور معمول DataAdapter برای پرکردن DataSetها و بروز کردن پایگاه بوسیله یک DataSet و اجرا کردن دستورات بکار می رود. اکنون نمای کلی از کاربرد فوق را در زیر می بینید:
Dim ds As DataSet = New DataSet()
objAdapter.Fill(ds,"Users")
متد Fill جهت اجرای دستور تنظیم شده در Data Adapter بکار می رود. بعبارت دیگر اطلاعات واکشی شده از پایگاه داده در یک جدول با نامی که ما تعیین می کنیم (Users) ذخیره می شود.
نکته ضروری اینست که تکنیک Mappings در اکثر مواقع کارساز است. Mappings عبارت است از ساختن یک نام مستعار (Alias) برای نام جداول در یک Dataset. این aliasها هیچگونه تاثیری در منبع داده ندارد و وقتی که بوسیله DataAdapter فرستاده می شود بصورت خودکار بنام پیش فرض تبدیل میشود. این تکنیک باعث خوانایی کد و راهنمایی برنامه نویس در ارجاع های بعدی وتشخیص جداول فراخوانی شده میشود.
objAdapter.TableMappings.Add("adbtable","Users")
with objAdapter.tableMapping(0).ColumnMappings
.Add("PID","ID"
.Add("LAstName","Lnam"(
.Add("StreetAddress","Addy"(
End with
objAdapter.Fill(ds
در تکنیک فوق بجای استفاده از عبارت ds.Tables("adbtable") میتوانیم Ds.Tables("Users") را بکار ببریم. در بخشهای آینده دیگر فواید استفاده از Mappings آمده است. همچنین کلاس CommandBuilder برای بهنگام کردن یک بانک که بوسیله Dataset صورت گرفته یک شیوه صحیح بشمار میرود:
Dim cmdBLD As New OleDBCommandBuilder(objAdapter)
که در عبارت فوق شئ objAdapter بعنوان پارامتر به دستور CommandBuilder فرستاده شده و سپس بوسیله متد Update منبع داده بهنگام می شود:
objAdapter.Update(ds,"Users")
در ادامه، مثال زیر بعنوان جمع بندی مطالب قبلی آمده است. توجه داشته باشید در مثال زیر نتیجه ای بعنوان خروجی در مرورگر نمایش داده نمی شود و فقط از منبع داده ای اطلاعات خوانده شده و یک شئ Dataset پر می شود
<%@ Import NameSpace="System.data" %>
<%@ Import NameSpace="System.Data.OleDB" %>
<Script Language="VB" Runat="Server">
Sub Page_Load( Sender As Object, E As EventArgs)
Dim objConn As New OleDBConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source=e:dbusers.mdb")
objConn.Open()
Dim ds As DataSet=New DataSet
Dim objAdapter As New OleDBDataAdapter("Select * From Users",objConn)
Dim objcmdBLD As New OleDBCommandBuilder(objAdapter)
Obj.Adapter.Fill(ds,"Users")
End Sub
</Script>
شرکت مایکروسافت در ویژوال بیسیک ورژن 3 که در سال 1993 ارائه داد از Jet که هسته اصلی MS Access بود برای ایجاد ارتباط با بانکهای اطلاعاتی استفاده نمود البته برای استفاده بهتر برنامه نویسان ، Jet را در غالب مجموعه Object هائی تحت عنوان (Data Access Object ) آورد. در نسخه 4 و 5 ویژوال بیسک ، ماکروسافت روشی دیگر برای ارتباط با بانکهای اطلاعاتی تحت عنوان Remote Data Object = RDO را مطرح ساخت این روش برای برنامه نویسی Client / Server روش مناسبی بود.
در دوم سپتامبر سال 1998 وقتی ماکروسافت ویژوال بیسیک ورژن 6 را ارائه داد روش جدیدی تحت عنوان ( Activex Data Object ) ADO را مطرح ساخت در این روش که پایه و اساس آن OLEDB بود ماکروسافت بر خلاف DAO و RDO که ساختاری پیچیده و سلسله مراتبی داشتند، از ساختاری ساده و مجزا ( غیر سلسله مراتبی ) استفاده کرد و در واقع ADO هم شامل Object هائی است که برنامه نویس بتواند از آنها برای ایجاد ارتباط با بانکهای اطلاعاتی و انجام عملیات روی آنها استفاده کند و در تاریخ 13 February سال 2002 که ماکروسافت نسخه نهائی Visual Basic.Net را ارائه داده روشی جدید برای کار با بانکهای اطلاعاتی تحت عنوان ADO.Net را آورده است. این نسخه از ویژوال بیسیک برخلاف نسخههای قبل بطور کامل مباحث OOP را پشتیبانی میکند ( FULL OOP ) در واقع ADO.Net هم مانند ADO و RDO و ADO شامل ساختاری برای ارتباط و انجام عملیات روی بانکهای اطلاعاتی است. ADO.net همانند RDO و DAO و برخلاف ADO دارای ساختار سلسله مراتبی میباشد. در این مقاله میخواهیم به مقایسه ADO و ADO.net بپردازیم. ADO در ورژنهای مختلفی در این چند سال اخیر به بازار آمده است با آمدن SQL Server 2000 ورژن جدید ADO یعنی ورژن 2.6 از این محصول ارائه شد و اکنون هم ADO 2.6 در سایت ماکروسافت قابل Download میباشد.
آخرین ورژن ADO شامل 9 تا Object است که عبارتند از :
Connection
Command
Recordset
Parameter
Field
Error
Property
Record
Stream
آبجکت Connection امکان ارتباط با Data Source که شامل بانک اطلاعاتی است را فراهم میسازد. بعنوان مثال اگر بخواهیم از آبجکت Recordset برای اضافه و یا حذف و یا تغییر در محتوای رکوردی استفاده کنیم این آبجکت از Connection برای ایجاد ارتباط با بانک اطلاعاتی مثلاً SQL Server استفاده میکند اما همانطور که گفته شد و در شکل ملاحظه میشود ساختار آبجکتهای ADO بصورت سلسله مراتبی نیست و میتوان مثلا Recordset ای ایجاد نمود که مستقل از آبجکت Connection بتواند با بانک اطلاعاتی ارتباط برقرار نماید.
در ADO علاوه بر آبجکتها، چهار Collection هم دیده میشود که عبارتند از :
Parameters
Fields
Properties
Errors
که هرکدام از آنها شامل آبجکتهائی از همان نوع هستند بعنوان مثال ساختاری که برای Recordset کشیده شده بیان کننده آن است که این آبجکت شامل Collection های Fields و Properties بوده و مثلاً Collection مربوط به Fields شامل آبجکتهای فیلد است.
آبجکت فیلد اطلاعاتی را راجع به یک ستون از Recordset در خود نگه داشته است.
در ADO آبجکت Command هم وجود دارد که از آن میتوان برای اجرای یک فرمان SQL استفاده نمود البته بهترین روش برای اجرای Stored Procedure نیز استفاده از متد Execute مربوط به همین آبجکت است .
بعنوان مثال :
Dim cn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
cn.Open " Provider = sqloledb ; Data Source=serverName ; Initial Catalog = northwind ", "sa" , "password"
cmd.ActiveConnection = cn
cmd.CommandText = "sp_who"
cmd.CommandType = adCmdStoredProc
Set rs = cmd.Execute
Debug.Print rs(0)
rs.Close
از آبجکت Parameter هم برای مشخص کردن مقادیر پارامترهای ورودی یک Stored Procedure استفاده میکنیم.
آبجکت Property برای استفاده از Dynamic Property استفاده میشود که Property هایی هستند که وابسته به Provider بوده و استاندارد نیستند .
از Record برای دسترسی به یک سطر از Recordset و ویژگیهای مربوط به آن سطر استفاده میکنیم .و آبجکت Stream هم به منظور ذخیره و بازیابی اطلاعات بصورت باینری در یک فیلد از Record در نظر گرفته شده است.
تا اینجا باساختار ADO آشنا شدیم حال به تشریح ADO.net میپردازیم .
ADO.Net مجموعهای از Class های Interface ها و دستوراتی جهت مدیریت و کار با بانکهای اطلاعاتی است. در بحث Net . مجموعهای از Class های مربوط به هم در یک غالب تحت عنوان Name Space ارائه شده است Net. شامل تعدادی Name Space است که در غالب .Net Framework قرار دارد. تمام ساختار ADO.net در چهار NameSpace قرار دارد که عبارتند از :
System.Data.SqlClient.
System.Data.OleDb.
System.Data.Odbc.
System.Data.
اگر بخواهیم از بانکهای SQL Server استفاده کنیم System.Data.SqlClient بهترین انتخاب است در این NameSpace امکاناتی فراهم شده تا بتوانیم Application های بنوسیم و در آنها با SQL Server ارتباط برقرار نمائیم بطوریکه برنامهها از Performance بالائی برخوردار باشند.
در صورتی که کاربر بخواهد از بانکهای رابطه ای دیگر نظیر Oracle استفاده کند میتواند از System.Data.OleDb بهره گیرد.
System.Data.Odbc برای ارتباط با بانکهای اطلاعاتی از طریق ODBC میباشد System.Data هم شامل Provider های خاص نظیر DataSet و DataTable است. ADO.net نیز شامل Object ها و Collection هائی است که از مهمترین آنها میتوان موارد ذیل را شمرد:
OleDBConnection
OleDBCommand
OledbDataReader
OleDBDataAdapter
SelectCommand
InsertCommand
UpdateCommand
DeleteCommand
DataTable
DataRelation
OleDBConnection آبجکتی است شبیه به آبجکت Connection در ADO ، که امکان ایجاد ارتباط با بانک را فراهم میسازد این آبجکت متدهایی برای اجرای فرامین SQL نیز داراست .OleDBCommand هم مشابه آبجکت Command در ADO میباشد.
از این آبجکت نیز برای اجرای Stored Procedure و اجرای فرامین SQL استفاده میشود. آبجکت بعد OledbDataReader است که برای گرفتن اطلاعات از Database استفاده میشود. البته لازم به ذکر است Resultset ای که با این روش ساخته میشود بصورت ReadOnly و Forwardonly میباشد. OleDBDataAdapter آبجکت جدیدی در Ado.net است که خود شامل چهار آبجکت برای انجام فرامین SQL میباشد که عبارتند از :
SelectCommand
InsertCommand
UpdateCommand
DeleteCommand
که به ترتیب برای واکشی اطلاعات، اضافه نمودن اطلاعات جدید به داخل بانک ، به هنگام سازی اطلاعات و حذف اطلاعات استفاده میشود. این آبجکت به همراه آبجکت Dataset استفاده میشود و برای پرکردن Recordset موجود در Dataset بکار میرود.
آبجکت بعدی Dataset است که مهمترین آبجکت در Ado.net میباشد این آبجکت شامل دو Collection به نام های DataTables و DataRelations است. همانطور که میدانید در ADO هم آبجکت Recordset داشتیم اینجا مجموعهای از Recordset ها در داخل یک DataTables نگه داشته میشود و میتوان بین DataTable های مختلف رابطه نیز ایجاد نمود که این روابط هم داخل یک مجموعهای با نام DataRelations نگه داشته میشود. در واقع DataTable در ADO.net معادل همان RecordSet در ADO میباشد.
تکنولوژی
Bluetooth که بعضی ها در فارسی آن را به دندانه آبی ترجمه کرده اند. استانداردی برای امواج رادیویی است که که برای ارتباطات بی سیم امپیوترهای قابل حمل و نقل (مانند lap top ها) و تلفن های همراه و وسایل الکترونیکی رایج استفاده می شوند این امواج برای فاصله های نزدیک استفاده می شوند و برای ارتباطات بی سیم تکنولوژی ارزانی محسوب می شوند. و بوسیله این تکنولوژی می توانید بین دو وسیله که دارای این تکنولوژی باشند به صورت بی سیم پیغام، عکس یا هر کلاً اطلاعات رد و بدل کنید.
رادیوی Bluetooth در داخل یک میکرو چیپ قرار دارد و در باند فرکانسی 2.4 گیگا هرتز عمل می کند. این تکنولوژی از سیستم "Frequency Hoping Spread Spectrum" استفاده می کند، که سیگنال آن 1600 بار در ثانیه تغییر می کند که کمک بزرگی برای جلوگیری از تداخل ناخواسته و غیر مجاز است. علاوه بر این بوسیله نرم افزار کد شناسایی وسیله طرف مقابل چک می شود. بدین ترتیب می توان اطمینان حاصل کرد که اطلاعات شما فقط به مقصد مورد نظر می رسد.
این امواج با دو قدرت وجود دارند. سطح قدرت پایین تر که محیطهای کوچک را می تواند پوشش دهد ( مثلاً داخل یک اتاق ) یا در نوع با قدرت بالاتر که رنج متوسطی را می تواند پوشش دهد. ( مثلاً کل یک خانه را متواند پوشش دهد. ) این سیستم هم برای ارتباط نقطه به نقطه و هم برای ارتباط یک نقطه با چند نقطه می تواند استفاده شود. دارای پهنای باند 720Kbs و 10 متر قدرت انتقال (در صورت تقویت تا 100 متر قابل افزایش است ) می باشد. این تکنولوژی که از سیستم گیرندگی و فرستندگی در جهت مناسب استفاده می کند. قادر است امواج رادیویی را از میان دیوار و دیگر موانع غیر فلزی عبور دهد. اگر امواج مزاحم دستگاه ثالثی باعث تداخل شود انتقال اطلاعات کند می شود ولی متوقف نمی شود.
با سیستمهای امروزی بیش از 7 دستگاه می توانند برای برقراری ارتباط با تولید کننده امواج در یک دستگاه دیگر فعال شوند. به این شیوه Piconet می گویند چندین piconet را می توان به یکدیگر متصل کرد که یک scatternet را تشکیل می دهند.
Bluetooth SIG
سازمان Bluetooth SIG یا Special interest group در سال 1998 بوسیله سونی اریکسون، IBM، Intel، نوکیا توشیبا بوجود آمد. و پس از آن شرکتهای تری کام، Lucent، مایکروسافت و موتورولا و بیش از 2000 کمپانی دیگر به این سازمان پیوستند.
فرایند صدور جواز و گواهینامه:
قبل از اینکه یک کارخانه بتواند محصولی که از تکنولوژی بی سیم Bluetooth استفاده می کند وارد بازار کند باید جواز آن را از دو جهت دریافت کند. ابتدا محصول مورد نظر استانداردهایی لازم دارد که بتواند با دستگاههای دیگر که دارای تکنولوژی بی سیم Bluetooth هستند ارتباط برقرار کند. دیگر اینکه باید مجوزهای لازم برای این سیستم چه در کشور سازنده و چه در کشوری که محصول به فروش می رود مجوزهای قانونی آنها را دریافت کند.
این تکنولوژی از سال 1990 به عنوان استاندارد کامپیوترهای شخصی (PC ) برای هارد دیسک ها بوده است و این زمانی بود که تکنولوژی مذکور جای درایوهای ESDI و MFM را گرفت یعنی زمانی که هارد دیسک ها به طور متوسط حجمی معادل 200 مگا بایت داشتند. در سال 1990 اولین هارد دیسک یک گیگا بایتی وارد بازار شد و قیمتی برابر 200 دلار در بازار آمریکا داشت. از آن پس تا کنون IDE تکنولوژی مورد استفاده بوده زیرا هارد دیسکها را با قیمت پایین در اختیار مصرف کننده قرار می داد، جای کمتری می گرفت و سرعت مناسبی داشت.
همتای IDE در آن زمان SCSI ( که مخفف Small Computer System Interface است) بود. SCSIکمی از IDE سریعتر است اما بسیار گرانتر است. به علاوه احتیاج به خرید یک ادپتر SCSI که ارزان هم نیست احتیاج دارید. به عبارت دیگر IDE بازار هارد دیسکهای کامپیوتر های شخصی را در انحصار خود گرفت. آنطر که به نظر می رسد کارخانه های معتبر حداقل یک تا دو سال دیگر به تولید هارد دیسکهای با تکنولوژی IDE ادامه دهند.
هارد دیسکهای IDE از کابلهای ریبون پهنی استفاده می کنند که در داخل کامپیوتر بسیار به چشم می آیند و مرتب کردن این کابلها در داخل کامپیوتر خود هنری است.
تکنولوژی هارد دیسک های ساتا ( SATA ) بر اساس پردازش اطلاعات متوالی ( سریال ) است. یعنی انتقال اطلاعات از هارد دیسک به باس دیتا و در جهت عکس به طور منظم و در دورهای زمانی مشخص انجام می گیرد.
هارد دیسکهای ساتا از کابلهای ریبون با پهنای کمتر استفاده می کنند که برای کسانی که آنرا اسمبل می کنند باعث بسی خوشبختی است. این کابلهای نازک دارای کانکتورهای بست داری هستند که کار کردن با آنها را ساده تر می کند.
هارد دیسکهای ساتا اطلاعات را با سرعت متوسط 150Mb بر ثانیه انتقال می دهند. اما مقاله های زیادی روی اینترنت در مورد هارد دیسکهای با سرعت 3Gb در ثانیه خواهید یافت.
اما بیایید این دو را در عمل با یکدیگر مقایسه کنیم و ببینیم چرا صنعت در آینده تکنولوژی SATA را بر خواهد گزید.
تا کنون در مقایسه دو هارد دیسک به قیمت هم توجه داشتیم اما حالا بدون در نظر گرفتن قیمت و تکنولوژی مرسوم کارایی را بررسی می کنیم.آزمایش از این قرار بود. یک کامپیوتر قدیمی را به یک هارد SATA مجهز کردیم. و بعد از آن دو کامپیوتر امروزی ( پنتیوم 4 ) با سرعت متعارف را با هارد دیسک هایIDE برای مقایسه انتخاب کردیم. آزمایش ها و نتایج به قرار زیر بودند.
آزمایش 1
آین آزمایش یک انتقال فایل معمولی بود. برای اینکه در هر سه کامپیوتر انتقال اطلاعات کاملاً مشابه باشد در ویندوز XP شاخه :
c:windowssystem32
انتخاب شد در یک سیستم که در آن ویندوز XP اجرا می شود این شاخه در حدود 330 مگابایت حجم دارد. و حدود 2000 فایل در آن وجود دارد. یک فولدر جدیر در درایو C (پارتیشن C ) از هارد دیسک ایجاد شد سپس در DOS فرمان
copy>c:>windows> system32>*.*
اجرا شد که همانطور که می دانید این دستور همه فایلهای داخل شاخه system32 را در فولدر جدید کپی می کند و نتایج جالب بدست آمده آز این قرار بود:
کامپیوتر و نوع هارد دیسک |
زمان انتقال اطلاعات |
سیستم جدید اول همراه با IDE | 127 ثانیه |
سیستم جدید دوم همراه با IDE | 151 ثانیه |
سیستم قدیمی همراه با SATA | 44 ثانیه |
آزمایش 2
دومین آزمایش زمان بوت شدن است که زمانهایی که مربوط به سخت افزار است حذف شده است. یعنی از لحظه ای که تصویر آغازین ویندوز به نمایش در می آید تا لحظه ای که دسک تاپ کامپیوتر به حالت عادی در می آید زمان اندازه گرفته شد نتایج به قرار زیر است
کامپیوتر و نوع هارد دیسک |
زمان بوت |
سیستم جدید اول همراه با IDE | 28 ثانیه |
سیستم جدید دوم همراه با IDE | 28 ثانیه |
سیستم قدیمی همراه با SATA | 17 ثانیه |
توجه: در این تستها به کارخانه سازنده دیسکها اشاره نشده است مطمئناً با در نظر گرفتن این فاکتور تغییر خواهد کرد ولی هر دو مدل IDE و SATA از هارد دیسک ساخت یک کارخانه استفاده شده است.
اساساً سه تکنولوژی کریستال مایع در مانیتورهای LCD استفاده شده است که عبارتند از TN+film , IPS ,MVA مهم نیست که از کدام تکنولوژی استفاده شود همه آنها از یک اساس پیروی می کنند.
یک یا چند لامپ نئون روشنایی صفحه را تأمین می کنند برای مدلهای ارزانتر یک لامپ نئون استفاده شده است اما در مدلهای گرانتر ممکن است تا چهار لامپ یا حتی بیشتر پیدا کنید.
تعداد لامپهای نئون تأثیری در کیفیت تصویر ندارند. در عوض لامپ لامپ دوم به عنوان یک پشتیبان عمل می کند اگر برای لامپ اول مشکلی پیش بیاید. در واقع عمر مفید مانیتور افزایش می یابد از آنجا که یک لامپ نئون معمولاً 50000 ساعت کار میکند در حالیکه وسایل الکترونیکی 100000 تا 150000 ساعت کار می کنند.
برای اینکه از یکنواختی صفحه تصویر اطمینان حاصل شود نور بوسیله یک سیستم منعکس کننده شدت یکسانی پیدا می کند اگر چه ممکن است در نگاه اول به نظر نرسد ولی عملکرد این صفحات فوق العاده پیچیده است در حقیقت 2 پانل وجود دارد یکی در هر طرف ساب پیکسلها که هر کدام با یک فیلتر قرمز سبز آبی پوشش داده شده است در یک مانیتور 15 اینچ تعداد ساب پیکسلها به "1024x768x3=2359296" میرسد هر سلول RGB بوسیله یک ترانزیستور که ولتاژ مختص به خودش را دارد کنترل می شود و این ولتاژ که در محدوده بزرگی تغییر می کند باعث می شود که کریستالهای مایع در هر ساب پیکسل در یک زاویه خاص بچرخند که این زاویه تعداد نورهای عبوری از هر ساب پیکسل را تعیین می کند ( منظور سه نور قرمز سبز و آبی است ). که در حقیقت سبب بوجود آمدن تصویر صفحه نمایش می شود. هدف نهایی کریستالها منحرف کردن نور برای عبور از میان فیلترهای پلاریزه است قبل از اینکه دیده شود اگر کریستالها همه در جهت فیلتر قرار گرفته باشند نور از آن عبور می کنند و برعکس اگر همه آنها عمود بر فیلتر قرار گرفته باشند صفحه نمایش سیاه باقی می ماند.
کریستال مایع:
اصولاً کریستالهای مایع موادی هستند که به طور فیزیکی دارای خاصیتهای جامد و مایع هر دو هستند. یکی از خاصیتهای جالب آنها توانایی آنها در تغییر موقعیت بسته به ولتاژ اعمالی به آنها است. اجازه دهید نگاه دقیقتری به آنها بیندازیم. در دنیای علم و تکنولوژی کریستالهای مایع همیشه جالب توجه بوده اند.
در سال 1888 «Friedrich Reinitzer» یک گیاه شناس اتریشی در مورد نقشی که کلسترول در گیاهان بازی می کرد تحقیق می کرد. یکی از آزمایشات او در معرض حرارت قرار دادن ماده بود. او کشف کرد کریستالها در دمای 14/5 درجه تبدیل به سیال و یک حالت ابری می شدند و در دمای 178/5 درجه یک مایع واقعی بودند. او اکتشافش را با اتو لهمان یک فیزیکدان آلمانی که کشف کرده بود مایعات خواص مشابه کریستال دارند در میان گذاشت. به خصوص راجع به رفتار آن زمانیکه به آن نور تابانده می شد بنابراین نام آن بوسیله اتولهمان به این صورت نام گذاری شد: کریستال مایع.
شکل بالا: یک ملکول با خواص کریستال مایع است به نام متوکسی بنزیلیدن بوتیلانالین
نمای نزدیک یک کریستال مایع
FSB مخفف Front side Bus است و همچنین تحت نامهای باس پرسسور و باس حافظه یا باس سیستم شناخته شده است. FSB پروسسور را به حافظه اصلی ( رم ) و سایر اجزاء داخل کامپیوتر متصل می کند. FSB می تواند 133و 266 و 400 MHz یا بالاتر باشد. زمانی که کامپیوتر یا مادربرد می خرید یکی از مهمترین مشخصاتی که باید به آن توجه کنید FSB است.
سرعت FSB بوسیله بایاس سیستم یا جامپر ( jumper ) که روی مادربرد قرار دارد تعیین می شود. بیشتر مادربردها اجازه تغییر FSB را تا جاییکه کامپیوتر over clock نشود می دهند.
قفل شدن سخت افزار کامپیوتر، از دست دادن ( خراب شدن ) اطلاعات یا ایرادات دیگر ممکن است از بکار بردن یک سخت افزار قدیمی با یک مادربرد با FSB بالا باشد. بنابراین سازگاری قطعات کامپیوتر را با مادربرد و یا FSB مادربرد چک کنید. در ضمن ببینید که آیا FSB کامپیوتر شما به طور مناسب تنظیم شده است over clock کردن کامپیوتر معمولآ چنین اشکالاتی بوجود می آورد.
تعریف کلی از اکسسAccess
اکسس ابزاری برای تولید بانکهای اطلاعاتی رابطه ای است. بانکهای اطلاعاتی امکان گردآوری انواع اطلاعات را برای ذخیره سازی ،جستجو و بازیابی فراهم میکند.
اجزا بانک اطلاعاتی اکسس عبارتند از:
DataBase:
1. Table
2. Query
3. Form
4. Report
5. Macros
6. Modules
• Table :(جدول ) هر جدول برای نگهداری دادههای خام بانک اطلاعاتی است.دادهها را شما در جدول وارد میکنید.جداول سپس این دادهها را به شکل سطرها و ستونهایی سازماندهی میکند.
• Query :هر پرس و جو برای استخراج اطلاعات مورد نظر از یک بانک اطلاعاتی مورد استفاده قرار میگیردهر پرس و جو میتواند گروهی از رکوردها را که شرایط خاص دارا هستند انتخاب کند.پرس و جوها را میتوان بر اساس جداول یا پرس و جوهای دیگر اماده نمود. با استفاده از پزسوجوها میتوان رکوردهای بانک اطلاعاتی را انتخاب کرد، تغییر داد و یا حذف نمود.
• Form :متداولترین روش استفاده از فرمها،برای ورود و نمایش دادهها است.
• Report :گزارش ها میتوانند بر اساس جدول ،پرسوجوها باشند ،قابلیت گزارش چاپ دادهها میباشدگزارشها را میتوان بر اساس چند جدول و پرسوجو تهیه نمود تا رابطه بین دادهها را نشان داد.
• Macro :ماکروها به خودکار کردن کارهای تکراری ،بدون نوشتن برنامههای پیچیده یا فراگیری یک زبان برنامه نویسی ، یاری میکند، در واقع ماکروها یکسری قابلیتهایی هستند که امکان سریع سازی را فراهم میسازند.
• Modules : محیط بسیار قوی و با کیفیت برای برنامهنویسی محاسبات و عملیات پیچیده روی سیستم بانک اطلاعاتی.
-----------------------------------
الف - تعریف دادهData :
هرگونه اطلاعات لازم و کاربردی درباره یک موجودیت را یک داده میگویند.
ب- تعریف Fild :
به هر ستون یک جدول که در بر گیرنده کلیه اطلاعات مربوط به آن ستون میباشد و بخشی از یک موجودیت را تشگیل میدهد فیلد گفته میشود.
ت- تعریف Record :
به هر سطر یک جدول که اطلاعات مربوط به یک موجودیت را نشان میدهد ، رکورد گویند.
ث- تعریف پایگاه دادهای ارتباطی:
پایگاه دادههای ارتباطی، مجموعهای از جدولهای داده است که یک فیلد مشترک در هر یک از جدولهای موجود دارد و از طریق آن میتوان دادهها را بهم ربط داد.به این مدل از پایگاه دادهها ، پایگاه دادههای ارتباطی RelationShip میگویند.