PDA

View Full Version : سوال: ذخیره کردن در بانک بعد از درج در دیتا گرید



pedramfj
شنبه 13 شهریور 1389, 10:45 صبح
سلام
من می خواهم بعد از اینکه اطلاعات را وارد دیتا گرید کردم(فکر کنید 5 سطر داده وارد دیتا گرید شده است).
می خواهم با زدن دکمه ای اطلاعات درون دیتاگرید در بانک درون جدول ذخیره شود.
اگر ممکن با (sqlconnection, sqlcommand)
چگونه؟؟؟

Behrang_a
شنبه 13 شهریور 1389, 10:56 صبح
سلام
من می خواهم بعد از اینکه اطلاعات را وارد دیتا گرید کردم(فکر کنید 5 سطر داده وارد دیتا گرید شده است).
می خواهم با زدن دکمه ای اطلاعات درون دیتاگرید در بانک درون جدول ذخیره شود.
اگر ممکن با (sqlconnection, sqlcommand)
چگونه؟؟؟

يه SqlCommandBuilder بساز و ديتاآداپتورت رو بنداز توش
بعد كافيه مثله اين انجام بدي اينطوري كاري كه ميخواي انجام ميشه
SqlCommandBuilder mycommand = new SqlCommandBuilder(MyAdapter);
MyAdapter.Update(MyDataSet.Mytable);

pedramfj
شنبه 13 شهریور 1389, 11:21 صبح
ممنون از راهنمایی
این دیتاآداپتور چی هست؟؟
چگونه باید وارد SqlCommandBuilde بشه؟
شرمنده..

pedramfj
شنبه 13 شهریور 1389, 11:28 صبح
من بالا گفتم دیتاگرید.
این کار را می توان برای دیتا گرید انجام داد؟؟؟

Behrang_a
شنبه 13 شهریور 1389, 11:30 صبح
ممنون از راهنمایی
این دیتاآداپتور چی هست؟؟
چگونه باید وارد SqlCommandBuilde بشه؟
شرمنده..
خوب پس بمن بگو كه چطوري اطلاعاتت رو توي ديتاگريد ميبيني ؟
ديتا آداپتور يه كلاسه كه باهاش يه دستور رو روي ديتابيس كانكشنت تعريف ميكني و بوسيله اون سطرهايي رو كه برميگردونه ميريزي تو ديتاست.
گذاشتن ديتاآداپتور تو كامندبيلدر همون خط اولي بود كه برات نوشتم.:لبخندساده:
--------------------

من بالا گفتم دیتاگرید.
این کار را می توان برای دیتا گرید انجام داد؟؟؟

آره اگه ديتاسورس براي ديتاگريدت يك ديتاست باشه تو هرچي توش وارد كني ميره تو ديتاست بعد تو با دستورايي كه نوشتم ميتوني كل تغييرات رو برگردوني تو ديتابيس:لبخندساده:

pedramfj
شنبه 13 شهریور 1389, 11:47 صبح
من اصلا با data set کار نکردم.
برای نمایش در دیتا گرید از بانک میخوانم(کد نویسی).

C Sharp
شنبه 13 شهریور 1389, 13:57 عصر
اگه نخواید از Typed DataSet استفاده کنید ، کدی که باید بنویسید این میشه :



string updateQuery;
string deleteQuery;
string insertQuery;


updateQuery = "";
insertQuery = "";
deleteQuery = "";

DataTable edited = dataTable.GetChanges(DataRowState.Modified);
if (edited != null && edited.Rows.Count > 0)
{
foreach (DataRow row in edited.Rows)
{
updateQuery += "UPDATE [" + _table + "] SET TypeOfHoliday = " + row["TypeOfHoliday"] +
" WHERE Year = " + row["Year"] + " AND Month = " + row["Month"] +
" AND Day = " + row["Day"] + "; ";
}
}

DataTable deleted = table.GetChanges(DataRowState.Deleted);
if (deleted != null && deleted.Rows.Count > 0)
{
deleteQuery = "DELETE FROM [" + _table + "] WHERE ";
foreach (DataRow row in deleted.Rows)
{
deleteQuery += "(Year = " + row["Year",DataRowVersion.Original] +
" AND Month = " + row["Month",DataRowVersion.Original] +
" AND Day = " + row["Day",DataRowVersion.Original] + " ) OR ";
}
deleteQuery = deleteQuery.Substring(0, deleteQuery.Length - 4) + "; ";
}

DataTable added = table.GetChanges(DataRowState.Added);
if (added != null && added.Rows.Count > 0)
{
foreach (DataRow row in added.Rows)
{
insertQuery += "INSERT INTO [" + _table + "] (Year,Month,Day,TypeOfHoliday)" +
" VALUES(" + row["Year"] + "," + row["Month"] + "," + row["Day"] +
"," + row["TypeOfHoliday"] + ");";
}
}

string query = insertQuery + deleteQuery + updateQuery;
if (query == string.Empty)
return;
System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection();
connection.ConnectionString = _connectionString;
System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand();
command.CommandText = query;
command.Connection = connection;

int affectedRows = 0;
try
{
connection.Open();
affectedRows = command.ExecuteNonQuery();

}
catch(Exception e)
{
throw e;
}
finally
{
if (connection.State == ConnectionState.Open)
connection.Close();
}


ولی اگه از Typed Dataset استفاده کنی این میشه :



myDataAdapter.Update(myDataset.MyTable);