PDA

View Full Version : در شبکه کدوم ثابتها از ADO مناسبترن ؟



vahab_vb
جمعه 27 بهمن 1385, 18:32 عصر
سلام
- یک کامپیوتر در شبکه که دیتابیس اصلی در اون قرار داره
- نرم افزاری با VB6 و ADO نوشتم و اون رو در تمام کامپیوترهای شبکه که به کامپیوتر اصلی در شبکه وصل هستند نصب کردم.
- و ممکنه در یک لحظه مثلا هر ده کامپیوتر با هم به این دیتابیس وصل بشن.

حالا به نظر شما برای این جور کارها (کارهای شبکه ای و چند کاربر همزمان) کدوم ثابتهای زیر مناسبترن ؟




---- For Cursor Type
adOpenForwardOnly
adOpenKeyset
adOpenDynamic
adOpenStatic

---- For Lock Type
adLockReadOnly
adLockOptimistic
adLockPessimistic
adLockBatchOptimistic


ممنون

zerobit-ltd
جمعه 27 بهمن 1385, 19:13 عصر
تمام این تنظیمات بستگی به نوع برنامه شما داره.
اگر شما داده ها رو فقط و فقط جهت نمایش به کاربران نیاز دارید، بهترین نوع کرسر از نظر سرعت forwardonly هستش.
کرسرهای dynamic همیشه آخرین مقادیر ذخیره شده رو نمایش می ده. یعنی همیشه به روزه. همچنین تمام عملیات حذف و ایجاد و اصلاح رکوردها رو اتوماتیک انجام می ده. ولی کارایی رو به شدت پایین میاره و باعث ترافیک روی LAN می شه. چون با هر جابجایی روی رکوردها، درخواست جدیدی برای بازیابی اطلاعات بهسرور می فرسته. البته jet engine این نوع کرسر رو پشتیبانی نمی کنه.
کرسرهای keyset مثل کرسرهای dynamic هستن؛ با این تفاوت که رکوردهای اضافه شده توسط سایر کاربران رو نداره. با این کرسر امکان اصلاح یا خواندن تمام رکوردهی رکوردست رو داریم، ولی اگر بخوایم به رکوردی که توسط کاربر دیگه ای حذف شده، دسترسی پیدا کنیم، خطا رخ می ده.
کرسرهای static یه snapshot یا تصویر آنی و قابل scroll از داده ها رو به ما می ده. تغییرات انجام شده توسط سایر کاربران با استفاده از این کرسر دیده نمی شن.
بهترین کارایی رو کرسرهای forwardonly دارن. ولی اگر سرور شما حافظه کافی داره و رکوردهای بازیابی شده زیاد نباشن، کرسر static هم بد نیست.
تمام انواع کرسرها به جز static، سمت سرور ایجاد می شن.
برای locktype، نوع readonly یه نسخه غیر قابل ویرایش از رکوردها رو در اختیار شما می زاره.
قفل گذاری pessimistic، رکورد رو به محض اینکه وارد مد edit بشه، قفل می کنه و با update شدن رکورد، قفل از روی رکورد برداشته می شه.
قفل گذاری optimistic، مقیاس پذیری بهتری نسبت به pessimistic داره؛ چون رکورد رو تنها موقع updae قفل می کنه که زمان معمولا کوتاهی هستش.
optimistic batch هم فقط برای کرسرهای static قابل استفاده هستش. در این حالت، تمام اطلاعات به client فرستاده می شه و تغییرات همه با هم به سمت سرور می رن و با هم اعمال می شن.
بهترین نوع کرسر و قفل گذاری، همون پیش فرض ado هستش. یعنی کرسر forwardonly و قفل از نوع readonly.
حالا با توجه به این مسایل، باید یه مدل رو انتخاب کنی.

vahab_vb
شنبه 28 بهمن 1385, 09:08 صبح
ممنون از راهنمائیهای بسیار کاملتون، آها یعنی اگر با موتور Jet و OLEDB 4 کار کنیم. مطمئنا نمیشه از Dynamic استفاده کرد ؟ اگر دیتابیس ما Access باشه و با دستورات SQL وارد بشیم. بازم نمیشه ؟
چون من امتحان کردم شد. ولی نمیدونم که چرا همش Recordcount رو -1 میده ؟؟؟

vahab_vb
شنبه 28 بهمن 1385, 09:09 صبح
ممنون از راهنمائیهای بسیار کاملتون، آها یعنی اگر با موتور Jet و OLEDB 4 کار کنیم. مطمئنا نمیشه از Dynamic استفاده کرد ؟ اگر دیتابیس ما Access باشه و با دستورات SQL وارد بشیم. بازم نمیشه ؟
چون من امتحان کردم شد. ولی نمیدونم که چرا همش Recordcount رو -1 میده ؟؟؟

zerobit-ltd
شنبه 28 بهمن 1385, 09:44 صبح
یعنی اگر با موتور Jet و OLEDB 4 کار کنیم. مطمئنا نمیشه از Dynamic استفاده کرد ؟ اگر دیتابیس ما Access باشه و با دستورات SQL وارد بشیم. بازم نمیشه ؟
چون من امتحان کردم شد. ولی نمیدونم که چرا همش Recordcount رو -1 میده ؟؟؟
اگر شما کرسر رو به صورت dynamic باز کنید، بدون اینکه خطایی رخ بده، کرسر رو به صورت keyset باز می کنه.
اگر هم بخواید از RecordCount استفاده کنید، باید connection.cursorlocation رو client بزارید. و تنها نوع کرسر سمت client هم static هستش. یعنی مجبورید از این نوع کرسر استفاده کنید.