PDA

View Full Version : نحوه اجرای دودستورSQL بدنبال هم



a3mooneabi22
جمعه 20 شهریور 1388, 10:25 صبح
کدزیررابرای درج دریک جدول نوشته ام





string

constring = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\DatabaseGozinesh.mdf;Integrated Security=True;User Instance=True";

SqlConnection con = newSqlConnection(constring);

con.Open();
int idDavtalab = Int32.Parse(cbxDavtalab.SelectedValue.ToString());
string Niaz=cbxNiaz .SelectedText .ToString ();
SqlCommand comm = newSqlCommand("insert into tblDavtalab... )values(...)", con);
comm.CommandType = CommandType.Text;
SqlDataAdapter adap = newSqlDataAdapter(comm);
DataSet ds = newDataSet();
adap.Fill(ds, "select * from tblTahghigh");


con.Close();




حال میخواهم بعداز این عمل درج، جدول دیگری را به روز کنم.

چگونه میتوانم یک دستور sql دیگرراهمین جااجراکنم?

دوباره باید SqlCommand راتعریف کنم؟چگونه؟

Reza_Yarahmadi
جمعه 20 شهریور 1388, 11:27 صبح
میتونی دوتا دستور رو پشت سرهم بنویسی و با یه ; از هم جدا کنی,
Insert Into Table1 (...) values (...); Update Table2 Set ... Where ...
توی این حالت SQL Server شروع به انجام دستور اول میکنه اگه دستور انجام شد و مشکلی پیش نیومد به سراغ دستور دوم میره تا اونو اجرا کنه ولی اگر به هر دلیلی دستور اول اجرا نشه دستور دوم هم اجرا نمیشه.

a3mooneabi22
جمعه 20 شهریور 1388, 13:21 عصر
باتشکر فراوان:لبخندساده:

روشی که شما گفتید امتحان می کنم

اگراز StoredProcedure استفاده کنم چی؟

دوستان نظرشماچیست؟

Royce_Da
جمعه 20 شهریور 1388, 15:56 عصر
:متفکر: :متفکر: :متفکر:

من فکر نمیکنم این روشی که دوست عزیزم آقا رضا گفتن کار کنه . چون من خودم قبل از این که با Transaction آشنا بشم میخاستم اینجوری کارم رو راه بندازم که نشد .

یعنی شما میفرمایید دو دستور را پشت سر هم تو یه رشته بنویسیم بعد یک بار کل اون رو Execut کنیم؟

به هر حال من خدمت آقای a3monoo... عرض میکنم که اگر این روش جواب نداد . شما هم دو دستور یا 100 دستورت رو داخل یه transaction اجرا کن . این توری هم راحت تره هم علمی تر

به هر حال اگر اون روش آقا رضا رو هم عملی کردی . همینجا یه ok یش رو بزار ممنون.

Reza_Yarahmadi
جمعه 20 شهریور 1388, 18:52 عصر
اگه از StoredProcedure استفاده بشه که خیلی بهتره. چون هم از بروز خیلی از مشکلات اعم از مشکل با داده های فارسی (در خیلی ار موارد) ، حملات SQL Injection (بطور محسوس) و ... جلوگیری میکنه و هم دست برنامه نویس رو برای استفاده از دستورات شرطی ، حلقه ها و ... باز میذاره.
برای کاری که میخواید انجام بدید اگه همیشه روال ثابتی برای تغییرات روی جدول دوم وجود داره میتونید از Trigger هم استفاده کنید.


من فکر نمیکنم این روشی که دوست عزیزم آقا رضا گفتن کار کنه
امتحان کردن کار سختی نیست!!!

a3mooneabi22
جمعه 20 شهریور 1388, 20:11 عصر
من دوتاش را کنارهم گذاشتم واجراهم شد:لبخندساده:

نمونه ای از برنامه رابراتون گذاشتم

اگرمثال از transaction دارید یااینکه توسایت هست ممنون میشم لینکش رابرایم بذارید:لبخندساده:

درضمن من خانم "آسمون آبی"هستم:چشمک:

آقایون که از این اسم های لطیف ندارند:لبخند:

bashiry
دوشنبه 23 شهریور 1388, 14:37 عصر
در اینجا مبحث بازیابی اطلاعات قبلی خیلی اهمیت داره
یادمه قبلا در این مورد نمونه کد هم تو سایت گذاشته شده بود

k_m
چهارشنبه 25 شهریور 1388, 01:33 صبح
با سلام
برای استفاده از Transaction می تونید این جوری عمل کنید :
‭using (System.Transactions.TransactionScope scop=new TransactionScope() )
‭ {
کد هایی که می خوایی یا همشون اجرا بشه یا هیچ کدوم رو هم اینجا بنویس .
همین.

‭ scop.Complete();
‭ }
فقط آخرش اون خط scop.Complete باعث میشه اطلاعات نهایی باشه. اگه یک جای کد هم خواستی اجرا متوقف بشه و کار انجام نشه می تونی خط زیر رو بنویسی:
‭scop.Dispose()
یا از Using بیای بیرون و Complete رو صدا نزنی که در این حالت هم اطلاعات ثبت نمیشه.