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

نام تاپیک: تغییر چند رکورد در دیتا بیس

  1. #1

    تغییر چند رکورد در دیتا بیس

    سلام .
    درسته که برای اضافه کردن هر رکورد در بانک اطلاعاتی باد یک بار دستور ExecuteNonQuery استفاده کرد و نمیشه با یک دستور مثلا 20 تا رکورد رو همزمان به بانک اطلاعاتی اضافه کرد ؟
    و همینطور برای به روز کردن رکورد ها(یعنی روی n رکورد تغییرات مورد نظر رو انجام بدی و همه رو یکجا به روز کنی)؟
    اگه ممکنه یکی کمکم کنه . قبلا از شما تشکر می کنم .

  2. #2
    دیتاست برای همین کاره !

  3. #3
    می دونم که واسه همین کاره . ولی من وقتی از متد Update مربوط به DataAdapter استفاده میکنم Error ـی میگیره مبنی بر اینکه شما برای به روز کردن نیاز به دستور SQL دارید . و منم نمیدونم که چه جوری میشه با یک دستور SQL چند رکورد رو به روز کنم .

  4. #4
    اولا نگفتی از 2003 استفاده می کنی یا 2005!

    اول قسمت UpdateCommnad مربوط به TableAdapter یا DataAdapter را با دستور update مورد نظر تنظیم کنید.فقط کافیه رکورد های مورد نظر رو به دیتاست اضافه کنید. بعد متد Update مربوط به DataAdapter را فراخوانی کنید خودش به صورت اتوماتیک تغییرات و موارد جدید رو ثبت می کنه.

  5. #5
    کاربر دائمی آواتار hdv212
    تاریخ عضویت
    آبان 1384
    محل زندگی
    قم
    پست
    1,727
    وقتی از DataAdapter استفاده میکنید، برای اینکه از توابعش مثل همین Update استفاده کنید، نیاز به این دارید که دستور معتبری از Update رو به قسمت UpdateCommand اش پاس کنید، دستور Update شما هم، همون دستور Update معمولیه که شما میخواهید روی جدولتون انجام بدید، یادتون باشه که حتی برای fill کردن هم باید دستور select معتبری به dataAdapter تون پاس کنید.

  6. #6
    خوب اینایی که گفتید درسته ولی با هر دستور SQL فقط میشه یک رکورد رو افزود (یا تغییر داد) . اگه من اشتباه میکنم لطفا کد مورد نظرتون رو (فقط قسمت مربوط به DataAdapter و SQLCommand) رو بنویسید . در ضمن من با VS 2005 کار می کنم .

  7. #7
    لطفا جوب بدید .

  8. #8
    کاربر دائمی آواتار ghafoori
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    اصفهان-نجف اباد
    پست
    1,111
    (فقط قسمت مربوط به DataAdapter و SQLCommand) رو بنویسی
    دوست عزیز این قسمت که یک خط دو خط که نیست یک فصل کتاب توضیح داره شما بهتر است کتاب اقای هاشمیان که داخل سایت است را بخوانید

  9. #9
    کاربر دائمی آواتار hdv212
    تاریخ عضویت
    آبان 1384
    محل زندگی
    قم
    پست
    1,727
    پس از اینکه خاصیت UpdateCommand مربوط به dataAdapter تون رو با دستور Update، تنظیم کردید، مثلا اگه دیتا گرید شما به این جدول بایند شده :
    this.datagriview1.datasource= this.ds.tables.["customers"]

    در رویداد دکمه ی بروز رسانی میتونی از این کد استفاده کنی :
    this.dataadapter1.update(this.ds.tables.["customers"]);
    this.ds.tables.["customers"].acceptChanges();

    حالا در runTime چنانچه شما مقادیری رو در دیتاگریدتون تغییر بدید و بعد روی دکمه ی بروزرسانی کلیک کنید، بایستی جدول شما بروز بشه، حالا چه یه رکورد و چه هزاران رکورد.

  10. #10
    در مورد کتاب آقای هاشمیان باید خدمتتون عرض کنم که سایت RabidShare پیغام : File Not Found رو میده اما در مورد روش آقای hdv212 هم باید بگم که من از دیتا گرید ویو استفاده نمی کنم . واسه همین نمیدونم دستور SQL ام رو چه جوری بدم که همه اون تغییرات رو شامل بشه ، مثلا من 5 تا رکورد اضافه کردم و 10 رکورد رو هم ویرایش کردم و 6 تا هم پاک کردم.(حالا وقتی متد Update مربوط به DataAdapter رو صدا می زنم میگه که شما باید از یک دستو Sql برای تغییرات استفاده کنید.)

  11. #11
    اگر نمی خوای از دیتا ست و کلاسهای دیگه مرتبط با اون استفاده کنی، می تونی دستورات SQL مورد نظر خودت رو تولید کنی و بین هر کدوم یک ; قرار بدی. بعد دستور رو با استفاده از SQLCommand روی بانک اطلاعاتی اجرا کن تا همه اجرا بشن. متد ExecuteNonQuery تعداد رکوردهایی که به علت اجرای دستورات وارد شده تغییر کردن رو به عنوان نتیجه برمی گردونه.


    در مورد سوال پست 10 هم توضیح بدید، شما می خواهید چند تا دستور SQL رو یک مرتبه با استفاده از ExecuteNonQuery ایجاد کنید که روش اون رو گفتم، چه مشکل دیگه ای هست؟

  12. #12
    ببینید من اینطوری به دیتا تیبلم رکورد اضافه می کنم :
    myDataTable.Rows.Add(myDataRow)
    این کار رو بارها توی برنامه انجام میدم .
    حالا می خوام که با این تیکه کد اونا رو توی دیتابیس اصلی هم اعمال کنم :
    myDataAdapter.Update(myDataSet.table[myDataTable],tbl1)
    توی این قسمت Error میده که باید دستور SQL وارد کنم .حالا من دستور SQL رو هم به این صورت می دم :
    mySqlInsertCommand.CommandText="Insert into tbl1(...,...,...)values(\n@.....,\n@.....,\n@.....  )"
    بعد از اینکه این رو به DataAdapter (به خاصیت InsertCommand) میدم ، اون فقط یکدونه رکورد به دیتا بیسم اضافه میکنه ، در صورتی که من کّلی رکورد به اون اضافه کردم . در مورد Edit و Delete هم اینجورییه !

  13. #13
    اگر دیتا ست رو به صورت دستی ایجاد می کنید (و همچنین بقیه اشیای مورد نیاز اون مثل Adapter) باید بر اساس دستور SQL مربوط به دریافت اطلاعات، دستورات مربوط به درج، حذف، و تغییر داده ها رو هم ایجاد و در خاصیتهای مربوطه در Adapter قرار بدید. برای تولید این دستورات می تونید به سادگی از کلاس SqlCommandBuilder استفاده کنید.
    خطایی که به وجود میاد احتمالاً به دلیل اینه که قسمتی از Command (مثلاً پارامترها) رو اشتباه وارد می کنید.

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

    موفق باشید.

  14. #14
    از SqlCommandBuilder استفاده کردم ، برای اضافه کردن مشکلی پیدا نکرد ممنونم از کمکتون ولی برای حذف و به روز کردن این Error رو می ده :
    Dynamic SQL generation for the DeleteCommand is not supported against a SelectCommand that does not return any key column information.


    (البته وقتی قبل از Update کردن متد AcceptChanges مربوط به DataTable رو صدا میزنم حذف یا به روز نمی شوند ، و این Error رو وقتی میده که من این متد رو صدا نمیزنم)


    یه درخواست دیگه هم داشتم ، اگه من از SqlCommandBuilder استفاده نکنم باید چه کار کنم ؟

  15. #15
    جواب اصلی همون commandbuilder بود که گفتند
    و برای مشکل آخرت هم احتمالا هیچ کدوم از فیلدهات primary key نیستند
    یکی از فیلدهاتو key قرار بده.

  16. #16
    دوست عزیز من به این صورت کلید رو تعیین کردم ولی بازم Error میده
    myDataset.Tables[0].PrimaryKey = new DataColumn[] { myDataset.Tables[0].Columns[0] };

  17. #17
    باید از دستورات SQL در برنامه خود استفاده کنی مثل Insert که با کمک اون می تونی هر چند تا رکورد را فقط با یک بار باز کردن بانک و یک دستور ExecuteNonQuery به بانک اضافه کنی . بهت پیشنهاد می کنم از کتاب های SQL استفاده کنی.

  18. #18
    دوست عزیز من به این صورت کلید رو تعیین کردم ولی بازم Error میده
    امیدوارم مشکلت حل شده باشه
    اما اینجوری فایده نداره. باید داخل خود بانک یک فیلد کلید قرار بدی و دیتاست و آداپتر رفرش کنی

تاپیک های مشابه

  1. تغییر ارتفاع lineبا تغییر ارتفاع Textbox در گزارش
    نوشته شده توسط payam59 در بخش Access
    پاسخ: 22
    آخرین پست: یک شنبه 03 شهریور 1387, 15:41 عصر
  2. تغییر اندازه ارتفاع QRShape با تغییر ارتفاع DetailBand
    نوشته شده توسط mojtaba_z در بخش برنامه نویسی در Delphi
    پاسخ: 3
    آخرین پست: پنج شنبه 07 تیر 1386, 07:49 صبح
  3. تغییر Toolbar با تغییر Thems ویندوز XP
    نوشته شده توسط na3er-faraji در بخش VB.NET
    پاسخ: 2
    آخرین پست: پنج شنبه 06 مهر 1385, 12:08 عصر
  4. غیر قابل تغییر کردن فرم about تغییر desktop تو vb
    نوشته شده توسط Payman62 در بخش برنامه نویسی در 6 VB
    پاسخ: 8
    آخرین پست: یک شنبه 31 اردیبهشت 1385, 11:12 صبح
  5. تغییر در PHPbb (تغییرات خیلی کلی)
    نوشته شده توسط nasr در بخش PHP
    پاسخ: 4
    آخرین پست: جمعه 05 فروردین 1384, 12:06 عصر

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

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