Fa تحلیل پلاگین sql

loo30fer

کاربر متخصص مولتی مدیا بیلدر
با سلام خدمت جناب Silvercover
ببخشید یک مدت مدیدی سوالاتی در مورد پلاگین شما برام پیش اومده بود که میخواستم بپرسم ولی به خودم میگفتم شاید پیش خودتون فکر کنید دوست دارم الکی از پلاگینتون ایراد بگیرم و چهره پلاگینتون رو خراب کنم ولی مطمئن باشین که اینطور نیست

1- راه اندازی پلاگین : آیا این قسمت برای پلاگین اجباری بوده چون اگه فرضا برای تست وجود پلاگین بوده خوب وقتی پلاگین Embedd باشه یا از داخل سی دی استفاده بشه مطمئنا از پلاگین SQL استفاده میشه و کاربر نمیتونه اختلالی رو تو کار ایجاد کنه و اگه اینطوره فکر میکنم اگه استفاده از این پارامتر SQLiteInit اختیاری باشه بهتره چون وقتی از این پارامتر استفاده نشه تو کار پارامتر و عملیات های بعدی دچار مشکل میشیم چون دیگه به درستی کار نمیکنه.

2- ساخت دیتابیس : چرا برای ساخت دیتابیس باید از دو پارامتر GetDBFileName و CreateSQLDB استفاده کنیم چون به نظر من برای ساخت دیتابیس پارامتر CreateSQLDB میتونه اینکار رو بکنه و نیازی به گرفتن اسم دیتابیس ما نباشه , آیا دلیل خاصی وجود داره و باعث میشه از دستورات و متغیر کمتری تو پلاگین استفاده بشه و در نتیجه کمتر تو رم حافظه اشغال بشه ؟

3- ساخت جدول : آیا استفاده از Tell و Not Null و Integer یا CHAR در آخر هریک از قسمت ها مهم بوده که حتما باید از آنها استفاده بشه چون به نظر من میشه تعریف کرد که تو پلاگین به به آخر اسم فیلد ها Not Null اضافه بشه و همینطور برای تعیین CHAR یا Integer بودن فیلدها تنها به اول اسم آنها اکتفا کنیم برای مثال :
کد:
sql_3$ = 'name C'
البته فکر کنم اینکار برای آشنایی بهتر ما با زبان SQL باشد

و همینطور دیگر نیازی به چک کردن وجود خطا با پارامتر DBError در کار نباشه و خود پلاگین در صورت خطا در کار عدد در جواب پارامتر Query بده

4- باز کردن دیتابیس : به نظر من اگه تو پارامتر OpenSQLDB جز چک کردن وضعیت فایل در حالت خواندی و نوشتاری و باز کردن فایل چک کردن دیتابیس بودن فایل هم اضافه بشه خوب باشه چون احتمال انتخاب اشتباه فایل یا انتخاب عمدی یک فایل دیگر توسط کاربر هست و نیازی به چک کردن مجدد ما از روشهای مختلف نباشه

5- آیا در تعداد ساخت جدول , فیلد , ثبت اطلاعات و حجم دیتابیس محدودیتی وجود داره ؟

فکر میکنم تمام سوالاتی رو که لازم میدونستم رو پرسیدم ولی باز اگه شما میبینید مطلبی یا نکته ای در مورد پارامتری یا چیز خاصی از پلاگینتون مونده و نیاز به گفتنه ممنون میشم بگین

به هرحال بابت پلاگین خوبتون ممنون :rose:
 

silvercover

کاربر متخصص
1- راه اندازی پلاگین : آیا این قسمت برای پلاگین اجباری بوده چون اگه فرضا برای تست وجود پلاگین بوده خوب وقتی پلاگین Embedd باشه یا از داخل سی دی استفاده بشه مطمئنا از پلاگین SQL استفاده میشه و کاربر نمیتونه اختلالی رو تو کار ایجاد کنه و اگه اینطوره فکر میکنم اگه استفاده از این پارامتر SQLiteInit اختیاری باشه بهتره چون وقتی از این پارامتر استفاده نشه تو کار پارامتر و عملیات های بعدی دچار مشکل میشیم چون دیگه به درستی کار نمیکنه.

همیشه که برنامه قرار نیست از روی سی دی و یا چیزهایی به صورت Embed شده ارائه بشه. ضمن اینکه اینکار سبب لود کردن بخش هایی از پلاگین در حافظه بر اساس نیاز میشه، نه اینکه همه چیز در حافظه بلا استثنا قرار بگیره و شاید هم ازش استفاده نشه. حال چون عمدتا شروع برنامه بهترین مکان لود اولیه هست در آغاز این مکانیزم درج شده.

2- ساخت دیتابیس : چرا برای ساخت دیتابیس باید از دو پارامتر GetDBFileName و CreateSQLDB استفاده کنیم چون به نظر من برای ساخت دیتابیس پارامتر CreateSQLDB میتونه اینکار رو بکنه و نیازی به گرفتن اسم دیتابیس ما نباشه , آیا دلیل خاصی وجود داره و باعث میشه از دستورات و متغیر کمتری تو پلاگین استفاده بشه و در نتیجه کمتر تو رم حافظه اشغال بشه ؟

اول که یه متغیر یا دوتا اصلا باعث اشغال حافظه نمیشن و اصلا به چشم نمیان. دوم اینکه دلیل این مکانیزم زیر ساخت پلاگین و از طرفی افزایش خوانایی کد و سهولت برای یک بیلدر کار (غیر حرفه ای) هست.

3- ساخت جدول : آیا استفاده از Tell و Not Null و Integer یا CHAR در آخر هریک از قسمت ها مهم بوده که حتما باید از آنها استفاده بشه چون به نظر من میشه تعریف کرد که تو پلاگین به به آخر اسم فیلد ها Not Null اضافه بشه و همینطور برای تعیین CHAR یا Integer بودن فیلدها تنها به اول اسم آنها اکتفا کنیم برای مثال :

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

و همینطور دیگر نیازی به چک کردن وجود خطا با پارامتر DBError در کار نباشه و خود پلاگین در صورت خطا در کار عدد در جواب پارامتر Query بده

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

4- باز کردن دیتابیس : به نظر من اگه تو پارامتر OpenSQLDB جز چک کردن وضعیت فایل در حالت خواندی و نوشتاری و باز کردن فایل چک کردن دیتابیس بودن فایل هم اضافه بشه خوب باشه چون احتمال انتخاب اشتباه فایل یا انتخاب عمدی یک فایل دیگر توسط کاربر هست و نیازی به چک کردن مجدد ما از روشهای مختلف نباشه

همین طور هست. شما توجه نکردی.

5- آیا در تعداد ساخت جدول , فیلد , ثبت اطلاعات و حجم دیتابیس محدودیتی وجود داره ؟

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

loo30fer

کاربر متخصص مولتی مدیا بیلدر
کاملا توضیحات شما درسته و من رو متقاعد کرد.
ولی در مورد اینکه اگر فایل انتخابی کاربر دیتابیس نباشه و پلاگین شما تشخیص میده و من توجهی نکردم چیزی در این مورد نیافتم چون از این کدم هم برای راه اندازی و باز کردن یک فایل اگزه تست کردم باز عدد 1 رو برگردوند میشه بگین اشکال کار از کجاست ؟ :?:
کد:
PluginRun("PlugIn","SQLiteInit")
PluginGet("PlugIn","Initialized")
If (Initialized = 1) Then
  Path$ = 'C:\File.exe'
  PluginSet("PlugIn","Path$")
  PluginRun("PlugIn","OpenSQLDB")
  PluginGet("PlugIn","Opened")
  If (Opened=1) Then
    Message("","open database")
  Else
    Message("","Unable To open database")
  End
Else
  Message("","Error: Unable To initialize SQLite plugin")
End
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
کاملا توضیحات شما درسته و من رو متقاعد کرد.
ولی در مورد اینکه اگر فایل انتخابی کاربر دیتابیس نباشه و پلاگین شما تشخیص میده و من توجهی نکردم چیزی در این مورد نیافتم چون از این کدم هم برای راه اندازی و باز کردن یک فایل اگزه تست کردم باز عدد 1 رو برگردوند میشه بگین اشکال کار از کجاست ؟ :?:
تابع IsDB برای اینکار در دسترس هست:
کد:
[B]IsDB[/B]

This function evaluates if the given database is a valid and  correctly-initialized database.
If Result is not zero then the object is  valid and initialized, otherwise it returns zero. 
It must be called  after OpenSQLDB command. because IsDB needs initialized file resource  handle.
 

loo30fer

کاربر متخصص مولتی مدیا بیلدر
با سلام
چندین سوال هم فکر بنده رو مشغول کرده بود گفتم بپرسم :

- آیا نسخه تجاری برای پلاگین شما وجود داره یعنی با امکانات بیشتر و اینکه اگه من پروژه ای رو بخوام برای دیگری درست کنم که از پلاگین شما هم داخلش استفاده شده که در قبال پروژه هم هزینه ای رو میگیرم آیا من باید این پلاگین رو از شما خریداری کنم یا میتونم از نسخه رایگان استفاده کنم ؟
 

silvercover

کاربر متخصص
- آیا نسخه تجاری برای پلاگین شما وجود داره یعنی با امکانات بیشتر و اینکه اگه من پروژه ای رو بخوام برای دیگری درست کنم که از پلاگین شما هم داخلش استفاده شده آیا من باید این پلاگین رو از شما خریداری کنم یا میتونم از نسخه رایگان استفاده کنم ؟

نسخه تجاری وجود نداره و نه نیازی به خریداری نیست. برای تمامی استفاده ها رایگان هست.
 

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

بالا