تمامی مشکلات با پلاگین sqlite

For.sajjad

Member
از اونجایی که پلاگین sqlite مهمترین پلاگین mmb (از نظر من و از نظر بسیاری از mmb کاران) هستش تصمیم گرفتم تو یک تاپیک تمام مشکلات خودم و دیگران که در تاپیک های پراکنده روش بحث شده را جمع کنم ( البته با اجازه آقا سامان و silver) امیدوارم که با عنایات دوستان بتونیم مشکل تمامی دوستان (به خصوص خودم) را حل کنیم .
برای شروع این سوال مطرح میشه که چرا در برخی از رایانه ها موقع کار با پلاگینsqlite این ارور نمایش داده می شه ؟
unable to open data base
( آخر خودم هم دلیلشو نفهمیدم )
 

evil_gates

اين نيز بگذرد ...
دوست عزيز
اول ورودتون رو به انجمن تبريك ميگم.
و ديگه اينكه راجع به پلاگين SQLite مباحث زيادي مطرح شده نكات آموزشي توسط اساتيد و رفع اشكالهايي هم وجود داره (اگر كمي جستجو شود)

اما در مورد سوالتون:
در زمان شروع و فراخواني برنامه، پلاگين SQLite ، با فرمان OpenSQLDB سعي در باز كردن ديتابيس از مسير تعيين شده داره و اگه اين آدرس صحيح نباشه مقدار بازگشتي اين فرمان به پلاگين 0 خواهد بود.

با يك شرط مقدار بازگشتي رو بررسي ميشه و در صورتي كه مقدار صفر باشه پيغام unable to open database نمايش داده ميشه.

راه حل:
مسير ديتابيس رو اصلاح كنيد.
در صورتي كه از مسيرهاي وابسته مثل SrcDir و ... استفاده ميكنيد يا در Designer Setting گرينه Run External player تون رو فعال و تنظيم كنيد يا از برنامه خروجي exe بگيريد و برنامه رو اجرا و تست كنيد

موفق باشيد.
 

For.sajjad

Member
خوب ممنون از توجهتون دیگه داشتم نا امید می شدم چون بسیاری از تازه وارده (و خودم) این مشکل رو داشتن این بحث رو مطرح کردم البته هدف اصلی این تاپیک بررسی تمامی مشکل های sqlite هستش همین الان می خواستم پاسخ اون سوال رو بفرستم که شما پاسخ دادید و سوال بعدی اینکه آیا تو سورس دیکشنری پایگاه داده موجود هست چون من هرچی گشتم در فایل دانلود شده فایل دیتابیس رو که با نام Database.DB در خود سورس معرفی شده را ندیدم
 

evil_gates

اين نيز بگذرد ...
آخرین ویرایش:

peyman136

کاربر متخصص مولتی مدیا بیلدر
بزودی مشکلاتی از قبیل کد نویسی های عمومی برای کاربران تازه کار و ارتباط بدون مشکل با دیتا بیس های فارسی برای MMB که بخاطر رفتار خاصش تا حالا مشکلات زیادی رو برای کاربرای MMB ایجاد کرده حل میشه با برنامه : P_Sqlite Browser
فعلا دوتا عکس براتون آماده کردم که میذارم و بزودی برنامه کامل میشه و نسخه کاملش رو با توضیحات کامل اینجا میذارم (تا الان حدود 80 درصد کار انجام شده) البته این عکس ها و عکس های دیگه برای هم فکری در اختیار بعضی از دوستان توی انجمن گذاشته شده
تمام حقوق کار محفوظ هستش​

عکس اول نمایش ساختار دیتا بیس :

[MIUC]01200295516[/MIUC]


عکس دوم اسکریپت نویسی برای MMB (توی این قسمت یک سری تغییرات داده شده که توی عکس نیست البته اینترفیس تغییری نکرده )

[MIUC]01200295673[/MIUC]

برای مشاهده عکس بزرگ روی عکس ها کلیک کنید



موفق باشید:rose:
 
آخرین ویرایش:

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
کد:
[FONT=Courier New][SIZE=2][COLOR=#009000] **First of all we need to inilialized SQLite engine.[/COLOR][/SIZE][/FONT]
[FONT=Courier New][SIZE=2] [COLOR=#000090][B]PluginRun[/B][/COLOR]("PlugIn","SQLiteInit") [/SIZE][/FONT]
[FONT=Courier New][SIZE=2] [COLOR=#000090][B]PluginGet[/B][/COLOR]("PlugIn","IsInitialized") [/SIZE][/FONT]
[FONT=Courier New][SIZE=2] [COLOR=#0000ff]If[/COLOR] (IsInitialized = [COLOR=#ff0000]1[/COLOR]) [COLOR=#0000ff]Then[/COLOR] [/SIZE][/FONT]
[FONT=Courier New][SIZE=2]   [COLOR=#009000]/*We tell the plug-in about our database path. [/COLOR][/SIZE][/FONT]
[FONT=Courier New][SIZE=2][COLOR=#009000]   Please note that database file is embedded. Therefor [/COLOR][/SIZE][/FONT]
[FONT=Courier New][SIZE=2][COLOR=#009000]   changes take place only on runtime and this means [/COLOR][/SIZE][/FONT]
[FONT=Courier New][SIZE=2][COLOR=#009000]   updates are temparory. [COLOR=#0000ff]if[/COLOR] you want permanet update [/COLOR][/SIZE][/FONT]
[FONT=Courier New][SIZE=2][COLOR=#009000]   [COLOR=#0000ff]Then[/COLOR] you have [COLOR=#0000ff]To[/COLOR] make your database external. [/COLOR][/SIZE][/FONT]
[FONT=Courier New][SIZE=2][COLOR=#009000]   */[/COLOR] [/SIZE][/FONT]
[FONT=Courier New][SIZE=2]   DBPath$ = [COLOR=#800000]'<Embedded>\MyAddressBookDB.db'[/COLOR] [/SIZE][/FONT]
[FONT=Courier New][SIZE=2]   [COLOR=#000090][B]PluginSet[/B][/COLOR]("PlugIn","DBPath$") [/SIZE][/FONT]
[FONT=Courier New][SIZE=2]   [COLOR=#000090][B]PluginRun[/B][/COLOR]("PlugIn","GetDBFileName") [/SIZE][/FONT]
[FONT=Courier New][SIZE=2]   [COLOR=#000090][B]PluginRun[/B][/COLOR]("PlugIn","OpenSQLDB") [/SIZE][/FONT]
[FONT=Courier New][SIZE=2]   [COLOR=#000090][B]PluginGet[/B][/COLOR]("PlugIn","IsOpened") [/SIZE][/FONT]
[FONT=Courier New][SIZE=2]   [COLOR=#0000ff]If[/COLOR] (IsOpened = [COLOR=#ff0000]0[/COLOR]) [COLOR=#0000ff]Then[/COLOR] [/SIZE][/FONT]
[FONT=Courier New][SIZE=2]     [COLOR=#000090][B]Message[/B][/COLOR]("Unable [COLOR=#0000ff]To[/COLOR] open database.","") [/SIZE][/FONT]
[FONT=Courier New][SIZE=2]     [COLOR=#000090][B]Return[/B][/COLOR]() [/SIZE][/FONT]
[FONT=Courier New][SIZE=2]   [COLOR=#0000ff]Else[/COLOR] [/SIZE][/FONT]
[FONT=Courier New][SIZE=2]     [COLOR=#009000]**Here we like to get our database size to let users know.[/COLOR] [/SIZE][/FONT]
[FONT=Courier New][SIZE=2]     [COLOR=#009000]**Return value is in bytes.[/COLOR] [/SIZE][/FONT]
[FONT=Courier New][SIZE=2]     [COLOR=#000090][B]PluginRun[/B][/COLOR]("PlugIn","DBFileSize") [/SIZE][/FONT]
[FONT=Courier New][SIZE=2]     [COLOR=#000090][B]PluginGet[/B][/COLOR]("PlugIn","DBSize") [/SIZE][/FONT]
[FONT=Courier New][SIZE=2]     [COLOR=#000090][B]DisplayValue[/B][/COLOR]("DatabaseSize","DBSize") [/SIZE][/FONT]
[FONT=Courier New][SIZE=2]     [COLOR=#009000]** If everything was OK, then go to next step.[/COLOR] [/SIZE][/FONT]
[FONT=Courier New][SIZE=2]     [COLOR=#000090][B]RunScript[/B][/COLOR]("ReadFirstRow") [/SIZE][/FONT]
[FONT=Courier New][SIZE=2]   [COLOR=#0000ff]End[/COLOR] [/SIZE][/FONT]
[FONT=Courier New][SIZE=2] [COLOR=#0000ff]Else[/COLOR] [/SIZE][/FONT]
[FONT=Courier New][SIZE=2]   [COLOR=#000090][B]Message[/B][/COLOR]("Unable [COLOR=#0000ff]To[/COLOR] initialize SQLite engine.","") [/SIZE][/FONT]
[FONT=Courier New][SIZE=2]   [COLOR=#000090][B]Return[/B][/COLOR]() [/SIZE][/FONT]
[FONT=Courier New][SIZE=2] [COLOR=#0000ff]End
[/COLOR][/SIZE][/FONT]
روال راه اندازی پلاگین به این سبک هست
اول توسط دستور SQLiteInit پلاگین رو راه اندازی میکنید و مقدار برگشتی رو در متغیر IsInitialized ذخیره میکنیم، اگر مقدار این متغیر مقداری غیر صفر باشه، معنیش این هست که پلاگین به درستی راه اندازی شده.
حالا ما باید آدرس دیتابیس رو به پلاگین بدیم تا پلاگین دیتابیس رو برای عملیات بعدی برای ما باز کنه، اینکار توسط کد زیر انجام میشه:

کد:
[FONT=Courier New][SIZE=2]DBPath$ = [COLOR=#800000]'<Embedded>\MyAddressBookDB.db'[/COLOR] [/SIZE][/FONT]
[FONT=Courier New][SIZE=2][COLOR=#000090][B]PluginSet[/B][/COLOR]("PlugIn","DBPath$") [/SIZE][/FONT]
[FONT=Courier New][SIZE=2][COLOR=#000090][B]PluginRun[/B][/COLOR]("PlugIn","GetDBFileName") [/SIZE][/FONT]
[FONT=Courier New][SIZE=2][COLOR=#000090][B]PluginRun[/B][/COLOR]("PlugIn","OpenSQLDB")[/SIZE][/FONT]
بعد توسط دستور ("PluginGet("PlugIn","IsOpened مقدار برگشتی از تابع OpenSQLDB دریافت میکنیم، اگر این مقدار، مقداری غیرصفر باشه یعنی دیتابیس بدرستی باز شده، حالا دیتابیس آماده هست که عملیات موردنظر روی اون انجام بشه و بعد از این میشه دستورات دیگه رو اجرا کرد

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

از پیمان عزیز هم خیلی تشکر میکنم، مطمئناً وقتی این برنامه آماده ی ارائه بشه، مشکل خیلی از کاربران در استفاده از این پلاگین و استفاده از دیتابیس در پروژه هاشون رو حل میکنه

موفق و پیروز باشید
 

asirap

Member
peyman136 جان مشتاقانه منتظر معرفی و انتشار برنامه ساخته شده توسط شما هستیم!!!
خیلی عالیه!
بنظرم اگه یه تاپیک جداگانه هم براش ایجاد کنید خیلی خوب میشه....
 

peyman136

کاربر متخصص مولتی مدیا بیلدر
peyman136 جان مشتاقانه منتظر معرفی و انتشار برنامه ساخته شده توسط شما هستیم!!!
خیلی عالیه!
بنظرم اگه یه تاپیک جداگانه هم براش ایجاد کنید خیلی خوب میشه....
سلام
پیش نهاد جالبی هستش اما نمیخوام فعلا محیط انجمن رو شلوغ کنم دوستان اگه پیشنهادی دارن لطف کنن با پیام خصوصی برام ارسال کنند جواب رو میدم و اگه امکان داشته باشه امکاناتی که دوستان ارائه میکنن رو توی پروژه میذارم
درحال حاضر برای سرعت برنامه دارم روی یه روش جدید کار میکنم که اگه جواب بده سرعت مشاهده اطلاعات دیتا بیس هایی که حتی بالای پنجاه هزار تا داده داشته باشه هم تا 100 برابر بالا میره و توی چند ثانیه جواب میده

منتظر نظرات دوستان هستم
 

For.sajjad

Member
سلام ببخشید که دیر اومدم راجع به پاسخ جناب evil_gates باید بگم حق با ایشون هستش دیروز چون کسی پاسخ نداده بود خودم بایه بررسی تونستم جواب سولم و بگیرم البته امروز می خوام یه راجع به امنیت دیتابیس صحبت بشه البته تو یه تاپیک مختصر راجع بهش صحبت شده اما به نتیجه ای نرسیده می خوام بدونم هنوزم راهکاری برای حفاظت از دیتابیس نیست؟ اگه راهکارهایی هست ( هر چند ضعیف) لطفا معرفیش کنید:-?
 

asirap

Member
واو !
من یک نظر دارم
بنظر من یه قسمتی بزارید که بشه بصورت ویژوال توی دیتابیس Browse کرد.....و هر اسم یا داده ای رو که بخوایم وارد کنیم....(مثلا مثل اکسل ! !)
اصلا این چیزی که من میگم امکان داره؟!
 

For.sajjad

Member
واو !
من یک نظر دارم
بنظر من یه قسمتی بزارید که بشه بصورت ویژوال توی دیتابیس Browse کرد.....و هر اسم یا داده ای رو که بخوایم وارد کنیم....(مثلا مثل اکسل ! !)
اصلا این چیزی که من میگم امکان داره؟!

ای کاش به جای پلاگین دیتابیس sql پلاگین دیتابیس اکسس ساخته می شد تا تموم محدودیت های این پلاگین برداشته می شد البته ما قانعیم و باید از سازندگان و توسعه دهندگان این پلاگین تشکر بشه اما فکر کنم زمان آن رسیده که به فکر پایگاه داده اکسس (به صورت پیشرفته و حرفه ای) بود می خواستم بدونم کسی در این راه قدم برداشته یا هنوز باید منتظر باشیم
لطفا به سوال قبل هم پاسخ بدید
 

evil_gates

اين نيز بگذرد ...
می خوام یه راجع به امنیت دیتابیس صحبت بشه البته تو یه تاپیک مختصر راجع بهش صحبت شده اما به نتیجه ای نرسیده می خوام بدونم هنوزم راهکاری برای حفاظت از دیتابیس نیست؟ اگه راهکارهایی هست ( هر چند ضعیف) لطفا معرفیش کنید:-?

دوست عزيز
منظورتون از امنيت و حفاظت ديتابيس چيه؟ ميشه دقيقتر سوالتون رو مطرح كنيد؟

اگه منظور شما امنيت فايلهايي هست كه در mmb استفاده ميشه كه (يكيش همين پلاگين SQLite و ديتابيس‌هاي ايجاد شده توسط اين پلاگين) بايد بگم راجع اين موضوع بارها و بارها تو انجمن بحث شده و بنا به دلايلي كه دوستان چندين بار گفتن نه هنوز راه حل مطمئني براي حفاظت از فايلها توسط mmb وجود نداره.

البته تكنيك ها و ترفندهايي وجود داره كه خب اگه كاربر حرفه اي باشه ميتونه ازشون عبور كنه.

ای کاش به جای پلاگین دیتابیس sql پلاگین دیتابیس اکسس ساخته می شد تا تموم محدودیت های این پلاگین برداشته می شد البته ما قانعیم و باید از سازندگان و توسعه دهندگان این پلاگین تشکر بشه اما فکر کنم زمان آن رسیده که به فکر پایگاه داده اکسس (به صورت پیشرفته و حرفه ای) بود می خواستم بدونم کسی در این راه قدم برداشته یا هنوز باید منتظر باشیم
لطفا به سوال قبل هم پاسخ بدید

مدتي قبل جناب SilverSoft اين كار رو شروع كرده بودن اما اينكه در چه مرحله اي هستن رو از خودشون بپرسيد

موفق باشيد
 

For.sajjad

Member
با سلام خدمت دوستان عزیز و اساتید محترم انجمن
تویه تاپیک متوجه شدم که آقای حامد تکمیل (SilverCover) فرمودند که میشه تو دیتابیس ،فایل و عکس ذخیره کرد ( منظورم دیتابیس Sqlite هست) اما این قسمت رو توضیح ندادند چون به قول خودشون حوصله دردسر نداشتند
امروز می خوام از ایشون و دیگران که این روش خاص رو می دونند خواهش کنم که یه نمونه بذارند تا ما هم یاد بگیریم قول می دم که سوال های الکی در این باره نکنم از دوستان دیگر هم می خوام که سوال های بیهوده پرسیده نشود.
 

evil_gates

اين نيز بگذرد ...
با سلام خدمت دوستان عزیز و اساتید محترم انجمن
تویه تاپیک متوجه شدم که آقای حامد تکمیل (SilverCover) فرمودند که میشه تو دیتابیس ،فایل و عکس ذخیره کرد ( منظورم دیتابیس Sqlite هست) اما این قسمت رو توضیح ندادند چون به قول خودشون حوصله دردسر نداشتند
امروز می خوام از ایشون و دیگران که این روش خاص رو می دونند خواهش کنم که یه نمونه بذارند تا ما هم یاد بگیریم قول می دم که سوال های الکی در این باره نکنم از دوستان دیگر هم می خوام که سوال های بیهوده پرسیده نشود.

دوست عزيز
فكر ميكنم براي اين كار بايد تصويرتون رو Code كنيد. محتوياتش رو به ديتابيس بفرستيد و باز در زمان فراخواني از ديتابيس بتونيد اون Decode كنيد تا تصوير شما قابل اجرا باشه كه اين فرايندي پيچيده و پردردسر داره.
 

silvercover

کاربر متخصص
دوست عزيز
فكر ميكنم براي اين كار بايد تصويرتون رو code كنيد. محتوياتش رو به ديتابيس بفرستيد و باز در زمان فراخواني از ديتابيس بتونيد اون decode كنيد تا تصوير شما قابل اجرا باشه كه اين فرايندي پيچيده و پردردسر داره.

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

Saman

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

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

مرسی عزیز
 

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

بالا