PDA

View Full Version : ارسال n ردیف رکورد به جدول با استفاده از متد ExecuteNoneQuery



Ehsan Rafsanjani
جمعه 01 اردیبهشت 1385, 12:54 عصر
یکی از روش های بهره وری مناسب از دیتابیس اینه که از روش هایی استفاده کنیم که لازم نباشه همه اطلاعات بازیابی بشه مثله ExecuteNoneQuery
حالا من میخواستم بدونم روشی هست که بتونیم به طور همزمان n ردیف رکورد رو به یک جدول دیتابیس در یک مرحله با روش ExecuteNoneQuery اضافه کنیم
اگه دوستان بتونن یه نمونه کد مثال بزنن خیلی ممنون می شم

hpx
شنبه 02 اردیبهشت 1385, 10:22 صبح
یه راه اینه که Insert Command رو تو کد بنویسی
tnsert into table1 values(...);insert into table1 values(..);.....
bad command ro ba Executenonquery اجرا کنی
راه دیگه اینکه اگه از dataset استفاده میکنی اونو به عنوان یه xml بفرستی به database و بقیه کارها رو بسپاری به database

صابر
شنبه 02 اردیبهشت 1385, 15:15 عصر
البته اگه این n شما خیلی بزرگ بشه یه sql exception به نام timeout اتفاق میفته. بهتره timeout شی sqlcommand رو برای اینکار بیشتر کنید.

mehdi58
سه شنبه 05 اردیبهشت 1385, 19:33 عصر
آقا میشه یه کم در مورد روش XML توضیح بیشتری بدین یا اگه ممکنه یه نمونه کد واسه فهمیدن بیشتر مطلب بگذارین.

azam2005
چهارشنبه 06 اردیبهشت 1385, 09:28 صبح
حالا من میخواستم بدونم روشی هست که بتونیم به طور همزمان n ردیف رکورد رو به یک جدول دیتابیس در یک مرحله با روش ExecuteNoneQuery اضافه کنیم

این مشکل من هم هست من میخواهم از storedprodure استفاده کنم
برای اینکار دستوراتم را به ازای n ردیف رکورد در یک حلقه گذاشتم اما با توجه به اینکه بعد از هر بار اجرا ExecuteNoneQuery و connecton میبایست close شود فکر کنم سرعت بسیار پایین بییاید

elham.net
چهارشنبه 06 اردیبهشت 1385, 12:26 عصر
یه راه اینه که Insert Command رو تو کد بنویسی
tnsert into table1 values(...);insert into table1 values(..);.....
bad command ro ba Executenonquery اجرا کنی
database
آقای hpx لطفا اگه برای این صحبتهاتون نمونه کد دارین بذارین اینطوری خیلی مبهمه.
قبلا ممنونم

hrmprog
پنج شنبه 07 اردیبهشت 1385, 00:32 صبح
سلام
شما می توانید خروجی یک Select را به عنوان ورودی دستور insert استفاده کنید

elham.net
پنج شنبه 07 اردیبهشت 1385, 08:57 صبح
ببخشید من بازم متوجه نشدم لطفا اگه کسی می خواد جواب بده کد بنویسه.
ممنون می شم.

mehdi58
شنبه 09 اردیبهشت 1385, 13:33 عصر
کسی لطف نمی کنه بیشتر توضیح بده ( با کد )

mehdi58
چهارشنبه 24 خرداد 1385, 10:36 صبح
این تاپیک چند وقت پیش مطرح شد اما ...
آیا کسی می تونه در این زمینه مقاله ، کد یا توضیح بیشتری بده .
ممنون

صابر
پنج شنبه 25 خرداد 1385, 09:30 صبح
public static void InsertDataList(DataSet ds, string tableName)
{
SqlConnection conn = new SqlConnection(AppConfig.sqlConnection);
conn.Open();
try
{


string strSQL1 = "";
bool isFirstColumn = true;
foreach (DataColumn dc in ds.Tables[tableName].Columns)
{
string columnName = dc.ColumnName;
if (isFirstColumn)
{
strSQL1 += columnName;
isFirstColumn = false;
}
else
strSQL1 += "," + columnName;
}
foreach (DataRow dr in ds.Tables[tableName].Rows)
{
string strSQL2 = "";
isFirstColumn = true;
foreach (DataColumn dc in ds.Tables[tableName].Columns)
{
string columnValue = "NULL";
if (!dr.IsNull(dc.ColumnName))
columnValue = GetValue(dc, dr[dc]).ToString();
if (isFirstColumn)
{
strSQL2 = columnValue;
isFirstColumn = false;
}
else
strSQL2 += "," + columnValue;
}
string strSQL = "Insert into " + tableName + "(" + strSQL1 + ") values (" + strSQL2 + ")";
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = strSQL;
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}
}
catch (SqlException exp)
{
throw exp;
}
catch (Exception exp)
{
throw exp;
}
finally
{
conn.Close();
}


}

mehdi58
جمعه 26 خرداد 1385, 19:05 عصر
دستت درد نکنه از اینکه کد رو گذاشتی