PDA

View Full Version : برای اتصال به جدولهای پایگاه داده از چه شی ای استفاده کنم؟؟؟



nazanin20
یک شنبه 15 فروردین 1389, 11:28 صبح
از
adotable
adoquery
یا
.
.
شی دیگری ؟؟
میدونید چرا این سوالو پرسیدم
اخه نمیخام تو جریان پروزه به این مشکل بربخورم:

در ضمن این کار، باید شما بدانید که تا می توانید از یک table در پایگاه داده ، همزمان در جاهای مختلف – در چند ADOtable متفاوت – استفاده نکنید چون ممکنه با تغییر در یکی از اونها ، اونها ی دیگه دچار مشکل بشن ، یا اینکه اصلا تغییرات داده شده در یک جدول در جدول های دیگر ترتیب اثر داده نشه – البته با خروج از برنامه دوباره درست خواهد شد

majidmir
یک شنبه 15 فروردین 1389, 11:31 صبح
سلام
به نظر من بهتره از ADO STOREDP استفاده کنی و در هر بار استفاده کردن یه بار اونو close کنی و سپس اجراش کنی با این کار هم برنامه نویسیت منظم تره و هم بهتر می تونی روی جدول هات مانور بدی !

pezhvakco
یک شنبه 15 فروردین 1389, 12:36 عصر
درود :


از
adotable
adoquery
یا
.
.
شی دیگری ؟؟

بهتره یه ADOConnection داشته باشی و اونو به پاگاه داده اتصال بدی و از ADODataSet یا ADOTable برای جدول ها استفاده کنی ( این ها رو به ADOConnection ارتباط بده ).


ممکنه با تغییر در یکی از اونها ، اونها ی دیگه دچار مشکل بشن ، یا اینکه اصلا تغییرات داده شده در یک جدول در جدول های دیگر ترتیب اثر داده نشه

ساختار کار Ado به این صورت است که از حافظه برای بارگیری اطلاعات استفاده می کنه، به همین دلیل این موضوع پیش می یاد ، که البته مشکل نیست .

فکر خوش .

nazanin20
یک شنبه 15 فروردین 1389, 12:36 عصر
سلام
به نظر من بهتره از ADO STOREDP استفاده کنی و در هر بار استفاده کردن یه بار اونو close کنی و سپس اجراش کنی با این کار هم برنامه نویسیت منظم تره و هم بهتر می تونی روی جدول هات مانور بدی !



میشه یه نمونه کد بزارید من ببینم؟
ممنونم

nazanin20
یک شنبه 15 فروردین 1389, 12:42 عصر
درود :



بهتره یه ADOConnection داشته باشی و اونو به پاگاه داده اتصال بدی و از ADODataSet یا ADOTable برای جدول ها استفاده کنی .



ساختار کار Ado به این صورت است که از حافظه برای بارگیری اطلاعات استفاده می کنه، به همین دلیل این موضوع پیش می یاد ، که البته مشکل نیست .

فکر خوش .


یه جا اینو خووندم ::

ارتباط با جدول:
قرار دادن یکADOConnection وبرقراری اررتباط و یک ADOTable (چون خواستید از پایه شروع کنم از ADOTable استفاده کردم وگرنه از ADOStoredProc برای اعمال درج وحذف و... استفاده می کنیم).
ADOTablePerson.Insert;
ADOTablePerson.FieldByName('PCode').Value:=EdtPCod e.Text;
ADOTablePerson.FieldByName('PName').Value:= PName.Text;
ADOTablePerson.FieldByName('PFamily').Value:=EdtPF amily.Text;
ADOTablePerson.Post;


ودر ادامه ش نوشته بود:

به همین راحتی یک رکورد به جدول اضافه می شه(فعلا این کار را انجام بدین تا به چندتا مشکل بخورید تا حالتون گرفته بشه بعد در موردش صحبت می کنیم(خالی بودن , تکراری بودن و...) ):متعجب:

delphi5
یک شنبه 15 فروردین 1389, 12:53 عصر
سلام
ساده ترین راه ممکن اینه که
1- از AdoConnection جهت ارتباط با بانک اطلاعاتی استفاده کنی
2- جهت برقراری ارتباط با یه Table از ADO Table ویا ADOQuery استفاده کنی (لازم به ذکره که باید برای دربافت اطلاعات از ADOQuery از Datasource استقفاده کنی)

majidmir
یک شنبه 15 فروردین 1389, 18:46 عصر
میشه یه نمونه کد بزارید من ببینم؟
ممنونم
سلام
این یه مثال کاربردی و کامل ترم قبلی

حسین خانی
یک شنبه 15 فروردین 1389, 23:14 عصر
با سلام :لبخندساده:


2- جهت برقراری ارتباط با یه Table از ADO Table ویا ADOQuery استفاده کنی )
یک سئوال از دوستان با تجربه :
اگر از یک ADOQuery به جای ADOTable برای Insert و یا Edit کردن رکوردها استفاده شود .
آیا مشکلی در ( مثلا در سرعت انجام و یا ... ) پیش نمی آید ؟
و یا اصلا این کار درست است ؟
لطفا توضیح کاملی بدهید
موفق باشید ...

pezhvakco
دوشنبه 16 فروردین 1389, 08:43 صبح
درود :

اگر از یک ADOQuery به جای ADOTable برای Insert و یا Edit کردن رکوردها استفاده شود .
آیا مشکلی در ( مثلا در سرعت انجام و یا ... ) پیش نمی آید ؟

Query = پرسش - استخراج داده ها از پايگاه داده ها و به كارگيرى آنها
Table = جدول - ساختار داده ای برای نگه داری اطلاعات

بهتره برای هر کاری از ابزار طراحی شده برای همون کار استفاده بشه .
ساختار کار تمام ابزار ADO یکسان است فقط امکانات اون ها متفاوت است .

فکر خوش .

nilidelphi
دوشنبه 16 فروردین 1389, 11:05 صبح
اگر از یک ADOQuery به جای ADOTable برای Insert و یا Edit کردن رکوردها استفاده شود .
آیا مشکلی در ( مثلا در سرعت انجام و یا ... ) پیش نمی آید ؟



دوست گرامی از هر ابزاری در دلفی برای ورود یا خروج اطلاعات استفاده کنید تقریبا سرعت یکسانی رو تجربه خواهید کرد(البته به شرطی که از توابع خود دلفی استفاده کنید مثلا از post یا inser یا ..... ) ولی اگر میخواهید از دستورات خود SQL استفاده کنید باید از ADOQuary استفاده کنید.
یه نکته ی بسیار مهم اینه که وقتی از ADOQuary استفاده می کنید باید دقت داشته باشید که نتایج کوئری مربوط میشه به دستوری که قبلا در ADOQuary اجرا کرده اید و برای دریافت اطلاعات جدید باید کوئری را دوباره با کد های جدید نوشته و اجرا کنید.

اما در مورد سوال کاربر Nazanin20 باید بگم که ایشون پرسیده بودند که از کدام ابزار استفاده کنم بهتره؟
که باید بگم هر ابزاری کاربرد خاص خودش رو داره مثلا از ADOTable بیشتر برای نمایش استفاده میشه یا از ADOQuary بیشتر برای جستجو استفاده میشه البته بگم که با ADOQuary میشه هر کاری که با پایگاه داده میشه انجام داد رو انجام داد (بغیر از کار هایی که نیاز به بسته بوده دیتابیس مورد نظر داره) اما در پروژه های حساس باید اینو در نظر داشت که ما از دیتابیس چه استفاده هایی میخواهیم بکنیم
برای مثال اگر برای سازمانی برنامه مینویسیم که حجم ورود اطلاعات به پایگاه داده شان زیاده و جستحوهای سریع نیاز دارند اونوقت باید از خود DBMS برای این منظور استفاده کنیم
یعنی تمامی دستورات و درخواست هامونو در StoreProcedure ها بنویسیم(داخل خود دیتابیس) بعد تو دلفی از یک ADOStoreProcedure استفاده کنیم چون سرعت استفاده از این ابزار خیلی بیشتر از سرعت زمانی است که ما از ADOQuary , ADOTable استفاده کنیم دلیلشم برمیگرده به مباحث مربوط به مدیریت DBMS ها
البته اگه خواسین بگین اینم توضیح میدم.

موفق باشید.....:قلب:

nazanin20
دوشنبه 16 فروردین 1389, 12:04 عصر
یه جایی اینو خوندم:



برای آگاهی یافتن از وضعیت جاری یا State یک DataSet می توانیم از متد State یا رویداد (Event) به نام OnStateChange استفاده کنیم که هر بار به هنگام تغییر وضعیت DataSet متناظرش فعال می شود. مثلا اگر قطعه کد زیر را در قسمت پاسخگویی به رویداد OnStateChange بنویسیم سبب می شود تا وضعیت جاری AdoTable1 در Edit1 نمایش داده شود:
Var
St : String ;

Begin
Case AdoTable1.State of

dsInactive: st := ' closed ' ;
dsEdit: st := ' Editing ' ;
dsInsert: st:= ' Inserting ' ;
Else st := ' other state ' ;

End ;

form1.caption := 'AdoTable1 state :' + st ;

End ;

سالک:

رویداد OnStateChange را در بین رویدادهای ADOTable من پیدا نکردم.
ولی دیتاسورس دارای این رویداد بود.

من کد زیر را امتحان کردم:
procedure TForm1.DataSource1StateChange(Sender: TObject);
var
St : String ;

begin

Case AdoTable1.State of

dsInactive: st := ' closed ' ;
dsEdit: st := ' Editing ' ;
dsInsert: st:= ' Inserting ' ;
Else st := ' other state ' ;

end ;

Edit1.text := st ;

end ;
http://irdelphi.250free.com/g/g2/a1/b6.gif

در شکل بالا با زدن دکمه ادیت می بینید که داخل ادیت نوشته Editing و همین طور با زدن دکمه اینسرت(دکمه دارای شکل بعلاوه) هم ی نویسد Inserting .



از adotable estefade karde?
باید حتما حالت ادیو تیبل چک بشه/؟
چقد نوشتن این کد لازمه >؟
اینو گفتم چون از یکی شنیدم مثلا وقتی حالت تیبلت رو ادیت باشه نمیشه اینزرت کنی و این حرفا!
یعنی باید قبلش چک کنی؟
نمیدونم با حرفام تونستم منظورمو برسونم یا نه؟

pezhvakco
سه شنبه 17 فروردین 1389, 11:26 صبح
اینو گفتم چون از یکی شنیدم مثلا وقتی حالت تیبلت رو ادیت باشه نمیشه اینزرت کنی و این حرفا!
فعال کردن ویرایش فقط برای وقتی است که میخوای وقدار دهی دستی انجام بدی و هیچ تاثیری در اضافه کردن سطر جدید نداره .

چک کردن فعال بودن ویرایش موارد کاربر دیگه ای داره .

فکر خوش .

benyaminrahimi
جمعه 20 فروردین 1389, 00:07 صبح
یه جا اینو خووندم ::

ارتباط با جدول:
قرار دادن یکADOConnection وبرقراری اررتباط و یک ADOTable (چون خواستید از پایه شروع کنم از ADOTable استفاده کردم وگرنه از ADOStoredProc برای اعمال درج وحذف و... استفاده می کنیم).
ADOTablePerson.Insert;
ADOTablePerson.FieldByName('PCode').Value:=EdtPCod e.Text;
ADOTablePerson.FieldByName('PName').Value:= PName.Text;
ADOTablePerson.FieldByName('PFamily').Value:=EdtPF amily.Text;
ADOTablePerson.Post;


ودر ادامه ش نوشته بود:

به همین راحتی یک رکورد به جدول اضافه می شه(فعلا این کار را انجام بدین تا به چندتا مشکل بخورید تا حالتون گرفته بشه بعد در موردش صحبت می کنیم(خالی بودن , تکراری بودن و...) ):متعجب:


برای اتصال به بانک ado connection
برای نیبل و ویو ado query یا ado dataset (آقایی که میگی از tstored procedure استفاده کنی منظم تره اون برای پروسیحر هاست یعنی اگه از adodataset کنی برنامه نامنظمه؟:قهقهه::قهقهه::قهقه ::قهقهه::قهقهه::قهقهه::قهقهه: :قهقهه:




ارتباط با جدول:
قرار دادن یکADOConnection وبرقراری اررتباط و یک ADOTable (چون خواستید از پایه شروع کنم از ADOTable استفاده کردم وگرنه از ADOStoredProc برای اعمال درج وحذف و... استفاده می کنیم).

ADOTablePerson.FieldByName('PCode').Value:=EdtPCod e.Text;
ADOTablePerson.FieldByName('PName').Value:= PName.Text;
ADOTablePerson.FieldByName('PFamily').Value:=EdtPF amily.Text;
ADOTablePerson.Post ADOTablePerson.Insert;;


چرا آخه خود آزاری می کنید یک ado query همه اینا رو داره مگر آدم بیکار باشه که برای درج و حذف پروسیجر بنویسه یادمه وقتی foxpro کار می کردیم اینطوری بود :گریه::گریه::گریه::گریه::گریه:
برای کنترل ها هم dbedit
آخه چرا fieldbyname?


برای رکورد تکراری هم از ایندکس خود sql server استفاده کنید