PDA

View Full Version : سوال: نحوه ریختن عناصر یک آرایه در فیلدهای یک رکورد در دیتابیس



generic
دوشنبه 19 دی 1390, 16:23 عصر
سلام
لازم دارم که عناصر یک آرایه را با یک loop در فیلدهای یک رکورد بریزم
اما چطور؟
تشکر

AmirAmiri
دوشنبه 19 دی 1390, 16:34 عصر
سلام. سوالت خیلی کلی بود.
منم نیاز دارم که یه کامپیوتر با سرعت سی پی یو 120 پلافلاب درست کنم اما چطور؟ :متفکر:

خب کمی توضیحات نیاز داره. اول اینکه جدولی که میگی توی برنامه درست کردی یعنی منظورت DataTable هست یا توی دیتابیس میخوای وارد کنی؟
دوم اینکه ارتباط بین بانک و برنامه رو برقرار کردی؟
سوم اینکه آرایه ی مورد نظر چه عناصری داره که اینکارو برات سخت و پیچیده کرده؟

generic
دوشنبه 19 دی 1390, 16:54 عصر
سلام. سوالت خیلی کلی بود.
منم نیاز دارم که یه کامپیوتر با سرعت سی پی یو 120 پلافلاب درست کنم اما چطور؟ :متفکر:

خب کمی توضیحات نیاز داره. اول اینکه جدولی که میگی توی برنامه درست کردی یعنی منظورت DataTable هست یا توی دیتابیس میخوای وارد کنی؟

دوم اینکه ارتباط بین بانک و برنامه رو برقرار کردی؟
سوم اینکه آرایه ی مورد نظر چه عناصری داره که اینکارو برات سخت و پیچیده کرده؟
مشکل وصل شدن به دیتابیس ندارم.
فرض کن عناصر آرایه int هستن.
و اینکه میخوام در دیتابیس ذخیره کنم.

AmirAmiri
دوشنبه 19 دی 1390, 17:27 عصر
خب با این فرض که یه جدول به نام tbl داری که یه فیلد value داره و اسم آرایه هم arr هست که قبلا مقدار دهی شده و همچنین cmd یک SqlCommand است که ارتباط آن با SQL قبلا برقرار شده و مقدمات کار با دیتا بیس فراهم هست، باید اینطوری بنویسی :

foreach (int item in arr)
{
cmd.CommandText = "INSERT INTO tbl(value) VALUES(" + item + ")";
cmd.ExecuteNonQuery();
}

فکر کنم خیلی ساده بود.

arefba
دوشنبه 19 دی 1390, 19:04 عصر
کانکشن رو قبلش باز کن و بعدش ببند

pars.engineer
سه شنبه 20 دی 1390, 00:17 صبح
سلام
لازم دارم که عناصر یک آرایه را با یک loop در فیلدهای یک رکورد بریزم
اما چطور؟
تشکر


سلام
البته من پیشنهاد میکنم بعد از اینکه موفق به اجرای کدهای دوستان شدید (چون به نظر میرسد نیاز به تجربه ی بیشتری دارید)، تصمیم به استفاده از روش های بهتر ، پیشرفته تر و صحیح تر جهت حل مسائل خود بگیرید.



خب با این فرض که یه جدول به نام tbl داری که یه فیلد value داره و اسم آرایه هم arr هست که قبلا مقدار دهی شده و همچنین cmd یک SqlCommand است که ارتباط آن با SQL قبلا برقرار شده و مقدمات کار با دیتا بیس فراهم هست، باید اینطوری بنویسی :
1
2
3
4
5
6
foreach (int item in arr)
{
cmd.CommandText = "INSERT INTO tbl(value) VALUES(" + item + ")";
cmd.ExecuteNonQuery();
}




فکر کنم خیلی ساده بود.


بدیهی است روش فوق که Execute یک Command دیتابیسی در حلقه انجام شود، بهینه نیست و در سیستم های بزرگ یا چند کاربره به شدت روی کارایی سیستم تاثیر میگذارد.
یک راه حل بهینه و خوب جهت انجام این قبیل کارها استفاده از Sqlbulkcopy است.
http://barnamenevis.org/showthread.php?300217-%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D9%84-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%A7%D8%B2-data-table-%D8%A8%D9%87-database&p=1317063#post1317063

البته لازم به توضیح است قصد من فقط ارائه راهکار بهتری جهت حل این مسئله و مسائل از این قبیل بود.

موفق باشید.