ورود

View Full Version : کار با Transaction بوسیله ADO



MOJTABAATEFEH
جمعه 19 فروردین 1390, 10:19 صبح
سلام دوستان عزیز در دلفی چطور میشه بدون دستورات sql و با ado از Transaction ها استفاده کرد؟

با تشکر

vcldeveloper
جمعه 19 فروردین 1390, 13:08 عصر
TAdoConnection.BeginTrans
TAdoConnection.CommitTrans
TAdoConnection.RollbackTrans

MOJTABAATEFEH
جمعه 19 فروردین 1390, 14:09 عصر
TAdoConnection.BeginTrans
TAdoConnection.CommitTrans
TAdoConnection.RollbackTrans

ممنون جناب کشاورز یعنی برای هر پست Adotable باید قبل و بعدش begintran , committran کانکشن همون Adotable رو مطابق بالا استفاده کرد؟
اگر پاسخ بالا مثبت است برای مابقی Table ها مشکلی بوجود نمی آورد؟

با تشکر

vcldeveloper
جمعه 19 فروردین 1390, 14:24 عصر
یعنی برای هر پست Adotable باید قبل و بعدش begintran , committran کانکشن همون Adotable رو مطابق بالا استفاده کرد؟
اگر پاسخ بالا مثبت است برای مابقی Table ها مشکلی بوجود نمی آورد؟
سوال شما درباره نحوه استفاده از Transaction در ADO هست، یا کلا با Transaction ها آشنا نیستید؟ اگر با Transaction آشنا هستید، خب مشخصه که باید از این متدها کجا استفاده کنید، و تاثیر ایجاد یک Transaction روی داده ها چی میتونه باشه.
این سوالی که مطرح می کنید، بیشتر اینطوری میرسونه که شما دقیقا نمیدونید Transaction چی هست و کجا باید ازش استفاده کرد. اگر مسئله همینه، توضیح بدید که برای چی میخواید از Transaction استفاده کنید، تا بشه بهتر راهنمایی کرد.

موفق باشید

MOJTABAATEFEH
جمعه 19 فروردین 1390, 14:36 عصر
جناب کشاورز در دستورات sql از Transaction ها استفاده کردم با انواع و نحوه استفادشون هم آشنام همونطور که عرض کردم میخواستم بدونم با عناصر خود دلفی چطور باید از Transaction ها استفاده کرد؟

با تشکر

MOJTABAATEFEH
سه شنبه 23 فروردین 1390, 19:23 عصر
از دوستان کسی مرجع خوبی ترجیحا فارسی برای این مبحث سراغ داره؟

vcldeveloper
سه شنبه 23 فروردین 1390, 19:40 عصر
میخواستم بدونم با عناصر خود دلفی چطور باید از Transaction ها استفاده کرد؟
نحوه استفاده کردنش همانطور هست که در دستورات مستقیم SQL استفاده میشه. متدهایی هم که باید استفاده بشند رو هم در پست قبلی گفتم. اما اینکه می پرسید، آیا باید قبل از هر Post یک Transaction استفاده بشه یا نه؛ باعث میشه که من بپرسم، آیا با مفهوم Transaction آشنا هستید یا خیر؟ Transaction بر روی مجموعه ایی از عملیات ها (در بانک اطلاعاتی، رکوردها) اعمال میشه، پس Transaction برای Post یک رکورد بی معنی هست.

Saeid59_m
پنج شنبه 25 فروردین 1390, 23:30 عصر
در تائید فرمایشات مهندس کشاورز

با استفاده از مشخص کردن شروع و پایان یک ترانزاکشن ، شما مجموعه ای از دستورات SQL را ایجاد می نمائید که اجرا شدن تمام آنها با هم یک معنی مشخص را می دهد و اجرا شدن قسمتی از آن و یا اجرا شدن دستوری مابین آنها از سوی سایر کلاینت ها باعث عملکرد نادرست آن خواهد شد .

بنا براین به این صورت شما به DB می گوئید این دستورات بایستی باهم اجرا شوند و در صورت بروز هر گونه مشکل برای هر کدام از آنها تمام عملیات منتفی خواهد شد .

MOJTABAATEFEH
سه شنبه 30 فروردین 1390, 22:05 عصر
دوست عزیز من توضیح Transaction ها رو نخواستم پست های بالایی من رو مطالعه بفرمایید کار کردم با عناصر Ado خواستم بدونم نه با دستورات SQL
موفق باشید

whitehat006
دوشنبه 26 اردیبهشت 1390, 12:58 عصر
try
ADOConnection1.Open;
ADOCommand1.Connection.BeginTrans;

//succees
ADOCommand1.CommandText:='insert into link(linkid,link_name) values(:linkid,:link_kname)';
ADOCommand1.Parameters.ParamValues['linkid']:=12;
ADOCommand1.Parameters.ParamValues['link_kname']:='Barnamenevis';
ADOCommand1.Execute;

//succees
ADOCommand1.CommandText:='insert into linktemp(linkid,link_name) values(:linkid,:link_kname)';
ADOCommand1.Parameters.ParamValues['linkid']:=5689;
ADOCommand1.Parameters.ParamValues['link_kname']:='ORG';
ADOCommand1.Execute;

// error on linkid (duplicate key)
ADOCommand1.CommandText:='insert into link(linkid,link_name) values(:linkid,:link_kname)';
ADOCommand1.Parameters.ParamValues['linkid']:=12;
ADOCommand1.Parameters.ParamValues['link_kname']:='Mehrdad';
ADOCommand1.Execute;

ADOCommand1.Connection.CommitTrans;
except
on e:Exception do begin ADOCommand1.Connection.RollbackTrans;
ShowMessage(e.Message);
end;
end;