Fa پلاگینSQLite چقدر قدرت داره؟

pro_man

Active Member
سلام دوستان ..میخاستم بدونم این پلاگین SQLite چقدر قدرت داره؟
مثلا تا چند تا رکورد رو میتونه توی خودش نگه داره بدون اینکه مشکلی پیش بیاد؟مثلا هنگ نکنه موقع سرچ کردن..
 

silvercover

کاربر متخصص
به اندازه کافی قدرت داره. شما باید طوری کد بنویسید که مثلا صد مگ داده یه دفعه منتقل نشه به mmb. در مورد نگه داشتن رکورد ها محدودیتی برای شما نیست.
 

pro_man

Active Member
به اندازه کافی قدرت داره. شما باید طوری کد بنویسید که مثلا صد مگ داده یه دفعه منتقل نشه به mmb. در مورد نگه داشتن رکورد ها محدودیتی برای شما نیست.

مرسی از کمکت...
حالا مثلا فرض کنیم یه برنامه واسه یه کتابخونه داریم مینویسیم که باید توی این برنامه اسم کتابها به همراه مشخصات ثبت بشه..فرض رو بر این میگیریم که حجم اطلاعات بالای 100 مگابایت باشه..حالا بین این همه کتاب بخایم عمل سرچ کردن انجام بدیم چجوری باید این کار رو بکنیم که یه دفعه حجم بالای داده به mmb وارد نشه؟
نیمخام با جزئیات توضیح بدین..به طور کلی هم بگین ممنون میشم
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
حجم کلی دیتابیس چندان اهمیتی نداره، مهم اینه که داده هایی که پلاگین به برنامه میفرسته چقدر باشه مثلاً هیچوقت اجازه ندید تعداد حروف کلمه ی مورد جستجو کمتر از (بعنوان مثال) سه حرف باشه (گمان نمیکنم کتابی باشه که اسمش دو حرفی باشه، از طرفی ممکنه هزاران کتاب در دیتابیس موجود باشه که با حرف "ب" شروع بشه، پس منطقی نیست اجازه بدید کلمه ی تک حرفی مورد جستجو قرار بگیره) یا مثلاً اگر یک جستجو نتیجه ی زیادی داره (مثلاً چند ده هزار رکورد)، با استفاده از کلمه ی کلیدی limit رکورد ها رو مثلاً 100 تا 100 بخونید و نمایش بدید. مسائلی از این دست.
 

sajadms

Member
حجم کلی دیتابیس چندان اهمیتی نداره، مهم اینه که داده هایی که پلاگین به برنامه میفرسته چقدر باشه مثلاً هیچوقت اجازه ندید تعداد حروف کلمه ی مورد جستجو کمتر از (بعنوان مثال) سه حرف باشه (گمان نمیکنم کتابی باشه که اسمش دو حرفی باشه، از طرفی ممکنه هزاران کتاب در دیتابیس موجود باشه که با حرف "ب" شروع بشه، پس منطقی نیست اجازه بدید کلمه ی تک حرفی مورد جستجو قرار بگیره) یا مثلاً اگر یک جستجو نتیجه ی زیادی داره (مثلاً چند ده هزار رکورد)، با استفاده از کلمه ی کلیدی limit رکورد ها رو مثلاً 100 تا 100 بخونید و نمایش بدید. مسائلی از این دست.
1- خب با این شرایط به نظرتون استفاده از مثال کامل محمود که تو انجمن هست و با نوشتن اولین کاراکتر شروع به جستو جو می کنه ممکنه تو اجرای برنامه با تعداد رکورد بالا مشکل پیش بیاره؟ اگه اینطور هست بهتر نیست از محمود بخوایم این قسمت برنامشو یه کم تغییر بده یا نمونه سرچ سه کاراکتریش رو تو همون پست بزاره چون فک کنم خیلی از کاربرا دارن از مثال ایشون استفاده می کنن
2- مقدار داده ورودی به بیلدر تو این پلاگین حدود های 10 مگ بود ؟ یا 100 مگ؟
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
اینکه چطور کدنویسی کنید بستگی داره به هدفتون.

دیتابیسی که من برای دیکشنری ازش استفاده کردم حدود 50000 رکورد داشت و حجم خود دیتابیس حدود 5 مگابایت بود، کاربر میتونست حتی یک کلمه رو هم مورد جستجو قرار بده، که در اون پروژه تعداد زیاد رکوردها مشکل ساز نشد. (نتیجه ی جستجو - از طرف پلاگین - خیلی سریع به mmb فرستاده میشد، اما خیلی طول میکشید تا داده ها توسط mmb در یک فایل ذخیره بشن و نمایش داده بشن)
ولی در همون پروژه قسمتی که هنگام تایپ کلمات مشابه (کلماتی که با اون حروف شروع میشدن) رو نمایش می داد، از کلمه ی کلیدی limit استفاده کردم تا تعداد رکورد هایی که خونده میشه محدود بشه به 10 عدد، چون هم سرعت مدنظر بود و هم داده های بیشتر از اون فقط منابع رو هدر می داد و کمکی نمیکرد.

ولی باید همیشه مدنظر داشته باشید که ممکنه شرایطی پیش بیاد که داده های زیادی از یک جستجو حاصل بشه، درواقع باید شرایطی که ممکنه پیش بیاد رو مدنظر قرار بدید و روش هایی رو بکار ببرید که در آینده برنامه تون با کمترین مشکل مواجه بشه.
 

silvercover

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

ضمن اینکه نکته هایی هم که در مورد limit گفتن کاملا صحیح است.
 

silvercover

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

ضمن اینکه نکته هایی هم که در مورد limit گفتن کاملا صحیح است.
 

mmb4us

Member
سلام دوستان

حالا تو مثال محمود جان تو قسمت لیست کلیه اعضاء که کلیه رکوردها دیتابیس رو تو پلاگین uo به نمایش در میاره ، که اگه رکوردها زیاد باشن باعث کند شدن برنامه میشه. چجوری باید کد بنویسیم که اطلاعات تکه تکه مثلا هر دفعه 100 رکورد رو نشون بده و بعد با زدن کلید پیمایشی 100 رکوردی بعدی و همینطور 100 رکورد بعد رو تو پلاگین UO نشون بده

ممنون میشم راهنمایی کنین و بگین جه کدی باید بنویسیم :rose:
 

silvercover

کاربر متخصص
برای خوندن تعداد محدودی از داده ها از limit استفاده میشه. فرض کنیم بانک اطلاعاتی ما 100 رکورد داره. کد زیر دو تاش رو بر می گردونه:

[PHPS] SELECT * FROM employees LIMIT 2;

id first_name last_name *** email
---- ---------- ---------- --- --------------------
101 Alex Gladstone M [email protected]
102 Brenda Dudson F [email protected][/PHPS]

limit بعد از عبارت شرطی where میاد و در آخر عبارت select قرار میگیره.

[PHPS]SELECT * FROM employees WHERE s = 'M' ORDER by last_name, first_name LIMIT 1;[/PHPS]

به این ترتیب شما اول 100 رکورد می خونید و با زدن کلید بعدی 100 مورد دیگه رو خونده و جایگزین می کنید. این کار لازمش این هست که در ابتدا تعداد رکورد ها رو داشته باشید
که بتونید قطعه قطعه کردن رو صورت بدین.
 
آخرین ویرایش:

mmb4us

Member
برای خوندن تعداد محدودی از داده ها از limit استفاده میشه. فرض کنیم بانک اطلاعاتی ما 100 رکورد داره. کد زیر دو تاش رو بر می گردونه:

PHP Code:

SELECT * FROM employees LIMIT 2; id first_name last_name *** email---- ---------- ---------- --- --------------------101 Alex Gladstone M <a href="mailto:[email protected]">alex@mycompany.com</a>102 Brenda Dudson F <a href="mailto:[email protected]">brenda@mycompany.com</a>



limit بعد از عبارت شرطی where میاد و در آخر عبارت select قرار میگیره.

PHP Code:

SELECT * FROM employees WHERE s = 'M' ORDER by last_name, first_name LIMIT 1;



به این ترتیب شما اول 100 رکورد می خونید و با زدن کلید بعدی 100 مورد دیگه رو خونده و جایگزین می کنید. این کار لازمش این هست که در ابتدا تعداد رکورد ها رو داشته باشید
که بتونید قطعه قطعه کردن رو صورت بدین.

حامد جان سلام

شرمنده من دقیقا نفهمیدم باید چکار کنم :?:. من الان فقط تونستم اطلاعات به نمایش در اومده تو پلاگین uo رو محدود کنم . حالا با چه کدی اول باید تعداد رکوردها رو بگیرم و بعد تو کلیدهای پیمایشی که برای حرکت بین رکورهای تکه تکه شده باید دقیقا چه کدی بنویسیم

یک دنیا ممنون میشم راهنمایی:rose:
 

silvercover

کاربر متخصص
- ابتدا لازم هست تا تعداد کل رکورد های مد نظر رو با COUNT بدست بیاریم. چیزی شبیه کد زیر:

[PHPS]SELECT count(*) FROM employees;[/PHPS]

- در ادامه ما توسط LIMIT تعداد 100 رکورد اول رو می خونیم:

[PHPS]SELECT * FROM employees LIMIT 100;[/PHPS]

- بخش LIMIT می تونه دو مقدار بگیره. یکی تعداد رکوردهایی که میخایم برگشت داده بشه و دوم از جایی که میخایم این تعداد خونده بشه. مثلا اگر ما بخایم دو رکورد بخونیم و این دو رکورد دومین و سومین
رکورد حاضر در جدول ما باشند از کدی شبیه این استفاده میشه:

[PHPS]SELECT * FROM employees LIMIT 2,2;[/PHPS]

- بنابراین ما وقتی صد رکورد اول رو خوندیم از این به بعد می تونیم برای صد رکورد بعدی داشته باشیم:

[PHPS]SELECT * FROM employees LIMIT 100,100;[/PHPS]

حالا اینجا نیاز داریم توی یه متغیر شماره آخرین رکوردی رو که خونده شده داشته باشیم تا در دفعات بعد بدونیم از کجا باید بخونیم.

فلوچارت عملکرد دستور SELECT و LIMIT:

select-stmt.gif

www.sqlite.org/lang_select.html
 
آخرین ویرایش:

mmb4us

Member
- ابتدا لازم هست تا تعداد کل رکورد های مد نظر رو با COUNT بدست بیاریم. چیزی شبیه کد زیر:

PHP Code:

SELECT count(*) FROM employees;



- در ادامه ما توسط LIMIT تعداد 100 رکورد اول رو می خونیم:

PHP Code:

SELECT * FROM employees LIMIT 100;



- بخش LIMIT می تونه دو مقدار بگیره. یکی تعداد رکوردهایی که میخایم برگشت داده بشه و دوم از جایی که میخایم این تعداد خونده بشه. مثلا اگر ما بخایم دو رکورد بخونیم و این دو رکورد دومین و سومین
رکورد حاضر در جدول ما باشند از کدی شبیه این استفاده میشه:

PHP Code:

SELECT * FROM employees LIMIT 2,2;



- بنابراین ما وقتی صد رکورد اول رو خوندیم از این به بعد می تونیم برای صد رکورد بعدی داشته باشیم:

PHP Code:

SELECT * FROM employees LIMIT 100,100;



حالا اینجا نیاز داریم توی یه متغیر شماره آخرین رکوردی رو که خونده شده داشته باشیم تا در دفعات بعد بدونیم از کجا باید بخونیم.

فلوچارت عملکرد دستور SELECT و LIMIT:

مشاهده پیوست 87040

www.sqlite.org/lang_select.html


حامد جان سلام . خیلی ممنون از راهنماییتون ولی شرمنده بازم بنده متوجه نشدم چجوری باید از کدها استفاده کنم :cry:

حامد جان بنده یک فایل رو پیوست کردم ، ممنون میشم هر موقع تونستین و وقت کردین تو نمونه برام کداشو جا بزاری. بازم بخاطر راهنماییتون ممنون:rose:

آهان الان تو این فایل 11 رکورد وجود داره مثلا هر دفعه محدوده رکودها 5 باشه
 

پیوست ها

  • UO.rar
    694.9 کیلوبایت · بازدیدها: 12

mmb4us

Member
دوستان سلام

می خواستم بدونم با چه کدی میتونیم شماره اخرین رکوردی که تو پلاگین uo به نمایش در اومده رو بدست بیاریم تا بعد تو یک متغییر بریزیم

ممنون میشم راهنمایی کنین
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
مثال همراه پلاگین رو بررسی کیند، همه ی توابع رو به همراه کارکردشون می تونید ببینید.
تابع LVItemCount برای بدست آوردن تعداد سطر های مجود در شئ ListView هست.
 

mmb4us

Member
مثال همراه پلاگین رو بررسی کیند، همه ی توابع رو به همراه کارکردشون می تونید ببینید.
تابع LVItemCount برای بدست آوردن تعداد سطر های مجود در شئ ListView هست.

سلام بر جناب nevercom عزیز ممنون از پاسختون

بنده تو مثال همراه پلاگین گشتم ولی چیزی که میخواستم نبود. ببینید دوست عزیز من میخوام شماره ی آخرین رکوردی که در پلاگین uo نمایش داده میشه رو تو یک متغییر بریزم ( با توجه به این نکته که ممکنه اخرین رکورد ذخیره شده تودیتابیس نباشه یعنی قراره هر دفعه تعداد رکورد خاصی با قابلیت limet در پلاگین uo نمایش بدم)

دوست عزیز برای اینکه دقیقا منظور منو متوجه بشی ممنون میشم فایل پیوستی رو دریافت کنید و بگین مشکلش چیه

با تشکر:rose::rose:
 

پیوست ها

  • 123.rar
    695.2 کیلوبایت · بازدیدها: 4

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
نیاز نیست تعداد آیتم های لیست ویو رو بگیریم چون کمکی بهمون نمیکنه (درواقع تعداد آیتم ها برابر با Limit هست)
یه متغیر بنام Index تعریف شده که مقدارش برابر با تعداد آیتم هایی که نمایش داده شده هست (هر بار با Limit جمع میشه)، با استفاده از این و تعداد کل رکوردها میتونید چیزی کخ میخاید رو اجرا کنید.
 

پیوست ها

  • uo.zip
    693.9 کیلوبایت · بازدیدها: 23

mmb4us

Member
نیاز نیست تعداد آیتم های لیست ویو رو بگیریم چون کمکی بهمون نمیکنه (درواقع تعداد آیتم ها برابر با Limit هست)
یه متغیر بنام Index تعریف شده که مقدارش برابر با تعداد آیتم هایی که نمایش داده شده هست (هر بار با Limit جمع میشه)، با استفاده از این و تعداد کل رکوردها میتونید چیزی کخ میخاید رو اجرا کنید.

سلام جناب nverecom عزیز بسیار ممنون از لطفی که کردین و نقص فایل رو بر طرف کردین :rose::rose::rose:

دوست عزیز ممنون میشم بگین تو کدها چه تغییر بدیم که تو کلید برگشت که وارد کنیم بتونیم رو به عقب هم اطلاعات رو نمایش بدیم


باتشکر:rose::rose:
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
کد:
[color=#0000FF]If[/color] (Index >= TotalRecords) [color=#0000FF]Then[/color] 
  [color=#000090][b]Message[/b][/color]("No more [color=#0000FF]To[/color] show !","") 
  [color=#000090][b]Return[/b][/color]() 
  Index = [color=#ff0000]0[/color] 
  OFFSET = [color=#ff0000]0[/color] 
[color=#0000FF]End[/color] 
[color=#0000FF]If[/color] (Index) [color=#0000FF]Then[/color] 
  OFFSET = OFFSET + LIMIT 
[color=#0000FF]End[/color] 
Index = Index + LIMIT

اگر توجه کنید کل کد یه جمع و تفریق ساذه ست، شما با تغییر مقدار OFFSET میتونید تعیین کنید که از رکورد شماره ی چند، به اندازه ی LIMIT در نتیجه ی جستجو لحاظ بشه
یعنی برای دکمه برگشت، کافیه مقدار LIMIT رو از OFFSET کم کنید.
 

mmb4us

Member
کد:
[COLOR=#0000ff]If[/COLOR] (Index >= TotalRecords) [COLOR=#0000ff]Then[/COLOR] 
  [COLOR=#000090][B]Message[/B][/COLOR]("No more [COLOR=#0000ff]To[/COLOR] show !","") 
  [COLOR=#000090][B]Return[/B][/COLOR]() 
  Index = [COLOR=#ff0000]0[/COLOR] 
  OFFSET = [COLOR=#ff0000]0[/COLOR] 
[COLOR=#0000ff]End[/COLOR] 
[COLOR=#0000ff]If[/COLOR] (Index) [COLOR=#0000ff]Then[/COLOR] 
  OFFSET = OFFSET + LIMIT 
[COLOR=#0000ff]End[/COLOR] 
Index = Index + LIMIT

اگر توجه کنید کل کد یه جمع و تفریق ساذه ست، شما با تغییر مقدار OFFSET میتونید تعیین کنید که از رکورد شماره ی چند، به اندازه ی LIMIT در نتیجه ی جستجو لحاظ بشه
یعنی برای دکمه برگشت، کافیه مقدار LIMIT رو از OFFSET کم کنید.

سلام جناب nevercom عزیز بسیار ممنون از راهنماییتون.

بنده طبق اونچه شما گفته بودین پیش رفتم و اطلاعات رو به عقب هم نمایش میداد ولی یه مشکل دیگه پیش اومد اونم این که بعد دوباره که می خوایم اطلاعاتو رو به جلو نشون بدیم پیغام خطا میده

جسارت نباشه جناب nevercom عزیز ،اگه لطف کنین دوباره به فایل پیوستی که کردم نگاه کنین و بگین کجاهاشو باید تغییر بدم یک دنیا ممنونتون میشم
 

پیوست ها

  • 123.rar
    696.4 کیلوبایت · بازدیدها: 9

جدیدترین ارسال ها

بالا