استفاده از SQLBulk

در کار با دیتابیس یک زمان های پیش می آید در سی شارپ که شاید بخواهید یک دیتا زیادی را به یکباره اضافه کنید که اگر سرور شما بیرونی باشد یکم افت سرعت و شاید مشکل در ثبت دیتا پیدا کنید راه حل استفاده ازSQLBulk که در فضای نام System.Data.SQLClient قابل مشاهده است

 

ابتدا یک کانکشن ایجاد می کنید و دیتا بیس را باز می کنید مانند مثال زیر SQLConnectionObj ابتدا کانکشن استرینگ یا دسترسی به دیتابیس برایش محقق شده و سپس باز می شود .

سپس دستور SqlBulkCopy یک جدید از آن ایجاد می کنیم و کانکشنی که در مرحله قبل داده ایم را به آن الحاق می کنیم.

خصوصیت DestinationTableName  را پر می کنید یعنی نام جدول که در بانک اطلاعتی مورد هدف هست را مید هید .

و با استفاده از متد WriteToServer() دیتا تیبل مورد نظر را پر کرد و در جدول بانک اطلاعتی درج می نماید .

شما می توانید برای ادامه کار مثال زیر را در برنامه کپی نمایید و خروجی حاصل را مشاهده کنید

این روش کاملا سریع و بهینه شده است و تست و ارزیابی لازم انجام شده چنانچه سوالی بود در خدمت شما عزیزان هستم .

 public bool BulkInsertDataTable(string tableName, DataTable dataTable)
        {
            bool isSuccuss;
            try
            {
               SqlConnection SqlConnectionObj =new SqlConnection(Tirage.DAL.Properties.Settings.Default.TCConnectionString);
                SqlConnectionObj.Open();
                SqlBulkCopy bulkCopy = new SqlBulkCopy(SqlConnectionObj, 
                    SqlBulkCopyOptions.TableLock | SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.UseInternalTransaction, null);
                bulkCopy.DestinationTableName = tableName;
                bulkCopy.WriteToServer(dataTable);
                isSuccuss = true;
                SqlConnectionObj.Close();
            }
            catch (Exception ex)
            {
                isSuccuss = false;
            }
            return isSuccuss;
        }

 

شاید این مطالب را هم دوست داشته باشید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.