PDA

View Full Version : نحوه استفاده از Transaction در 2005



روح اله معینی زاده
چهارشنبه 28 دی 1384, 11:56 صبح
سلام به همه دوستان

من تا به حال موفق به استفاده از Transaction در کار با بانک اطلاعاتی نشده‌ام. اگه کسی کار کرده یه مثال بفرسته که من هم از آن استفاده کنم. ترجیحا با Data.Odbc باشه بهتره.
با احترام - خدانگهدار

Hamedm
چهارشنبه 28 دی 1384, 12:07 عصر
سلام به همه دوستان

من تا به حال موفق به استفاده از Transaction در کار با بانک اطلاعاتی نشده‌ام. اگه کسی کار کرده یه مثال بفرسته که من هم از آن استفاده کنم. ترجیحا با Data.Odbc باشه بهتره.
با احترام - خدانگهدار

سلام

من نحوه کارشو در 2003 بلدم. اگه بخواهی در 2003 بهت توضیح میدم.

راستی جدا شما تاحالا در فرستادن QUERY به دیتابیس، از Transaction استفاده نمیکردید؟ اینجوری اگه وسط چندتا INSERT یا UPDATE که به هم مرتبط هستند مشکلی پیش میومد چه کار میکردید؟

در پناه حق موفق و پرتوان

habedijoo
چهارشنبه 28 دی 1384, 12:46 عصر
راستی جدا شما تاحالا در فرستادن QUERY به دیتابیس، از Transaction استفاده نمیکردید؟ اینجوری اگه وسط چندتا INSERT یا UPDATE که به هم مرتبط هستند مشکلی پیش میومد چه کار میکردید؟


آقای محمدی شاید یک Transaction توی دیتابیس باشه . فکر نکنم حتما لازمه Transaction رو توی برنامه بگذاریم .
نظر شما چیه ؟

Hamedm
چهارشنبه 28 دی 1384, 13:05 عصر
آقای محمدی شاید یک Transaction توی دیتابیس باشه . فکر نکنم حتما لازمه Transaction رو توی برنامه بگذاریم .
نظر شما چیه ؟

سلام

منظورتون چیه که گفتید "میتونه در دیتابیس باشه"؟

دیتابیس چطوری میتونه QUERYهای مرتبط با هم که ما میفرستیمو تشخیص بده؟

در پناه حق موفق باشید و پرتوان

habedijoo
چهارشنبه 28 دی 1384, 16:21 عصر
سلام
SP ها . بنای حرف من استفاده از SP بود .(Store Procedure) از آنجا که گفته میشود SP سرعت و انعطاف پذیری کار رو به شدت بالا می بره پس به نظر من بهتره کارها را حداکثر به سمت سرور ببریم و توی کد فقط اجرا بشن .
البته ، ناگفته نماند که این کار از نظر اقتصادی اصلا توصیه نمیشه و به نوعی نبض کار رو از دست برنامه نویسان در میاره .

Hamedm
چهارشنبه 28 دی 1384, 16:31 عصر
سلام
SP ها . بنای حرف من استفاده از SP بود .(Store Procedure) از آنجا که گفته میشود SP سرعت و انعطاف پذیری کار رو به شدت بالا می بره پس به نظر من بهتره کارها را حداکثر به سمت سرور ببریم و توی کد فقط اجرا بشن .
البته ، ناگفته نماند که این کار از نظر اقتصادی اصلا توصیه نمیشه و به نوعی نبض کار رو از دست برنامه نویسان در میاره .
سلام

من یک INSERT INTO داشتم که حدود ٧٠ فیلد رو در دیتابیس اضافه میکرد. حالا بنظر شما بهتره در این مواقع دستور INSERT INTO رو در SP انجام بدم یا برنامه؟

بنظر من SP برای INSERT INTO و UPDATEهایی که فیلدهای زیادی داره مناسب نیست.

در پناه حق موفق باشید و پرتوان

habedijoo
چهارشنبه 28 دی 1384, 17:08 عصر
سلام
از چه نظر مناسب نیستند .؟ طولانی شدن دستور ؟ یا سرعت ؟
لطفا ذکر کنید .

Hamedm
چهارشنبه 28 دی 1384, 17:15 عصر
سلام
از چه نظر مناسب نیستند .؟ طولانی شدن دستور ؟ یا سرعت ؟
لطفا ذکر کنید .
سلام

تاحالا فکر کردید چطوری ٧٠ تا پارامتر رو به SP پاس داد؟ هیچ کدومشون محاسباتی هم نیست که بگیم محاسباتو در SP انجام بدیم.

در پناه حق موفق باشید و پرتوان

روح اله معینی زاده
چهارشنبه 28 دی 1384, 17:54 عصر
سلام
من تا وی بی 6 استفاده می کردم ولی از نسخه دات نت به بعد هیچ وقت استفاده نکردم و چون برنامه‌هایی رو هم که می نوشتم فقط خودم یا یکی دو نفر دیگر بیشتر استفاده نمی کردند، نیاز جدی برای اضافه کردن آن ندیدم و بنابراین دنبالش هم نرفتم.
الان همین جوری توی یه کاری گفتم بذار از اون روش استفاده کنم و چون نمی دونستم که به چه شکل باید باشه گفتم بذار بپرسم شاید دوستان کار کرده باشند و جواب بدن.
بی زحمت شما آقا حامد 2003 رو بنویس انشاءالله توی 2005 هم جواد!!! بده
با احترام - خدانگهدار

مطهر
چهارشنبه 28 دی 1384, 17:55 عصر
dcNorthwind.Open()

Dim transaction1 As SqlClient.SqlTransaction
transaction1 = dcNorthwind.BeginTransaction()

daCustomers.UpdateCommand.Transaction = transaction1
daOrders.UpdateCommand.Transaction = transaction1

Try
daCustomers.Update(dsNorthwind1)
daOrders.Update(dsNorthwind1)
transaction1.Commit()

Catch dbcex As DBConcurrencyException
MessageBox.Show("Update Failed, Concurrency Exception")
transaction1.Rollback()

Catch ex As Exception
MessageBox.Show("Update Failed")
transaction1.Rollback()

Finally
dcNorthwind.Close()
End Try
من از این کد کمک گرفتم در 2005
فکر نکنم با 2003 تفاوت داشته باشه

sh
چهارشنبه 28 دی 1384, 18:13 عصر
باید از System.Transactions
استفاده کنی



Using transScope As New TransactionScope() Using connection1 As New SqlConnection(connectString1) ' Opening connection1 automatically enlists it in the ' TransactionScope as a lightweight transaction. connection1.Open() ' Do work in the first connection. ' Assumes conditional logic in place where the second ' connection will only be opened as needed. Using connection2 As New SqlConnection(connectString2) ' Open the second connection, which enlists the ' second connection and promotes the transaction to ' a full distributed transaction. connection2.Open() ' Do work in the second connection. End Using End Using ' Commit the transaction. transScope.Complete()End Using

روح اله معینی زاده
چهارشنبه 28 دی 1384, 18:42 عصر
با سلام و تشکر از جناب مطهر
جالب بود و به کار آمد و جواب داد.
با احترام- خدانگهدار

امیر تورانی
چهارشنبه 28 دی 1384, 18:50 عصر
این Transaction که میگید یعنی چه و به چکار میاد من که نمفهمم . یکی یکم توضیح بده شاید فهمیدم.