PDA

View Full Version : سوال: آپدیت گروهی در SQl



meysam99
دوشنبه 04 آبان 1388, 18:47 عصر
می خوام یه تعداد زیادی اطلاعات رو آپدیت کنم ولی نمی خوام خط بخط اینکارو انجام بدم.
کسی می دونه چطوری میشه بصورت گروهی یک سری فیل را آپدیت کرد.
اطلاعاتم بصورت فیلد به فیلد هست.

Hossein Bazyan
دوشنبه 04 آبان 1388, 18:57 عصر
سلام
آخر هر خط ( فرق نمیکنه Update باشه يا Insert و یا Delete و یا هر چی ) علامت ; بذار

meysam99
دوشنبه 04 آبان 1388, 19:03 عصر
مشکل با آپدیت کردن ندارم می تونم یک رکورد رو براحتی آپدیت کنم ولی تعداد رکوردها زیاده و نمی خوام از چرخه استفاده کنم. میخوام تداد زیادی رکورد رو با یک دستور آپدیت کنم. (مثلا اطلاعات رو بصورت آرایه دربیارم و بعد وارد کنم)

Hossein Bazyan
دوشنبه 04 آبان 1388, 20:37 عصر
مشکل با آپدیت کردن ندارم می تونم یک رکورد رو براحتی آپدیت کنم ولی تعداد رکوردها زیاده و نمی خوام از چرخه استفاده کنم. میخوام تداد زیادی رکورد رو با یک دستور آپدیت کنم. (مثلا اطلاعات رو بصورت آرایه دربیارم و بعد وارد کنم)
سلام
خوب دوست عزیز منم همین رو گفتم . اینهم یه مثال



Dim SQL as String = Nothing
SQL &= "DROP TABLE IF EXISTS `week`;" & vbnewline
SQL &= "CREATE TABLE IF NOT EXISTS `week` (" & vbnewline
SQL &= "`id` int(10) NOT NULL," & vbnewline
SQL &= "`datum` varchar(10) collate latin1_general_ci default NULL," & vbnewline
SQL &= "`week` int(2) default NULL," & vbnewline
SQL &= "`jaar` int(4) default NULL," & vbnewline
SQL &= "`aantal` decimal(8,2) default '0.00'," & vbnewline
SQL &= "`min` int(15) default NULL," & vbnewline
SQL &= "`b_cap` decimal(10,2) default '0.00'," & vbnewline
SQL &= "`n_cap` decimal(10,2) default '0.00'," & vbnewline
SQL &= "`notitie` longtext collate latin1_general_ci," & vbnewline
SQL &= "PRIMARY KEY (`id`)" & vbnewline
SQL &= ") ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;" & vbnewline
SQL &= "INSERT INTO `verkoper` VALUES ('3', 'Rene', ' ', 'Laan', NULL, NULL, NULL, NULL, NULL);" & vbnewline
SQL &= "INSERT INTO `verkoper` VALUES ('4', 'Reza', ' ', 'Ali ', NULL, NULL, NULL, NULL, NULL);" & vbnewline
SQL &= "INSERT INTO `verkoper` VALUES ('5 ', 'Rojhin ', 'Van ', 'Bazyan', NULL, NULL, NULL, NULL, NULL);" & vbnewline
SQL &= "INSERT INTO `week` VALUES (200919, '7-5-2009', 19, 2009, 400.05, 24003, 48000.05, 800.15, '400,05\r\n24003\r\n4800,05\r\n800,15\r\n200919\r\ n');" & vbnewline


حال با اجرای این رشته جدول week اگر وجود داشته باشد حذف و سپس همین جدول ساخته شده و تعدادی رکورد به آن همچنین به جدول دیگری اضافه میشود. همه با یک بار اجرای همین رشته

meysam99
دوشنبه 04 آبان 1388, 20:50 عصر
من منظورم یک همچین چیزی هشت


Private Sub AdapterUpdate(ByVal connectionString As String)

Using connection As SqlConnection = New SqlConnection( _
connectionString)

Dim adapter As SqlDataAdapter = New SqlDataAdapter( _
"SELECT CategoryID, CategoryName FROM dbo.Categories", _
connection)

adapter.UpdateCommand = New SqlCommand( _
"UPDATE Categories SET CategoryName = @CategoryName " & _
"WHERE CategoryID = @CategoryID", connection)

adapter.UpdateCommand.Parameters.Add( _
"@CategoryName", SqlDbType.NVarChar, 15, "CategoryName")

Dim parameter As SqlParameter = _
adapter.UpdateCommand.Parameters.Add( _
"@CategoryID", SqlDbType.Int)
parameter.SourceColumn = "CategoryID"
parameter.SourceVersion = DataRowVersion.Original

Dim categoryTable As New DataTable
adapter.Fill(categoryTable)

Dim categoryRow As DataRow = categoryTable.Rows(0)
categoryRow("CategoryName") = "New Beverages"

adapter.Update(categoryTable)

Console.WriteLine("Rows after update.")
Dim row As DataRow
For Each row In categoryTable.Rows
Console.WriteLine("{0}: {1}", row(0), row(1))
Next
End Using
End Sub


ولی نمی تونم با برنامه یکیش کنم

آریوس1985
سه شنبه 05 آبان 1388, 10:38 صبح
سلام
من فکر میکنم اینجور مواقع کلا Update رو بیخیال شی بهتره
اول تمام داده های مورد نظرتو Delete کن بعد هم از طریق SQLBULK با یک Insert ساده داده های جدید رو اضافه کن. در مجموع با 2 تا Query به DB کارت راه میافته
(البته این روش برای وقتی که از ID های داده هات جای دیگه ای استفاده نکرده باشی)

ehsan2007
سه شنبه 05 آبان 1388, 18:49 عصر
سلام دوست عزیز من با آجاکس اینطوری آپدیت میکنم
ببین بدردت میخوره یک استوریپروسیجر ایجاد کردم
دونه دونه میفرستم واسش توی حلقه while



if (Request.QueryString["SalID"] != null && Request.QueryString["DarID"] != null && Request.QueryString["Nomre"] != null && Request.QueryString["TerID"] != null)
{
int I = 0;
string _D = null;
string _DarID = Request.QueryString["DarID"].ToString();
string _SalID = Request.QueryString["SalID"].ToString();
string _TerID = Request.QueryString["TerID"].ToString();
string[] List = Request.QueryString["Nomre"].ToString().Split("|".ToCharArray());
SqlConnection Cnn = new SqlConnection(System.Configuration.ConfigurationMa nager.ConnectionStrings["ConnectionString"].ConnectionString);
while (I < List.Length - 1)
{
string[] List2 = List[I].ToString().Split("*".ToCharArray());
if (List2[0] == "") { List2[0] = "null"; }
_D = "EXEC SPR_Nomarat_by_Name_Update @MadrID = " + Session["UserModirRa"].ToString() + " ,@Nomre = " + List2[0] + " ,@DanID = " + List2[1] + ",@SalID= " + _SalID + ",@DarID = " + _DarID + ",@TerID=" + _TerID;
SqlCommand Cmd = new SqlCommand(_D, Cnn);
try
{
Cnn.Open();
Cmd.ExecuteNonQuery();
}
catch (SqlException)
{
Response.Write('1'); return;// qeury error
}
catch (Exception)
{
Response.Write('2'); return;// program error
}
finally
{
Cnn.Close();
if (Cmd != null) Cmd.Dispose();
}
I++;
}
Response.Write('3'); return;
}
else
{
Response.Write('0');//Not Login
}

meysam99
شنبه 09 آبان 1388, 16:49 عصر
چون خیلی وقت نداشتم با یه چرخه درستش کردم. ممنون از راهنمای