نمایش نتایج 1 تا 33 از 33

نام تاپیک: پایگاه داده در ویژوال بیسیک - شروع تا پایان

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1

    Lightbulb شي Command

    شي Command دستورات مربوط به SQL رو اجرا مي كنه. متد ها و خاصيت هاي مختلفي داره كه به وسيله اونها ميشه يك دستور SQL رو به اجرا درآورد. درواقع كار اصلي رو اين شي انجام مي ده. براي استفاده از اين شي بايد يه متغير از جنس Command بسازيم:

    Dim Cmd As ADODB.Command
    وقتي ما مي خوايم عملياتي رو در بانك اطلاعاتي به اجرا در بياريم احتياج به چندين مورد داريم كه خودشون به چندين زير عمليات تقسيم بندي ميشن. بستگي داره كه كدومشون رو انتخاب كرده باشيم:

    1. مسير اتصال بانك اطلاعاتي
    2. نوع اجراي عمليات
      • استفاده از دستور SQL
        • نوشتن دستور SQL - مثل Insert,Update,Join,...
        • ارسال Parameters در صورت نياز

      • استفاده از جدول يا Table
      • استفاده از رويه ذخيره شده (Store Procedure)
        • فراخواني رويه مورد نظر
        • ارسال Parameters در صورت نياز

      • و غيره


    خاصيت ActivatedConnection:
    اين خاصيت مسير اتصال به بانك اطلاعاتي رو مشخص مي كنه كه اين دستور SQL يا S.P مجا بايد اجرا بشه. تنها مقداري كه بايد بهش بديم همون متغير Conn در بخش قبل هستش چون بسياري از ويژگي هاي Command و Connetion با هم يكسان هستند:

    Cmd.ActivatedConnetion = Conn

    خاصيت CommandType:

    اينم از اسمش پيداست. نوع دستور يا عمليات رو بايد اينجا مشخص كنيم. مثلاً اگر بخوايم يه S.P رو به اجرا در بياريم بايد با ثابت adCmdStoredProc مقداردهي كنيم. اگر بخوايم از يك دستور SQL مشخص استفاده كنيم بايد خاصيت adCmdText رو انتخاب كنيم و ديگر مواردي كه با يه نگاه جزئي ميشه فهميد كه چه كاري انجام مي دن.

    cmd.CommandType = adCmdText
    cmd.CommandType = adCmdTable
    cmd.CommandType = adCmdStoredProc
    and more ...
    خاصيت CommandText:
    اگر ما خاصيت CommandType رو با adCmdText مقدار دهي كرده باشيم بايد در اينجا دستور SQL رو بنويسيم. اگر بخوايم Store Procedure رو اجرا كنيم بايد نامش رو اينجا به صورت رشته قيد كنم:

    Cmd.Commandtext = "Insert Into Table (Code,FName,Age) Values (1254,'Barnamenevis',18)
    .
    Cmd.CommandText = "Select * From tblClass"
    ....
    آخرین ویرایش به وسیله اوبالیت به بو : پنج شنبه 24 بهمن 1387 در 18:43 عصر دلیل: ويرايش عنوان

  2. #2

    Lightbulb ايجاد Parameters - مقدمه

    ايجاد Parameters:
    فرض كنيد كه مي خواين يه دستور SQL رو بنويسيد كه مي خواد عمل حذف كردن يك ركورد رو بر اساس تست يك شرط انجام بده. خوب طبيعتاً مي نويسيم:

    Delete From TblTest WHERE ID = 5
    اين دستور ركورد شماره پنجم جدول tblTest رو پاك مي كنه. حالا در برنامه ما نمي دونيم كه كدوم ركورد بايد پاك بشه و مي خوايم اين امكان در برنامه قرار داده بشه كه كاربر خودش يك مقداري رو دلخواه وارد كنه و ركورد مورد نظر پاك بشه. اين ورودي مي تونه از طريق نوشتن در يك TextBox باشه، مي تونه انتخاب يك گزينه از ComboBox يا ListBox باشه، مي تونه انتخاب يك سطر از DataGrid يا MSFlexGrid باشه يا هر كنترل ورودي ديگه اي كه اين مقدار رو به شرط دستور SQL مي ده. مي نويسيم:

    "Delete From TblTest WHERE ID = " + Val(Trim(Text1.Text))
    حالا فرض كنيد مي خوايم يه دستور Update بنويسيم كه قراره فيلدها رو با يك Select تودر تو مقدار دهي كنه و اين Select تودر تو با كنترل هاي ورودي برنامه فيلدهاش مقداردهي ميشه و دوباره در پايان دستور Update يه شرط وجود داره كه اون هم بايد از يه TextBox يا DataGrid گرفته بشه. آيا به نظر شما بازهم بايد به روش بالا كد نوشت؟ يعني بيايم اين رشته ها رو تيكه تيكه به هم بچسبونيم؟؟
    اين روش خيلي خيلي اشتباه هستش به چند دليل:

    1. خوانايي كد بسيار پايين مياد
    2. امكان اشتباه نوشتن و خطاي ديد بسيار بالا ميره
    3. خطايابي يا اشكالزدايي دستور خيلي سخت ميشه
    4. استاندارد نيست

    چي كار بايد كرد؟ درستش اينه كه از خود Syntax دستور SQL استفاده كنيم. يعني بنويسيم:

    Insert Into tblTest (Field1,Field2) Values (@Field1,@Field2)
    ...
    More SQL Command's....
    در دستور SQL علامت @ يا آقا دورت بگردم مياد يه متغير ايجاد مي كنه. حالا ما بايد اين Syntax دستورات SQL رو در Visual Studio پياده سازي كنيم. چي جوري؟ اينجا مساله هستش كه چي جوري ميشه يه زبان ديگه رو با يه زبان ديگه ادغام كرد؟ ADODB اين امكان رو به ما مي ده كه اين متغيرهاي به جا مانده از دستورات SQL رو به صورت Parameters از VB6 به SQL پاس بديم.
    در كل به 3 روش (شايد بيشتر) ميشه اين parameters ها رو مقداردهي كرد.

    نكته اي كه شايد باعث بشه اين پست كمي گمراه كننده به نظر بياد اين هستش كه اشيا ADODB خيلي از خاصيت هاشون با هم مشترك هستش يعني با هم هيچ فرقي نمي كنن براي همين برنامه هاي پايگاه داده رو ميشه به چندين چند روش نوشت. ما بايد از تمامي امكانات برنامه نويسي استفاده كنيم.
    آخرین ویرایش به وسیله اوبالیت به بو : پنج شنبه 24 بهمن 1387 در 18:57 عصر

  3. #3

    Lightbulb ايجاد Parameters - روش اول {استفاده از ADODB.Command}

    روش اول - استفاده از ADODB.Command:
    شي ADODB.Command كه ما ازش يه متغير به اسم Cmd ساختيم يك خاصيت داره به اسم Parameters. اين خاصيت به اين صورت استفاده ميشه:

    Cmd.CommandText = "Insert Into tblTest (Field1)Values(@Field1)"
    Cmd.Parameters.Refresh
    Cmd.Parameters.Item(0).Value = ValueMember...

    دستور SQL كه واضح هست چي كار مي كنه.
    @Field1: همون متغيري هستش كه قراره مقدارش درون ستون يا فيلد Field1 در جدول tblTest بانك اطلاعاتي ريخته بشه.
    اما اون صفر سبز رنگ كه زيرش خط كشيده شده چيه؟ اگر دقت كرده باشيد من فقط و فقط يك متغير بيشتر ندارم. من تويه دستورات SQL مي تونم چندين و چند متغير داشته باشم (فكر كنم تا 255 تا) كه اينها همشون يه انديس دارن كه از صفر شروع ميشه. فكر كنم كه تا آخرش رو با اين توضيح متوجه شدين. براي اينكه متغيرها مقدار دهي بشن بايد با انديس هاشون جداگانه مقداردهي بشن. يعني:

    Cmd.CommandText = "Insert Into tblTest (Field1,Field2,Field3)Values(@Field1,@Field2,@Fiel d3)"
    Cmd.Parameters.Refresh
    Cmd.Parameters.Item(0).Value = ValueMember...
    Cmd.Parameters.Item(1).Value = ValueMember...
    Cmd.Parameters.Item(2).Value = ValueMember...

    به همين راحتي. حالا با Execute كردن Command مي تونيد Recordset رو پر كنيد.
    آخرین ویرایش به وسیله vbhamed : پنج شنبه 28 اردیبهشت 1396 در 09:23 صبح

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

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