نمایش نتایج: از شماره 1 تا 7 , از مجموع 7

موضوع: برنامه نویسی بانکهای اطلاعاتی با ado.net در vb.net

  1. *Mohammad* آواتار ها
    *Mohammad*
    مدیر سابق
    May 2011
    63,336
    22,637
    تشکر شده : 91,444

    پیش فرض برنامه نویسی بانکهای اطلاعاتی با ado.net در vb.net

    باتوجه به آشنایی کوتاه مدت بااین سایت و ارائه یک مقاله تحت عنوان نحوه پشتیبان گیری از بانکهای اطلاعاتی SQL Server به صورت یک Job بااستفاده Microsoft SQL Agent در #C ، اما با توجه به نیاز کاربران و دیدن سوالات اعضا و پراکندگی اطلاعات استفاده کنندگان برآن شدم یک یک مقاله مفصل و کامل در زمینه برنامه نویسی بانکهای اطلاعاتی در VB.Net 2005 و در قالب چند قسمت به تمامی عزیران علاقه مند تجربیات چند ساله خود را درزمینه برنامه نویسی بانکهای اطلاعاتی منتقل نمایم. در سلسله مقالاتی که قرار است ارایه شود کلیه کلاسها و متدها و..... دررابطه با تکنولوژی ADO.Net به همرا مثالهای کاربردی مورد بحث قرار خواهند گرفت. بنابراین تمام دوستانی که قصد یادگیری رادارند توصیه می شود در هنگام خواندن مقالات، مقالات قسمتهای قبل را مطالعه نموده باشند. قبل از بررسی ADO.Net لازم است دوستان عزیر خلاصه ای از تاریخچه دسترسی به داده ها را بدانند حتماً شما با اصطلاحاتی نظیر DAO ، ADO, RDO , ODBC و...برخورد کرده و یا حتی باآن نیز برنامه نویسی کرده باشید اما مفهوم ان و تفاوتهای آنان را درک نکرده باشید پس ابتدا در این مقاله راجع به تکنولوژیهایی که در بدو تولد تا امروزه جهت دسترسی به منابع داده مورد استفاده قرار گرفته اند را بررسی می نماییم. دانستن اینکه دسترسی به داده ها نقش تعیین کننده ای در توسعه برنامه های کاربردی درتمام سالهای گذشته، می تواند در درک دلیل و نحوه توسعه ADO.NET به شما کمک می کند. تکنولوژی های متفاوت بسیاری بمنظور ذخیره و بازیابی داده ها وجود دارند که با حروف اختصاری از جمله DAO,ADO,RDO,ODBC,OLEDB معرفی شده اند اولین بار روش دسترسی به داده ها با Microsoft Access 1.0 و Visual Basic 3.0 ارایه شد. پایگاه Access ایجاد شده بخوبی با Viisual Basic کار می کرد بطوریکه که هنوز در برنامه های کاربردی ساده استفاده می شوند. اولین مدل داده ای در Visual Basic مدل DAO(Data Access Object) نام داشت که در Visual Basic 3.0 ارایه شد و قادر بود با پایگاه داده Access و دیگر انواع پایگاه داده تعامل داشته باشد. اما برای کار با پایگاه داده روی کامپیوترهای شخصی مناسب تر بود. کار با آن نیز ساده تر بود زیرا ابزارها و روشهای ساده ای را برای دسترسی به داده ها در محیط Visual Basic از قبیل مقید کردن کنترلها به داده ها، ارایه می کرد. آن همچنین امکان نوشتن کدی بمنظور دستیابی به منابع داده ای مختلف را با استفاده از یک مجموعه کد فراهم می کند. بطوریکه تنها چیزی که تغییر می کند نوع منبع داده ای است که قصد اتصال به آن را دار ید. ا،ز منابع داده ای اغلب غیر رابطه ای بودند. پایگاه های داده غیر رابطه ای مانند Flat File ها داده ها را بصورت دود ویی و پی در پی ذخیره من کنند. پایگاه داده ISAM ‏در این دسته قرار داشته و روش هایی برای مدیریت سیستم دسترسی به رکوردها و فایل های ذخیره شده روی هارد دیسک ارائه می کند. ‏تکئولوژی های دسترسی په داده ها ‏سیر تکاملی تکنولوژی های امروزی دسترسی به داده ها را می توان بصورت زیر خلاصه کرد. هر تکنولوژی جدید، نواقص تکنولوژی های پیشین را مرتفع می ساخت. بطور کلی ابزا رهای‏. موجود برای توسعه دهندگان پایگاه داده عبارتند از: ODBC - Open Database Connectivity : موفق ترین ارائه کننده داده در طول تاریخ بوده است. این تکنولوژی توسط اکثر زبان های توسعه برنامه های کاربر دی پشتیبانی می شود که این امر برای دیگر تکنولوژی ها صادق نیست. SGA(SQL Access Group) در سال 1989 ‏بمنظور توسعه و تعریف استانداردهایی ارائه شد که امکان تغییر سیستم هاژ داده ای بحلی یا راه را بدون بازنویسی هیچ کدی، برای توسعه دهندگان فراهم می کرد و نیز شرکت ها را قادر می ساخت در عوض داشتن نسخه های مجزا روی هو کامپیوتر سرویس گیرنده، پایگاه داده متمرکزی داشته باشند. این گروه شامل تعدادی از شرکت های تولید کننده سخت افزار و نرم افزار از جمله Hewlett-Pakard,Digital,Sun,Informix,IBM,Oracle و Microsoft می باشد. همچنین این گروه API ‏را در سال 1990 ‏ارائه کرد که امکان دسترسی به انواع مختلف پایگاه داده را برای برنامه هایClient-Server ‏فراهم می کرد. هر چند این کار تحقق نیافت تا اینکه در سال 1992 ‏یک استاندارأ مناسب براز نرم افزاری های تجاری ارائه شد. ‏Microsoft اولین شرکتی بود که بصورت تجاری أن را با نام ODBC 1.0در همان سال ارائه ‏کرد. بسیاری دیگر از شرکت ها ی تولید کننده پایگاه داده نیز از ODBC در محصولات خود پشتیبانی می کردند. DAO - Data Access Objects : در اواخر سال 1992 بهمراه Access 1.0 ارائه شد. DAO تکنولوژی داده ای است پیرامون ساخت موتور توانای Jet که برای دسترسی به پایگاه داده ای Microsoft Access و پایگاه داده های خارجی ISAM شامل منابع داده ای ODBC ، Foxpro ، Paradox ، Dbase و Bitware استفاده می شود. ویژوال بیسیک نسخه 3 از DAO و موتور پایگاه داده Jet پشتیبانی می کند. همه چیز باید از موتور Jet عبور کند، حتی زمانیکه بوسیله API های ODBC به دیگر منابع داد د‏اده ای دسترسی دارید. آن سیستم عامل های 16 ‏بیتی را پشتیبانی کرده و برای محیط ویندوز 16 ‏بیتی بهترین انتخاب است. DAO قابلیت دسترسی به منابع ODBC و Jet را با کمک مجموعه ای از کدهای مشترک ارائه می کرد. بهرحال این گرامرانطور که باید ساده و سریع و انعطاف پذیر نبود. بعلاوه آن برای برنامه های کوچک که هر دوی برنامه و پایگاه داده روی یک کامپیوتر قرار دارند. طراحی شده ‏بود. Jet برای پایگاه داده Access بهینه شده است و برای کار با دیگر منابع مناسب ‏نیست. زیرا دردیگرمنابع دستورات باید پیشی از ارسال به سرور پایگاه داده، ترجمه ‏شود. با این همه آن در بسیاری از موارد کارا بود. زیرا توسط محصولات Microsoft Office ‏پشتیبانی شده ‏بود و هر کاربر می توانست بوسیله Office از این تکنولوژی استفاده کند. RDO - Remote Data Objects : در سال 1995 ‏همراه با نسخه 31 ‏بیتی VB 4 ارائه شد که امکان دسترسی به منابع دادهای ODBC دور مانند Microsoft SQL Server و Oracle ‏را بدون پیچدکی گرامر API های ODBC فراهم می کرد. مدل شی RDO بر اساس DAO شکل گرفته است و برخی از بهترین خصوصیات هسته اصلی و واسط کاربر DAO را شامل می شود. همچنین به استفاده از موتور Jet نیاز ندارد که این امر باعث کارایی یهتر آز نسبت به DAO در تعامل با پایگاه های داده غیر Access می شود. RDO ‏یک مکان نمای فوشمند دارد که پردازش داده ها را سریعتر می سازد.در مقایسه با DAO سریعتر بوده و سربار کمتری تولید می کند و کارکرد بهتری با پرس و وجوها و مجموعه نتایج دارد. اغلب این مزایا از برقراری ارتباط مسقیم با API های ODBC و‏بدون نیاز به عبور از بین لایه های دیگر ناشی می شود‏. با اینکه از بهترین تکنولوژی های زمان خویش بود، مدت زمان زیادی از آن استفاده نشد. ODBC Direct: نمونه دیگری از ADO بود که در سال 1997 ‏به همراه Visual basic 5 ارائه شد و امکان حرکت بین موتور Jet و RDO را فراهم می کرد. آن با کنار گذاشتن موتور Jet امکان دسترسی مستقیم به منابع داده ای ODBC را فواهم می کرد. این تکنولوژی ذاتا" از موتور ADO ‏استفاده می کند. در حقیقت مشابه RDO است، اما با شهرت DAO شناخته می شد. )Object Direct در مقایسه با DAO ‏کارایی بیشتر ، منابع بهتر، دسترسی آسانتر به وظایف سمت سرور، روش های بهنگام سازی و پرس و جوی بهتری را ارائه می کند. نقص آن ناتوانی در دسترسی به منابع غیر ODBC بود.
    OLEDB - Object Linking And Embedding : در این مدل API های ویندوز امکان تعامل با منابع داده ای رابطه ای و غیر رابطه ای را بمنظور دسترسی به داده های پرکار برد ، با استفاده از یک COM فراهم می کنند. این تکنولوژی در سال 1996 ‏ارائه شد که تمام قابلیت های ODBC را داشت و به دو بخش مصرف کننده و ارائه کننده تقسیم می شد. جزء مصرف کننده از داده ها استفاده می کند در حالیکه ارائه کننده با داده ها تعامل داشته و یک واسط کاربر به مصرف کننده گان نمایش می دهد. آن می تواند باانواع منابع داده ای غیر رابطه ای از قبیل Email، سیستم های فایل گرافیگ و بسیاری ازدیگر از منابع موسوم به کار رود. آن هسته مرکزی تکنولوژی های پایگاه داده امروزی Microsoft است. در ابتدا تنها برنامه های کاربردی ++C سترسی مستقیم به OLEDB‏ را داشتند و کد مورد نیاز برای استفاده از آن بسرعت می توانست پیچیده شود.
    ADO - Activex Data Objects: پوششی برای OLEDB می باشد که درسال 1996 بمنظور پنهان ساختن گرامر پیچیده OLEDB ارائه شد.این تکنولوژی خصوصیات یکسانی با DAO ، RDO داشته و یادگیری آن آسان است. این تکنولوژی برای ترافیک شبکه های کوچک طراحی شده و دراین محیط ها کارایی خوبی دارد .ADO تمام توانایی های OLEDB راداراست.
    RDS - Remote Data Service: مشابه ADO می باشد اما برای ارائه تکنولوژی OLEDB به برنامه های کاربردی مبنی یر وب طراحی شده است. این تکنولوژی بدون فراخوانی اضافی درسرور امکان کار باداده های روی سرویس گیرنده های وب را فراهم می کند که بااین روش منابع از سرور مستقل می شوند.
    ADO.NET : درسال 2000 این تکنولوژی ارائه شد و جدیدتر از ADO و RDS می باشد. به دلیل ایجاد در XML محصول استانداردی بوده و نوید بهبود یافتن شیوه های دسترسی به داده ها می باشد . ADO.Net می تواند با بوسیله هر برنامه ای که توانایی خواندن این استاندارد را دارد، صرفنظر از سیستم عامل (ویندوز ، لینوکس ویونیکس) یا زبان برنامه نویسی مدیریت شود. این تکنولوژی همچنین امکان دسترسی به داده ها را درحالت منفصل فراهم می سازد. بازبودن اتصالات پایگاه داده منابع با ارزش سیستم را اشغال می کند و همچنین توسعه برنامه هایی که نیاز به اتصال باز دارند ، مشکل می باشد.
    مقایسه ADO و ADO.NET : همانگونه که گفته شد ADO.NET ماهیت منفصل دارد به عنوان مثال وقتی با متد Open بااستفاده از ADO یک پایگاه داده را باز و یک Recordset را در حافظه بارکنید برای کار با Recordset بایستی اتصال شما با پایگاه داده باز باشد. ولی در ADO.NET بعد از ایجاد دیتاست و تعیین جداول درون آن می توانید اتصال به پایگاه داده را ببندید و با Dataset کار نمایید.ADO برای کار با جداول از Recordset استفاده می کند که در ان واحد امکان کار با بیش ازیک جدول وجود ندارد(حتی اگر چندین جدول را به هم پیوند زده باشید). در صورتیکه ADO.NET از Dataset استفاده می کند که Dataset می تواند شامل چندین جدول باشد. ADO داد ها در در قالب دودویی ذخیره می کند که این می تواند مشکل ساز باشد زیرا سیستم های امنیتی مانع انتقال اطلاعات بصورت دودویی می شوند. در مقاله بعدی راجع به معماری ADO.NETو همچنین بررسی کامل شی Connection و DataReader می پردازیم.

    نردبان این جهان ما و منیست
    عاقبت این
    نردبان افتادنیست
    لاجرم آن کس که بالاتر نشست
    استخوانش سخت تر خواهد شکست




    #1 ارسال شده در تاريخ 11th December 2011 در ساعت 11:12

  2. *Mohammad* آواتار ها
    *Mohammad*
    مدیر سابق
    May 2011
    63,336
    22,637
    تشکر شده : 91,444

    پیش فرض

    معماری ADO.Net : اجزاء اصلی ADO.Net فراهم کننده های دات نت(Dot Net Data Providers) و Dataset هستند. اشیاء ADO.Net را می توان به دودسته نگهداری و مدیریت داده ها (مانند Dataset ، DataRow و....) و اشیاء اتصال به منبع داده (مانند کلاسهای Connection) تقسیم بندی نمود. فضاهای نامی در ADO.Net : فضاهای نامی در شناخت یک کلاس یاسلسله مراتب به ما کمک می کند .فضای نامی ازنام مجموعه ای بعنوان قسمتی از نام کلاس یا سلسله مراتب استفاده می کند .پنج فضای نامی پرکاربرد در ADO.Net عبارتند از : System: یک فضای نامی اصلی است که کلاسهای اصلی و پایه ای را شامل می شود System.Data :مرکب از کلاسهایی است که معماری ADO.Net را می سازند .اجزایی برای کمک به مدیریت داده ها همراه با ابزارهایی برای مشاهده و بهنگام سازی داده ها را شامل می شود.در این فضای نامی پنج کلاس Dataset ، DataTable ، DataColumn ، DataRow و DataRelation وجود دارد بنابراین برای استفاده از این کلاسها ابتدای بایستی فضای نامی فوق را به پروژه اضافه نمایید.(بااستفاده از دستور Imports ) .زمانیکه باید کلاسی راازفضای نامی تعریف کنیم ، می توان از کلمه کلیدی New برای ایجاد یک نمونه شئ جدید استفاده کرد.مانند: Dim MyDataSet As New Dataset System.Data.Oledb : شامل کلاسهایی است که امکان اتصال به فراهم کننده های Oledb واجرای دستورات ونمایش نتایج را فراهم می کنند.این فضای نامی که برای اتصال به منابع داده ای Oledb مانند بانکهای اطلاعاتی Access ، Oracle و... مورد استفاده قرار می گیرد، شامل کلاسهای OledbCommand ، OledbConnection ، OledbDataAdapter و OledbDataReader می باشد. System.Data.SQLClient : شامل کلاسهایی می باشد که برای کار با فراهم کننده های SQL استفاده می شود و برای دستیابی به SQL Server 7.0 و نسخه های بالاتر بهینه شده است .اشیاء این کلاسها نسبت به اشیاء کلاسهای Oledb دارای سرعت بیشتری می باشند زیرا اشیاء Oledb نسبت به اشیاء SQL ازلایه های بیشتری استفاده می کنند .این فضا شامل کلاسهای SQLCommand ، SQLConnection ، SQLDataAdapter و SQLDataReader می باشد. System.XML : کلاسهایی برای پشتیبانی اعمال مبنی بر XML ارائه می کند و شامل کلاسهای XMLDataDocument ، ReadXMLSchema ، XMLReader و XMLWriter می باشد. فراهم کننده های (Provider) دات نت شامل تعدادی ازکلاسها هستند که به منظور اتصال بایک منبع داده ای ، اجرای دستورات و بازیابی رکوردها استفاده می شوند و دونوع فراهم کننده دردات نت وجوددارد. فراهم کننده های Oledb برای دسترسی به فراهم کننده های Oledb راه انداز های ODBC برای Access ، Oracle ، Excel ، Foxpro ، Paradox ، Dbase و هر ODBC و یا راه انداز ODBC دیگردرنظرگرفته شده را شامل می شود . این فراهم کننده ها از فضای نامی System.Data.Oledb استفاده می کنند.فراهم کننده های SQLServer برای دستیابی به SQL Server 7.0 و به بالاتر تهیه شده و مستقیما با SQL Server در تعامل می باشد و مجبور نمی باشد مانند فراهم کننده های دسته قبل از لایه های Oledb عبورنماید. بنابراین سرعت آنان بیشتر از فراهم کننده های دسته قبلی می باشند.برای استفاده از فراهم کننده های Oledb درپروژه هایتان بایستی فضای نامی Oledb را همانند زیر در پنجره کد (بالاترین نقطه) قرار دهید. Imports System.Data.OleDb
    برای استفاده از فراهم کننده های SQL درپروژه هایتان بایستی فضای نامی SQL را همانند زیر در پنجره کد (بالاترین نقطه) قرار دهید. Imports System.Data.SqlClient شئ Connection : این شی اتصالی با منبع داده ایجاد می کند . بسته به نوع منبع داده از اشیاء OledbConnection و یا SQLConnection استفاده نمایید.اگر منبع داده شما غیر از SQL Server مانند Access ، Oracle و ...می باشد از شی OledbConnection و درغیراینصورت از شی SQLConnection استفاده نمایید. یکی از خواص مهم این اشیا خاصیت Connectionstring می باشد که رشته ای را مشخص می کند که برای باز کردن منبع داده مورداستفاده قرار می گیرد.(هنگام استفاده از یک منبع داده ابتدا بایستی منبع داده موردنظررابازنمود.)هنگام استفاده از فراهم کننده Oledb در Connectionstring از پارامترهای Provider ، Data Source و User ID یا Password (درصورتیکه برروی منبع داده تنظیم شده باشند.) بایستی استفاده نمود. برای فراهم کننده های SQL از پارامترهای فوق به جز Provider بایستی استفاده نمود.(بصورت پیش فرض Provider آن SQLOLEDB می باشد).اگربرای فراهم کننده های SQL پارامتر Provider را تنظیم نمایید با پیغام خطا روبروخواهید شد.از فراهم کننده های Microsoft.Jet.Oledb.4.0 برای منابع داده Access و از فراهم کننده MSEADORA برای منابع داده اوراکل استفاده نمایید.هر پارامتر را بامقدار مناسب مقداررهی نمایید وبین پارامترهای مختلف از علامت ; (سیمی کالن) استفاده نمایید.درزیر پارامترهای مورداستفاده در خاصیت Connectionstring و شرح آنان آمده شده است: Provider : مقدار پیش فرض آن SQLOLEDB می باشد و تنها با فراهم کننده های Oledb استفاده شده و یک فراهم کننده برای استفاده تعیین می کند. Data Source یا Server : برای فراهم کننده های Oledb مسیر منبع داده را مشخص می کند مانند C:\Data\Northwind.Mdb و در فراهم کننده های SQL نام یا IP سیستمی که SQL Server برروی آن درحال اجراست . اگر سیستمی که SQL Server برروی آن درحال اجراست همین سیستمی باشد که برروی آن نیز برنامه شما درحال اجراست از عبارت Localhost و یا IP معادل آن یعنی 127.0.0.1 استفاده نمایید. Initial Catalog یا Database : نام منبع دادهای است که قصد اتصال به آن رادارید. User ID : اگر برروی منبع داده تنظیم شده باشد ذکر به همراه مقدار آن ضروری است. Password یا PWD : کلمه عبور اگر بروی پایگاه داده تنظیم شده باشد. Connection TimeOut : مدت زمان تلاش برای اتصال به یک سرور بیش از تولید خطا.میزان پیش فرض آن 15 ثانیه می باشد. Persist Security Info : نمایش یا عدم نمایش اطلاعات امنیتی در Connectionstring. مقدار پیش فرض آن False می باشد. Integrated Securiy : استفاده یا عدم استفاده از یک اتصال ایمن.دومقدار False و True رادارد .استفاده از SSPI به معنای True می باشد. بعد از ساختن رشته اتصال بایستی شئ مورد نظر را با متد Open باز نمود. بعنوان مثال اگر قصد باز نمودن پایگاه داده Northwind در مسیر درایو :C رااشته باشید به شکل زیر عمل نمایید. ابتدا فضای نام مورد نظر را به پروژه اضافه نمایید. برای این کار در پنجره کدنویسی و دربالای آن دستور زیر را بنویسید. Imports System.Data.OleDb

    نردبان این جهان ما و منیست
    عاقبت این
    نردبان افتادنیست
    لاجرم آن کس که بالاتر نشست
    استخوانش سخت تر خواهد شکست




    #2 ارسال شده در تاريخ 11th December 2011 در ساعت 11:12

  3. *Mohammad* آواتار ها
    *Mohammad*
    مدیر سابق
    May 2011
    63,336
    22,637
    تشکر شده : 91,444

    پیش فرض

    حال در رویداد Load فرم ابتدا یک شی جدید از کلاس OledbConnection تعریف نمایید. Dim Con As New OleDbConnection سپس رشته اتصال را بسازید. Con.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=C:\Northwind.Mdb" در پایان بامتد Open آن را باز نمایید. Con.Open() به علامت دابل کوتیشن بین رشته اتصال و علامت سیمی کالن بین پارامترها توجه نمایید. بعد از اتمام کار می توانید رشته اتصال را با متد Close ببندید. Con.Close() در مثال زیر نحوه اتصال به یک پایگاه داده SQL Server نمایش داده شده است.
    یک پروژه جدید ایجاد و سپس کنترلهای زیر را برروی آن قرار دهید.
    Text
    Name
    Control
    Text
    Name
    Control
    Authentication Type
    GroupBox
    TxtServerName
    TextBox
    SQL Server Authentication
    OptSQLServer
    RadioButton
    TxtUserName
    TextBox
    Windows Authentication
    OptWindows
    RadioButton
    TxtPassword
    TextBox
    Connect
    BtnConnect
    Button
    TxtDatabaseName
    TextBox
    کد مربوط به رویداد CheckChanged کنترل Radiobutton مربوط به OPtSQLServer به صورت زیر می باشد. Private Sub OptSQLServer_CheckedChanged(ByVal sender As System.Object,
    ByVal e As System.EventArgs)
    Handles OptSQLServer.CheckedChanged
    If OptSQLServer.Checked = True Then
    TxtUserName.Enabled = True
    TxtPassword.Enabled = True
    Else
    TxtUserName.Enabled = False
    TxtPassword.Enabled = False
    End If
    End Sub
    کد زیر را در پنجره کدنویسی و دربالای آن و قبل از عبارت Public Class Form1 تایپ نمایید. Imports System.Data.SqlClient حال رویداد کلیک کنترل BtnConnect را مانند زیر کدنویسی نمایید. Private Sub BtnConnect_Click(ByVal sender As System.Object,
    ByVal e As System.EventArgs)
    Handles BtnConnect.Click
    Dim Con As New SqlConnection
    Dim StrDatabaseName As String = TxtDatabaseName.Text
    Dim StrServerName As String = TxtServerName.Text
    If OptSQLServer.Checked = True Then
    Dim StrUserName As String = TxtUserName.Text
    Dim StrPassword As String = TxtPassword.Text
    Con.ConnectionString = "Data Source=" & StrServerName & ";Initial Catalog=" & _
    TxtDatabaseName.Text & ";User ID=" & TxtUserName.Text & ";Pwd=" & TxtPassword.Text & ””
    Else
    Con.ConnectionString = "Data Source=" & StrServerName & ";Initial Catalog=" & _
    TxtDatabaseName.Text & ";Integrated Security=SSPI"
    End If
    Con.Open()
    End Sub یکی دیگر از متدهای شی Connection متد State می باشد که وضعیت فعلی Connection (باز یا بسته بودن)را برمی گرداند.(عدد 1 برای باز بودن وعدد صفر برای بسته بودن برگردانده می شود).مثال زیراگر شی تعریفی Connection بسته باشد آن را باز می کند.
    If Con.State = ConnectionState.Closed Then
    Con.Open()
    End If
    متد ChangeDatabase پایگاه داده فعلی را تغییر می دهد. متد CreateCommand یک شئ OledbCommand (بعداتوضیح داده خواهد شد)برای اتصال فعلی ایجاد می کند و خصوصیت ServerVersion شماره ویرایش سزویس دهنده پایگاه داده را برمی گرداند.در پایان این مقاله یادآور می شود که به صورت زیر نیز می توانید یک شی اتصال ایجاد نمایید.(مثال اولی دررابطه با فراهم کننده های Oledb ) Dim StrCon As String = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=C:\Data\Data.Mdb"
    Dim Con As OledbConnection = New Oledbconnection(StrCon)

    نردبان این جهان ما و منیست
    عاقبت این
    نردبان افتادنیست
    لاجرم آن کس که بالاتر نشست
    استخوانش سخت تر خواهد شکست




    #3 ارسال شده در تاريخ 11th December 2011 در ساعت 11:13

  4. *Mohammad* آواتار ها
    *Mohammad*
    مدیر سابق
    May 2011
    63,336
    22,637
    تشکر شده : 91,444

    پیش فرض


    الف-شی Command وقتی لازم است که یک عبارت SQL که هیچ رکوردی برنمی گرداند را پردازش کنید، استفاده از یک شی OLEDBCommand و یا SQLCommand بهترین ایده می باشد. هریک از اشیاءفوق دو خصوصیت موردنظر را می پذیرند که عبارتند از فرمان پایگاه داده (دستور SQL ) و یک اتصال پایگاه داده ووقتی روش ExcuteNoneQuery را فراخوانی کنید شی فرمان مورد نظر را به پایگاه داده ارسال و رکوردهای تحت تاثیر را برمی گرداند. درجدول زیر مهمترین خصوصیات و متدهای این شی لیست گردیده اند.
    خصوصیت
    توضیح
    CommandText فرمانی را که می خواهید منبع داده آن را اجرا نماید برمی گرداندو یا تنظیم می کند.
    CommandType نحوه تفسیرفرمان را به منبع داده اعلام می کند مقادیرمجاز عبارتند از: CommandType.StoredProcedure : فرمانی است که یک رویه ذخیره شده را احضارمیکند CommandType.TableDirect:فرمان ، نام یک جدول است. CommandType.Text : فرمان یک عبارت SQL است .این مقدار پیش فرض است
    Connection شی اتصال برای این فرمان را برمی گرداند و یا تنظیم می کند.
    Transaction تراکنشی را که درآن فرمان اجرا می شود ، گرفته و یا تنظیم می نماید.
    متد
    توضیح
    Createparameter یک شی OLEDBParameter ایجاد می کند.
    ExecuteNoneQuery یک عبارت SQL را اجرا و ردیفهای تحت تاثیر را برمی گرداند.
    ExecuteReader فرمان راازطریق اتصال ارسال نموده و نتایج را در یک شی Datareader جدید برمی گرداند.
    ExecuteScaler فرمان را ازطریق اتصال ارسال نموده ومقدارموجوددرستون 1 ردیف 1را برمی گرداند.
    برای مثال نمونه برنامه زیر را ببینید.

    نردبان این جهان ما و منیست
    عاقبت این
    نردبان افتادنیست
    لاجرم آن کس که بالاتر نشست
    استخوانش سخت تر خواهد شکست




    #4 ارسال شده در تاريخ 11th December 2011 در ساعت 11:13

  5. *Mohammad* آواتار ها
    *Mohammad*
    مدیر سابق
    May 2011
    63,336
    22,637
    تشکر شده : 91,444

    پیش فرض

    Imports System.Data
    Imports System.Data.OleDb
    Imports System.IO.Directory
    Public Class Frmmain
    Dim Con As OleDbConnection
    Dim OledbCommand As OleDbCommand
    Dim RecordeState As Boolean
    Private Sub Frmmain_Load(ByVal sender As System.Object,
    ByVal e As System.EventArgs)
    Handles MyBase.Load
    Dim StrDataPath As String
    StrDataPath = GetCurrentDirectory.Substring(0,
    GetCurrentDirectory.Length - 10)
    StrDataPath = StrDataPath & "\Data.Mdb"
    Con = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
    & - StrDataPath)
    OledbCommand = New OleDbCommand
    OledbCommand.CommandType = CommandType.Text
    OledbCommand.Connection = Con
    End Sub

    Private Sub BtnNew_Click(ByVal sender As System.Object,
    ByVal e As System.EventArgs) Handles BtnNew.Click
    Try
    ClearTextBox()
    Catch ex As Exception
    Finally
    RecordeState = True
    End Try
    End Sub

    Private Sub BtnUpdate_Click(ByVal sender As System.Object,
    ByVal e As System.EventArgs) Handles BtnUpdate.Click
    Con.Open()
    Dim StrSQL As String
    If RecordeState = True Then
    StrSQL =
    "Insert into People_Tbl(ID,FirstName,LastName,Gender,Phone,Addr ess)"
    & _
    " Values('" & TxtID.Text & "','" & TxtFirstName.Text & "','"
    & TxtLastName.Text & "','" & CboGender.Text & "','"
    & TxtPhone.Text & "','" & TxtAddress.Text & "')"
    Else
    StrSQL = "Update People_Tbl Set ID=" & TxtID.Text & ",FirstName='"
    & TxtFirstName.Text & "',LastName='" & TxtLastName.Text & "'"
    StrSQL = StrSQL & ",Gender='" & CboGender.Text & "',Phone='"
    & TxtPhone.Text & "',Address='" & TxtAddress.Text & "'"
    StrSQL = StrSQL & " Where ID=" & TxtID.Text & ""
    End If
    OledbCommand.CommandText = StrSQL
    OledbCommand.ExecuteNonQuery()
    Con.Close()
    RecordeState = False
    ClearTextBox()
    MessageBox.Show("Update Seccessfuly", "Update Record",
    MessageBoxButtons.OK, MessageBoxIcon.Information)
    End Sub
    Sub ClearTextBox()
    Dim T As Control
    For Each T In Me.Controls
    If TypeOf T Is TextBox Then
    T.Text = ""
    End If
    Next
    End Sub

    Private Sub BtnDelete_Click(ByVal sender As System.Object,
    ByVal e As System.EventArgs) Handles BtnDelete.Click
    Dim StrSQL As String
    StrSQL = "Delete * From People_Tbl Where ID=" & TxtID.Text
    Con.Open()
    OledbCommand.CommandText = StrSQL
    OledbCommand.ExecuteNonQuery()
    Con.Close()
    MessageBox.Show("Record Seccessfully Deleted.",
    "Delete Record", MessageBoxButtons.OK,
    MessageBoxIcon.Information)
    End Sub
    End Class

    نردبان این جهان ما و منیست
    عاقبت این
    نردبان افتادنیست
    لاجرم آن کس که بالاتر نشست
    استخوانش سخت تر خواهد شکست




    #5 ارسال شده در تاريخ 11th December 2011 در ساعت 11:13

  6. *Mohammad* آواتار ها
    *Mohammad*
    مدیر سابق
    May 2011
    63,336
    22,637
    تشکر شده : 91,444

    پیش فرض

    برای استفاده از رویه های ذخیره شده (Stored procedure) ابتدا خاصیتCommandType شی Command را برایر CommandType.StoredProcedure قرار دهید و سپس برای بجای یک رشته SQL نام رویه ذخیره مورد نظر را در خاصیت CommandText تنظیم نمایید. به عنوان مثال اگر یک رویه ذخیره شده بانام SalesByYear در بانک اطلاعاتی داشته باشید:
    Dim OledbCommand as New OledbCommand(“SalesByYear”,Con) OledbCommand.CommandType= CommandType.StoredProcedure ب) شی DataReader : این شی یک خواننده روبه جلو (Forward Only Reader) می باشد ونمی تواند در مقادیر فیلدهای رکوردها تغییری حاصل نماید.این شی مستقیماً باداده ها سروکاردارد و برخلاف DataSet درحافظه قرار ندارد.برای داشتن نمایش سریعی از داده ها این شی مناسب می باشد.DataReader نمی تواند به یک DataGrid مقید شود. برای ومقدار دهی یک DataReader از متد ExecuteReader شی Command استفاده نمایید. دو نوع شی OledbDataReader و SqlDataReader برای کار بامنابع Oledb و SQL Server وجوددارد. Dim ODataReader As OleDbDataReader
    ODataReader = OCommand.ExecuteReader
    یکی از مهمترین متدهای این شی متد Read می باشد که برای خواندن یک رکورد ورفتن به جلو از این متداستفاده می گردد. در مثال زیر تعداد رکوردهای جدول Customers نمایش داده می شود.
    Dim Con As New SqlConnection
    Con.ConnectionString =
    "Data Source=Localhost;Initial Catalog=Northwind;Integrated Security=SSPI"
    Con.Open()
    Dim SCommand As SqlCommand
    Dim StrSQL As String = "Select * From Customers"
    SCommand = New SqlCommand(StrSQL, Con)
    Dim SDataReader As SqlDataReader
    SDataReader = SCommand.ExecuteReader
    Dim CountOfRcord As Integer = 0
    Do While SDataReader.Read
    CountOfRcord += 1
    Loop
    ویژگی مهم دیگر این شی ویژگی Item می باشد که برای بدست آوردن مقدار یک فیلد خاص مورد استفاده قرار می گیرد.در مثال زیر اگر یک فرم Login را بااستفاده از این شی ساخت شده است. به عنوان مثال اگر یک جدول با فیلدهای User_Name و User_pass در بانکی بانام MyData داشته باشید:

    نردبان این جهان ما و منیست
    عاقبت این
    نردبان افتادنیست
    لاجرم آن کس که بالاتر نشست
    استخوانش سخت تر خواهد شکست




    #6 ارسال شده در تاريخ 11th December 2011 در ساعت 11:13

  7. *Mohammad* آواتار ها
    *Mohammad*
    مدیر سابق
    May 2011
    63,336
    22,637
    تشکر شده : 91,444

    پیش فرض

    Imports System.Data
    Imports System.Data.OleDb
    Public Class Form1
    Dim Con As New OleDbConnection
    Dim OleComUser As OleDbCommand
    Dim OleRdrUser As OleDbDataReader
    Private Sub Form1_Load(ByVal sender As System.Object,
    ByVal e As System.EventArgs) Handles MyBase.Load
    Con.ConnectionString =
    "Provider=Microsoft.Jet.Oledb.4.0;Data Source=C:\MyData.Mdb"
    Con.Open()
    Dim StrSQL As String = "Select * From User_Tbl"
    OleComUser = New OleDbCommand(StrSQL, Con)
    OleRdrUser = OleComUser.ExecuteReader
    Do While OleRdrUser.Read
    cbouser.Items.Add (OleRdrUser.Item ("User_Name")
    Loop
    OleRdrUser.Close()
    OleComUser.Dispose()
    End Sub

    Private Sub BtnLogin_Click(ByVal sender As System.Object,
    ByVal e As System.EventArgs) Handles BtnLogin.Click
    Dim StrSQL As String
    StrSQL = "Select * From User_Tbl Where User_name='"
    & CboUser.Text & "And
    User_Pass='" & TxtPassword.Text & "'"
    OleComUser = New OleDbCommand(StrSQL, Con)
    OleRdrUser = OleComUser.ExecuteReader
    If Not OleRdrUser.Read Then
    MessageBox.Show("Incorect username or password",
    "Login faild", MessageBoxButtons.OK)
    Else
    'Frmmain.Show
    End If
    End Sub
    End Class
    دوتا از متدهای مهم شی DataReader متدهای GetName و GetType می باشد که به ترتیب نام یک فیلد و نوع فیلد را برمی گرداند و هردو یک اندیس شروع شونده از عدد صفر را بعنوان آرگومان می پذیرند. در پایان نحوه قرار دادن محتویات یک DataReader را درون یک کنترل ListView نمایش داده شده است. درمثال زیر محتویات جدول Customers بانک اطلاعاتی Northwind درون یک کنترل ListView نمایش داده شده است. ابتدا یک کنترل ListView را برروی فرم قرار داده و نام آن را LV تنظیم نمایید و سپس خاصیت Gridline را برابر True و خاصیت View آن را برروی Details تنظیم نمایید وحال می توانید از کدهای زیر در رویداد Load فرم استفاده نمایید. در پایان یک کنترل Label بانام LblStatus نیز در پایین فرم قرار دهید.
    Dim StrDataPath As String
    StrDataPath = GetCurrentDirectory.Substring(0,
    GetCurrentDirectory.Length - 10)
    Dim Con As New OleDbConnection
    Con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
    & StrDataPath & "\Northwind.Mdb"
    Con.Open()
    Dim OledbCommand As New OleDbCommand
    OledbCommand.CommandText = "Select * From Customers"
    OledbCommand.CommandType = CommandType.Text
    OledbCommand.Connection = Con
    Dim OledbDataReader As OleDbDataReader
    OledbDataReader = OledbCommand.ExecuteReader
    Dim NField As Integer = OledbDataReader.FieldCount
    Dim NRow As Integer = 0
    LV.Clear()
    For I As Integer = 0 To NField - 1
    LV.Columns.Add(OledbDataReader.GetName(I), 100,
    HorizontalAlignment.Center)
    Do While OledbDataReader.Read
    Dim SubItem(NField) As String
    For J As Integer = 0 To NField - 1
    SubItem(J) = OledbDataReader(J).ToString
    Next
    Dim Item As ListViewItem = New ListViewItem(SubItem, -1)
    LV.Items.Add(Item)
    NRow = NRow + 1
    Loop
    Next
    LblStatus.Text = NField.ToString & " Columns And "
    & NRow.ToString & " Rows Read"
    OledbDataReader.Close()
    Con.Close()

    نردبان این جهان ما و منیست
    عاقبت این
    نردبان افتادنیست
    لاجرم آن کس که بالاتر نشست
    استخوانش سخت تر خواهد شکست




    #7 ارسال شده در تاريخ 11th December 2011 در ساعت 11:13

  8. یک کاربر از این پست تشکر کرده است :


علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •