آموزش قدم به قدم پلاگين SQLite

evil_gates

اين نيز بگذرد ...
سلام دوستان :rose:

بي مقدمه:

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

با يك الگوريتم مناسب ميتونيد پايه‌هاي يك برنامه بزرگ رو بر دوش بانكهاي اطلاعاتي بزاريد و با خيال راحت اين ارتباط دوطرفه و تعامل رو برقرار و ازش نهايت استفاده رو ببريد.

نرم افزار مالتي‌مديا بيلدر ميتونه به روش‌هاي مختلفي يك بانك اطلاعاتي داشته باشه و با اون ارتباط برقرار كنه.

يكي از پركاربردترين روش‌ها، پلاگين SQLite هست كه توسط جناب silvercover تو اين انجمن ارائه شده. به وسيله اين پلاگين ميشه يك پايگاه داده (بانك اطلاعاتي) مبتني بر زبان SQL راه اندازي كرد.

از اونجايي كه دوستان سوالاتي درباره اين پلاگين و نحوه كار با اون داشتن، ايجاد يك منبع آموزشي فارسي، جامع و البته به زبان آسان و قدم به قدم براي اين پلاگين ضروري به نظر ميرسيد.

به همين خاطر اين مبحث ايجاد شد و اميدواريم كه با كمك هم اين هدف به انجام برسه.

_____________________

فهرست مطالب اين مبحث:

1- آشنايي مقدماتي با پايگاه داده و دستورات SQL صفحه 1 پستهاي 10 - 2

2- آشنايي با دستورات پلاگين‌ها، توابع رشته‌اي و آرايه‌ها صفحات2 و 3 پستهاي 26 - 11

3- ساخت يك ديتابيس جديد توسط پلاگين SQLite صفحه 3 پستهاي 30 - 27

4- ساخت برنامه SQLite DB creator صفحه 4 پستهاي 37 - 31

5- ثبت ركورد در ديتابيس صفحه 4 پست 38

6- جستجو و بازيابي نتايج در ديتابيس صفحات 4 و 5 پستهاي 44 - 39

7 ويرايش اطلاعات در ديتابيس صفحه 5 پست 45

8- حذف اطلاعات در ديتابيس صفحه 5 پست 46

_____________________


درخواستي كه از دوستان داريم اينه كه اجازه بدن فرايند آموزش مرحله به مرحله پيش بره و اين پيوستگي مطالب رو حفظ كنن.

در پايان مباحث آموزشي مثال‌ها و نمونه‌هايي كاربردي ارائه ميشه و سوالات دوستان، بررسي و پاسخ داده خواهد شد.

دوستان قديمي و با تجربه سايت هم جسارت بنده رو نديده بگيرن و كمك و راهنمايي كنن تا نواقص احتمالي هم رفع بشه.

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

evil_gates

اين نيز بگذرد ...
براي شروع بيايد كمي با SQL آشنا بشيم.

SQL مخفف عبارت Structured Query Language يك زبان توسعه يافته براي ارتباط با پايگاه داده است.

درك دستورات اين زبان به خاطر نزديكي زياد آنها به زبان محاوره‌اي انگليسي خيلي ساده است. به طوري كه حتي اگه با قواعد اون هم آشنا نباشيد از طريق ترجمه دستور ميتونيد تا حدود زيادي خروجي دستور رو درك كنيد.

بعنوان مثال:
کد:
SELECT * FROM mybook WHERE name="Ali";
ترجمه لغت به لغت جمله بالا ميشه: انتخاب كن هر چيزي رو از جدول mybook جايي كه نام = Ali باشه.

اين جمله يك دستور به زبان SQL هست كه به برنامه ميگه در فيلد نام جدول mybook پايگاه داده مورد نظر بگرده و ركوردي رو كه موجودي فيلد نام اون با عبارت Ali برابر بود رو برگردونه.

فيلد چيست؟ ركورد چيست؟ منظور از پايگاه داده و جدول چيست؟

فرض كنيد تعداد زيادي كتاب تو كتابخانه شخصي ما وجود داره و قصد داريم اونا رو مرتب و طبقه‌بندي كنيم.

براي شروع ما بخشي از مشخصات يك كتاب رو در جايي يادداشت ميكنيم و بعد سعي ميكنيم يادداشت‌ها رو مرتب كنيم تا در نهايت كتابخانه ما مرتب بشه.

چه بخشي از مشخصات كتاب رو براي مرتب‌سازي لازم داريم؟ بعنوان مثال: شماره كتاب - نام كتاب – نام نويسنده – موضوع كتاب

وقتي در مورد مرحله قبل به نتيجه قطعي رسيديم يك جدول رسم مي‌كنيم و براي جدول تعدادي ستون تعيين ميكنيم.

مثلا ستون اول شماره كتاب – ستون دوم نام كتاب – ستون سوم نام نويسنده و ستون چهارم موضوع كتاب

attachment.php


بعد سطر به سطر اطلاعات موردنظر كتابها رو در ستون‌هاي جدول وارد ميكنيم.

حالا فرض كنيد ما قصد داريم بعضي از كتابها رو به ديگران امانت بديم. براي اينكه بدونيم كتابها رو به چه كسي و با چه شرايطي امانت داديم جدول ديگه‌اي شبيه جدول كتابها رسم ميكنيم و تو ستون‌ها، مشخصات امانت گيرنده و موضوع رو يادداشت ميكنيم.

مثلا ستون اول شماره كتاب – ستون دوم نام كتاب – ستون سوم نام امانت گيرنده – ستون چهارم تاريخ بازگشت – ستون پنجم آدرس يا شماره تماس امانت گيرنده و ...

attachment.php


و بعد سطر به سطر مشخصات هر كتابي كه به امانت داده ميشه رو يادداشت ميكنيم.

حالا ما دوتا جدول داريم كه ارتباط مستقيمي با همديگه و موجودي كتابهاي ما دارن. بر اساس اين جداول ما ميتونيم كتابها رو طبقه‌بندي كنيم و از موجودي و كسري كتابها اطلاع كامل داشته باشيم.

ممكنه براي اينكه بخوايم طبقه‌بندي بهتري انجام بديم جداول ديگه‌اي رو هم طراحي و اطلاعاتي رو توش درج كنيم.

در پايان اين جداول رو تو يك پرونده قرار ميديم و اون پرونده رو تو محل امني نگهداري مي‌كنيم.

خب حالا ما چي داريم؟ يك پايگاه داده (بانك اطلاعاتي).

پرونده، بانك اطلاعات (database – پايگاه داده) ماست. جداول داخل پرونده، جداول (table) بانك اطلاعاتي ما هستن. ستونهاي هر جدول، فيلدها (field) و سطرهاي هر جدول كه حاوي اطلاعات بخصوصي راجع به يك كتاب يا يك امانت گيرنده كتاب هستند هم ركوردهاي (record) بانك اطلاعاتي ما رو تشكيل ميدن.

با توجه به اين توضيحات يكبار ديگه به اين جمله نگاه كنيد:
کد:
SELECT * FROM mybook WHERE name="Ali";

آيا ميتونيد منظور اين دستور رو به طور كامل درك كنيد؟

ساير دستورات SQL هم به همين سادگي قابل درك و اجرا هستن. و البته سعي بر اين هست كه كاربردي‌ترين و اصلي‌ترين دستورات SQL براي برقراري ارتباط با پايگاه داده و پلاگين SQLite و روش استفاده از اون مطرح بشه.
 

پیوست ها

  • p1.jpg
    p1.jpg
    60.9 کیلوبایت · بازدیدها: 2,745
  • p2.jpg
    p2.jpg
    65.9 کیلوبایت · بازدیدها: 2,680
آخرین ویرایش:

evil_gates

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

هر فيلد خصوصياتي داره كه بر اساس اين خصوصيات قادر هست اطلاعات بخصوصي بگيره. مثلا اگه خصوصيت يك فيلد عددي تعيين شده باشه نميشه داخل اين فيلد يك عبارت متني قرارداد.

حالا ميشه از اين پايگاه داده استفاده كرد. به اين معني كه ميشه اطلاعات مورد نظر رو به صورت ركورد به جداول اضافه كرد. ميشه ركوردهاي ثبت شده رو ويرايش يا حذف كرد. ميشه تو اطلاعات ثبت شده جستجو كرد و گزارش‌هاي لازم رو دريافت كرد و ...

هر كدوم از عمليات بالا براي اجرا دستوراتي دارن كه در ادامه آشنا خواهيم شد.


در SQL براي ايجاد يك ديتابيس از دستور CREATE DATABASE استفاده ميشه.

شكل كلي اين دستور به اين صورت هست.
کد:
CREATE DATABASE name;
در قسمت name مي تونيد نامي رو براي ديتابيس تعيين كنيد. نام ديتابيس بايد يك عبارت بهم پيوسته باشه اما مي تونه داراي زير خط ( _ ) هم باشه. مثلا: librarydatabase يا مثلا my_library

كاراكتر ( ; ) در انتهاي جمله نشان دهنده پايان دستور است. گاهي اوقات ممكنه دستورات رو در چند خط بنويسيد اما تا زماني كه از كاراكتر ( ; ) در انتهاي دستور استفاده نكرده باشيد تمامي عبارت‌هاي اين چند خط جزو يك دستور محسوب خواهند شد

با دستور بالا يك ديتابيس خالي ايجاد شده و حالا ميشه جداول رو درون ديتابيس ساخت. براي ساخت جداول بايد ديتابيس مورد نظر رو اجرا و بارگذاري كرد.

دستور USE براي بارگذاري ديتابيس استفاده ميشه.

شكل كلي اين دستور به اين صورت هست.
کد:
USE name;
در قسمت name لازمه نام پايگاه داده خودتون رو وارد كنيد.

براي حذف پايگاه داده هم ميتونيد از دستور DROP DATABASE استفاده كنيد.

شكل كلي اين دستور به اين صورت هست.
کد:
DROP DATABASE name;
در قسمت name ميتونيد نام ديتابيس خودتون رو قرار بديد. دقت كنيد كه با حذف پايگاه داده تمامي جداول و اطلاعات درون آن حذف و غير قابل بازگشت خواهند بود. پس در استفاده از اين دستور دقت كنيد.

در مرحله بعد از ساخت ديتابيس لازمه كه جداول مورد نظر رو ايجاد كنيد.

دستور CREATE TABLE براي اين منظور استفاده ميشه.

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

هر ديتابيس بايد حداقل يك جدول و هر جدول بايد حداقل يك فيلد داشته باشه و در هر جدول بايد حداقل يك فيلد اون خصوصيت كليد اصلي (Primary Key) داشته باشه.

هيچ دو ركوردي در جدول نميتونه وجود داشته باشه كه داده هاي كاملا يكسان با هم داشته باشن.

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

فيلدي كه خصوصيت كليد اصلي براش تعيين شده نميتونه دو تا مقدار مشابه به هم داشته باشه.

مثلا اگه شما تو جدول، فيلدي به نام رديف داشته باشيد و براي رديف خصوصيت كليد اصلي رو تعيين كرده باشيد نميتونيد دو تا ركورد رو تو جدول وارد كنيد كه در فيلد رديف عدد يكسان داشته باشن.

اين مثال رو ببينيد:

attachment.php


تو اين مثال در فيلد رديف دوبار عدد 3 درج شده و اين يعني خطا. ميتونيد بگيد علت خطا چيه؟

شكل كلي دستور CREATE TABLE به اين صورت هست:
کد:
CREATE TABLE name (
	Field1 datatype,
	Field2 datatype,
	Field3 datatype
	);
تو دستور بالا در قسمت name نام جدول مورد نظر رو مي‌نويسيم. بعد كاراكتر پرانتز رو باز ميكنيم تا فيلدهاي جدول رو همراه با خصوصياتش بنويسيم.

تو خطوط بعدي نام فيلد مورد نظر و خصوصيت اون رو تعيين مي كنيم و در پايان هر فيلد كاراكتر ويرگول ( , ) رو درج مي‌كنيم. اين كاراكتر نشان دهنده پايان يك فيلد و خصوصيات اون هست.

در پايان، پرانتز رو بسته و كاراكتر ( ; ) به معني پايان دستور درج مي كنيم.

با ارسال اين دستور درون ديتابيس شما يك جدول با فيلدهاي مورد نظر ايجاد خواهد شد.
 

پیوست ها

  • p3.jpg
    p3.jpg
    26.4 کیلوبایت · بازدیدها: 2,584
آخرین ویرایش:

evil_gates

اين نيز بگذرد ...
موقع ايجاد جداول بايد نام و نوع فيلدها رو تعيين كرد. به طور كلي سه نوع داده اصلي در SQL وجود داره: عددي، تاريخ و زمان و رشته‌اي.

در نوع داده عددي (INTEGER – INT – FLOAT - …) ميشه اعداد صحيح يا اعشاري رو وارد كرد.

در نوع داده تاريخ و زمان ( DATE – TIME - …) ميشه انواع مختلف تاريخ و زمان رو وارد كرد.

در نوع داده رشته‌اي (CHAR – VARCHAR – BLOB - …) ميشه انواع داده هاي متني با طول كاراكترهاي ثابت و متغير رو وارد كرد.

بعضي كلمات كليدي هم وجود داره كه موقع ايجاد يك فيلد استفاده ميشه و خصوصيتي رو براي يك فيلد تعيين ميكنه:

موقع استفاده از NOT NULL همه ركوردهاي جدول در فيلدي كه اين خصوصيت تعيين شده باشه بايد مقداري رو بگيرن. (به اين معني كه فيلدي كه اين خصوصيت رو داشته باشه نميتونه خالي باشه)

عبارت PRIMARY KEY پس از نام يك فيلد بيانگر اينه كه اين فيلد كليد اصلي جدول ماست.

مثال:
کد:
CREATE TABLE mybook (
	id INTEGER PRIMARY KEY NOT NULL,
	name CHAR NOT NULL,
	subject CHAR NOT NULL,
	);

در كد بالا جدولي به نام mybook ايجاد خواهد شد با 3 فيلد. كه شماره كتاب، نام كتاب و موضوع كتاب رو ثبت ميكنه.

فيلد اول به نام id كه نوع داده عددي رو در خودش ذخيره ميكنه و همچنين كليد اصلي جدول هم هست.

فيلد دوم به نام name كه نوع داده متني رو در خودش ذخيره ميكنه.

و فيلد سوم به نام subject كه باز نوع داده متني رو در خودش ذخيره ميكنه.

دقت كنيد كه همه اين فيلدها خاصيت NOT NULL دارن و به اين معناست كه در اين فيلدها بايد مقداري درج بشه.

در اينجا سعي شده كلمات كليدي و انواع داده پركاربرد در SQL مطرح بشه، مطالعه جزئيات بيشتر درباره خصوصيات فيلدهاي جداول SQL رو به خودتون واگذار ميكنيم.
 
آخرین ویرایش:

evil_gates

اين نيز بگذرد ...
تا اينجا يادگرفتيم چطور يك ديتابيس بسازيم. چطور يك ديتابيس رو بارگذاري كنيم و چطور در يك ديتابيس جدول مورد نظر با فيلدهاي مشخصي رو ايجاد كنيم.

در مرحله بعد نوبت به ورود اطلاعات به جدول ميرسه.

اطلاعات ما با استفاده از دستور INSERT INTO به صورت ركورد به جدول اضافه خواهند شد

مثال قبلي رو در نظر بگيريد. جدولي به نام mybook كه سه تا فيلد id و name و subject داشت.

با دستور INSERT INTO ميشه اطلاعات مربوط به يك كتاب رو به صورت يك ركورد در جدول مورد نظر ثبت كرد.

شكل كلي اين دستور به اين صورت هست:
کد:
INSERT INTO name (Field 1, Field 2 , Field 3, …) VALUES (value 1, value 2, value 3, …);
يا
کد:
INSERT INTO name SET
	Field 1 = value 1 ,
	Field 2 = value 2 ,
	Field 3 = value 3 ,
	… ;

تو دستور بالا در قسمت name نام جدول مورد نظر رو مينويسيم. در قسمت Field 1 , 2 , 3 نام فيلدهاي جدول و در قسمت value 1 , 2 , 3 مقادير فيلدها رو به ترتيب مينويسيم.

تو دستور بالا مقدار value 1 به Field 1 ، مقدار value 2 به Field 2 و ... نسبت داده ميشه.

همچنين براي جداسازي فيلدها و مقادير اونها از كاراكتر ويرگول ( , ) بعد از هر نام فيلد و مقدار فيلد استفاده شده. و در پايان دستور از كاراكتر ( ; ) استفاده ميشه.

مثال:
کد:
INSERT INTO mybook (id, name , subject) VALUES (1,"sql","learning sql" );
با دستور بالا يك ركورد به جدول mybook اضافه ميشه كه در فيلد id عدد 1 ، در فيلد name كه نام كتاب هست عبارت sql و در فيلد subject كه موضوع كتاب هست عبارت learning sql درج خواهد شد.

attachment.php


به همين ترتيب ميتونيم ركوردهاي ديگه رو به جدول مورد نظر اضافه كنيم.

تو دستور بالا دقت كنيد كه عبارت‌هاي رشته‌اي درون يك جفت دابل كوتيشن ( " " ) قرار گرفتن مثل "sql" و "learning sql"

براي ثبت ركورد در جدول mybook به اين صورت هم ميشه عمل كرد:
کد:
INSERT INTO mybook SET
	id = 1 ,
	name = "sql" ,
	subject = "learning sql" ;
 

پیوست ها

  • p4.jpg
    p4.jpg
    22.5 کیلوبایت · بازدیدها: 2,557
آخرین ویرایش:

evil_gates

اين نيز بگذرد ...
خب نوبت ميرسه به جستجو و بازيابي داده ها در جدول

فرض كنيد جدولي به نام tell با 3 فيلد (name، id و phone) داريم و تعدادي ركورد تو اين جدول ثبت شده.

attachment.php


قصد داريم تو اين جدول به دنبال ركوردي بگرديم و نتيجه رو نمايش بديم.

دستور SELECT براي اين منظور استفاده ميشه.

شكل كلي دستور به اينصورت هست:
کد:
SELECT (field name/s) FROM tablename;
در قسمت (field name/s) نام فيلد (فيلدهاي) مورد نظر و در tablename نام جدول مورد نظر رو وارد ميكنيم.

مثال بالا رو در نظر بگيريد:
کد:
SELECT name FROM  tell;
نتيجه دستور بالا انتخاب تمامي ركوردهاي فيلد name جدول tell خواهد بود.

attachment.php


يا مثلا:
کد:
SELECT name,phone FROM tell;
نتيجه اين دستور انتخاب تمامي ركوردهاي فيلد name و فيلد phone جدول tell خواهد بود.

attachment.php


تو دستور SELECT اگه به جاي نام فيلد مورد نظر از كاراكتر ( * ) استفاده بشه يعني:
کد:
SELECT * FROM tablename;
تمامي فيلدهاي ركوردهاي جدول بدست مياد.

مثال:
کد:
SELECT * FROM tell;
با اجراي اين دستور تمامي فيلدهاي ركوردهاي جدول tell بدست مياد.

attachment.php
 

پیوست ها

  • p5.jpg
    p5.jpg
    42.9 کیلوبایت · بازدیدها: 2,525
  • p5-1.jpg
    p5-1.jpg
    43.9 کیلوبایت · بازدیدها: 2,510
  • p5-2.jpg
    p5-2.jpg
    43 کیلوبایت · بازدیدها: 2,483
  • p5-3.jpg
    p5-3.jpg
    42.6 کیلوبایت · بازدیدها: 2,492
آخرین ویرایش:

evil_gates

اين نيز بگذرد ...
دستور SELECT رو ميشه به كمك شرط محدود به يك موقعيت خاص كرد و نتيجه دلخواه رو بدست آورد. براي ايجاد شرط در دستور SELECT از عبارت WHERE استفاده ميشه:

مثال:
کد:
SELECT * FROM tell WHERE name="Reza";
تو دستور بالا ركوردي كه مقدار فيلد name اون برابر با عبارت Reza باشه (يعني ركورد شماره 2) بدست مياد.

attachment.php


يك مثال ديگه:
کد:
SELECT name,phone FROM tell WHERE phone = 065431548212;
تو دستور بالا شرط (phone = 065431548212) بررسي و فقط مقدار فيلد name و phone از جدول tell‌ كه برابر شرط هست (يعني فيلد name و phone ركورد شماره 5) بدست مياد.

attachment.php


در قسمت شرط جستجو ميشه از عملگرهاي = ، > ، < ، >= ، <= يا <> استفاده كرد.

براي تعميم بازه جستجو در دستور SELECT از كلمات كليدي مانند NOT – OR – AND استفاده كرد.

مثال:
کد:
SELECT * FROM tell WHERE name="Ali" OR id=2;
تو اين دستور ركوردي كه فيلد name برابر عبارت Ali باشه يا فيلد id برابر عدد 2 باشه بدست مياد.

attachment.php


براي جستجو كلمات مشابه در شرط ميشه از LIKE استفاده كرد.

به اين مثال توجه كنيد:
کد:
SELECT * FROM tell WHERE name LIKE "Ali";
تو اين دستور ركوردي كه فيلد name اون شبيه به عبارت Ali باشه بدست مياد.

حالا اين مثال رو ببينيد:
کد:
SELECT * FROM tell WHERE name LIKE "%Ali";
تو اين دستور قبل از عبارت Ali يك كاراكتر ( % ) اضافه شده. وجود اين كاراكتر در شرط باعث ميشه كه بازه جستجو گسترش پيدا كنه. به اين معني كه هر ركوردي كه تو جدول آخرش به Ali ختم ميشه انتخاب ميشه.

خروجي اين دستور دوتا ركورد خواهد بود. ركورد شماره 1 و ركورد شماره 4

attachment.php


از كاراكتر ( % ) قبل يا بعد از عبارت مورد نظر براي شرط استفاده ميشه تا به اين وسيله كلمات مشابه هم انتخاب بشه.

به اين مثال دقت كنيد:
کد:
SELECT * FROM tell WHERE name LIKE "%m%";
خروجي اين دستور سه تا ركورد خواهد بود. ركورد شماره 3 و 4 و 5 . تو فيلد name اين سه تا ركورد كاراكتر m وجود داره. Mohammad – Amirali - Komeyl

attachment.php


براي بازيابي داده ها به كمك دستور SELECT از كلمات كليدي و توابع رياضي ديگه اي هم ميشه استفاده كرد كه مطالعه بيشتر در اين زمينه رو به خودتون واگذار ميكنيم.
 

پیوست ها

  • 910.jpg
    910.jpg
    45.7 کیلوبایت · بازدیدها: 2,412
  • p9.jpg
    p9.jpg
    46.7 کیلوبایت · بازدیدها: 2,427
  • p8.jpg
    p8.jpg
    44.6 کیلوبایت · بازدیدها: 2,458
  • p6.jpg
    p6.jpg
    45.3 کیلوبایت · بازدیدها: 2,456
  • p7.jpg
    p7.jpg
    45.5 کیلوبایت · بازدیدها: 2,449
آخرین ویرایش:

evil_gates

اين نيز بگذرد ...
ويرايش و بروزرساني داده‌هاي پايگاه داده

ممكنه كه قصد داشته باشيد اطلاعاتي رو در يك ركورد ويرايش يا اطلاعات جديدتري رو جايگزين كنيد. مثال قبلي رو در نظر بگيريد. فرض كنيد شماره تلفن يكي از افرادي كه در جدول tell درج شده اشتباه هست و لازمه كه تغيير كنه.

در اين مواقع از دستور UPDATE استفاده ميشه.

شكل كلي اين دستور به اين صورت هست:
کد:
UPDATE tablename SET
	Field 1 = value 1,
	Field 2 = value 2,
	Field 3 = value 3,
	…
WHERE your condition ;
تو دستور بالا به جاي tablename نام جدول مورد نظر، به جاي Field 1 – 2 – 3 و ... نام فيلدهاي جدول، به جاي value 1 – 2 – 3 و ... مقادير مورد نظر و در قسمت your condition شرط مورد نظر رو براي دستور مينويسيم.

مثال:
کد:
UPDATE tell SET
	name = "Alireza"
	phone = 5435732168
WHERE id = 1;
تو مثال بالا بر اساس شرط مورد نظر كه id=1 ركورد شماره 1 جدول tell ويرايش خواهد شد. به اين صورت كه در فيلد name عبارت Alireza و در فيلد phone عدد 5435732168 درج خواهد شد.
attachment.php
 

پیوست ها

  • p11.jpg
    p11.jpg
    75.6 کیلوبایت · بازدیدها: 2,376
آخرین ویرایش:

evil_gates

اين نيز بگذرد ...
حذف داده‌ها از پايگاه داده

براي حذف يك ركورد از جدول مورد نظر از دستور DELETE استفاده ميشه.

شكل كلي اين دستور به اين صورت هست:
کد:
DELETE FROM tablename WHERE your condition ;
تو دستور بالا به جاي tablename نام جدول موردنظر و به جاي your condition شرط موردنظر رو وارد ميكنيم.

مثال:
کد:
DELETE FROM tell WHERE id = 3;
تو دستور بالا ركورد شماره 3 جدول tell حذف خواهد شد.

attachment.php


دستور DELETE اگه به اين صورت استفاده بشه:
کد:
DELETE FROM tablename ;
تمامي ركوردهاي جدول حذف خواهند شد.

اگه قصد داشته باشيد يك جدول رو به طور كامل از پايگاه داده حذف كنيد از دستور DROP TABLE استفاده كنيد:
کد:
DROP TABLE tablename ;
فرق دوتا دستور بالا در اين هست كه اگه با دستور DELETE FROM tablename تمام ركوردهاي جدول مورد نظر رو حذف كنيم. باز هم جدول ما باقي هست و ميشه به كمك INSERT INTO ركوردهاي جديدي به جدول اضافه كرد.

اما اگه از DROP TABLE استفاده بشه جدول به طور كامل از پايگاه داده حذف خواهد شد و براي استفاده مجدد لازمه به كمك CREATE TABLE ابتدا جدول جديدي ايجاد و سپس ازش استفاده كرد.

به دليل غير بازگشت بودن اطلاعاتي كه حذف ميشن در استفاده از اين دستورات با دقت عمل كنيد.
 

پیوست ها

  • p12.jpg
    p12.jpg
    37.6 کیلوبایت · بازدیدها: 2,372
آخرین ویرایش:

evil_gates

اين نيز بگذرد ...
ايجاد تغييرات در ساختار جدول

ممكن هست قصد داشته باشيد ساختار جدولي كه قبلا ايجاد كرديد رو تغيير بديد. مثلا نام يك فيلد رو تغيير بديد يا يك فيلد به جدول اضافه يا حذف كنيد. يا مثلا نوع داده يك فيلد رو از عددي به متني تغيير بديد يا كليد اصلي يك جدول رو از يك فيلد به فيلد ديگه اي منتقل كنيد و ...

انجام هرگونه تغيير در ساختار جدول به كمك دستور ALTER TABLE امكان پذيره.

شكل كلي اين دستور به اين صورت هست:
کد:
ALTER TABLE tablename alteration ;
در قسمت tablename نام جدول موردنظر و در قسمت alteration تغيير مورد نظر را درج مي كنيم.

دستور ALTER TABLE با پارامترهاي زير تغييرات لازم رو در ساختار جدول ايجاد ميكنه.

کد:
ADD field name and description [first/after  field]
با پارامتر ADD ميشه در محل مورد نظر فيلد جديدي به جدول اضافه كرد. به جاي عبارت field name and description نام و نوع ستون مورد نظر و به جاي first/after field محل فيلد مورد نظر رو وارد كنيد.

کد:
MODIFY field description
با پارامتر MODIFY ميشه خصوصيت فيلد مورد نظر در جدول رو ويرايش كرد. به جاي عبارت field description نام فيلد و خصوصيت مورد نظر رو وارد كنيد.

کد:
DROP filed
با پارامتر DROP ميشه فيلدي رو از جدول مورد نظر حذف كرد. به جاي field نام فيلد مورد نظر رو وارد كنيد.

پارامترهاي ديگه‌اي هم در دستور ALTER TABLE قابل استفاده هستند كه مطالعه بيشتر در اين زمينه رو به خودتون واگذار ميكنيم.

تا اينجا سعي بر اين بوده كه با كاربردي‌ترين و اصلي‌ترين دستورات SQL آشنا بشيم. البته كار با پايگاه داده مبتني بر زبان SQL جزئيات زيادي داره كه اگه مايل باشيد ميتونيد كتابهايي كه در اين زمينه وجود دارن رو مطالعه كنيد.

هدف اصلي ما راه اندازي يك پايگاه داده مبتني بر پلاگين SQLite در محيط mmb هست. بنابراين بايد فرامين مورد نظر براي ساختن ويرايش و ارتباط با يك پايگاه داده رو به اين پلاگين ارسال و نتايج رو دريافت كنيم.

براي اينكار لازمه كه فراميني كه تا الان يادگرفتيم رو به كمك توابع رشته‌اي و دستورات مربوط به شي پلاگين به SQLite ارسال و نتايج بازگشتي رو به كمك ليست باكسها، رشته‌ها، آرايه‌ها و... بررسي و نمايش بديم.

در ادامه اصول كار با توابع رشته‌اي، دستورات شي پلاگين و ساير دستورات و توابع مورد نياز بررسي خواهند شد

ادامه دارد...
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
آشنایی با پلاگین

تا اینجای بحث در مورد دستورات SQL بود که اهمیت زیادی در برقراری ارتباط با دیتابیس از طریق پلاگین دارن.

اما برای اینکه یک پروژه ی مبتنی بر دیتابیس رو بسازید، نیازهای دیگه ای هم دارید، همونطور که میدونید برای ارتباط با بانک اطلاعاتی از پلاگین SQLite (در این آموزش) استفاده میشه؛ پس باید از روش ارتباط با پلاگین در MMB آگاهی داشته باشید.

پس از ایجاد ارتباط با پلاگین، از طریق کدهای SQL که قبلاً توضیح داده شد دستورات رو پلاگین ارسال میکنیم تا برروی دیتابیس اعمال بشن، مقادیر برگشتی از پلاگین بصورت متغیرهای رشته و آرایه ای از داده ها هستند؛ پس نیاز هست تا با دستورات مربوط به متغیرهای رشته ای و بخصوص آرایه ها نیز آشنا بشید.



در ادامه ی این مبحث سعی میشه که به مسائل مربوط به پلاگینها و کار با متغیرهای رشته و آرایه ها در MMB پرداخته بشه.

پلاگینها:

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

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

نحوه ی ارتباط با پلاگین در MMB:

برای اینکار سه دستور در MMB وجود داره:

  • ("","")PluginSet
  • ("","")PluginRun
  • ("","")PluginGet
از دستور ("","")PluginSet برای ارسال مقادیر و پارامترها به پلاگین استفاده میشه، اگر تابعی برای اجرا نیاز به پارامترهای ورودی داشته باشه با استفاده از این دستور پارامترها به پلاگین ارسال میشن
در بخش اول این دستور نام شئ پلاگین و در بخش دوم این دستور نام متغیری که حاوی پارامتر ارسالی هست نوشته میشه
نکته: این متغیرها بنابر راهنمای هر تابع، میتونن از نوع متغیر عددی یا رشته ای باشند.
بعضی از توابع در پلاگینها برای اجرای صحیح به بیشتر از یک پارامتر نیاز دارن برای این منظور به تعداد موردنیاز این دستور رو تکرار میکنیم و پارامترها رو به پلاگین میفرستیم.


از دستور ("","")PluginRun برای اجرای تابع موردنظر در پلاگین استفاده میشه، درصورتی که یک تابع از پلاگین برای اجرا نیاز به پارامتر داشته باشه، اول پارامترها توسط دستور ("","")PluginSet به پلاگین ارسال میشن و بعد این دستور باید اجرا بشه.
بخش اول این دستور نام شئ پلاگین و در بخش دوم این دستور نام تابعی که باید اجرا بشه نوشته میشه.


از دستور ("","")PluginGet برای دریافت اطلاعات بازگشتی از پلاگین پس از اجرای توابع استفاده میشه، توابع میتونن مقدار خروجی نداشته باشن، و یا مقدار خروجی از نوع عدد داشته باشن که در بخش دوم این دستور باید نام یک متغیر عددی نوشته بشه، یا خروجی اونها میتونه کاراکتر باشه که در اینصورت در بخش دوم این دستور باید از یک متغیر رشته ای استفاده بشه.
برخی از توابع میتونن بیشتر از یک خروجی داشته باشن که در اینصورت به تعداد مورد نیاز این دستور رو تکرار میکنیم.

اجازه بدید توضیحات رو با یک مثال ساده تکمیل کنم:
فرض کنید یک پلاگین داریم که دارای یک تابع هست که تاریخ تولد شما رو بصورت یک متغیر رشته ای از شما میگیره، و سن شما رو به عدد و به حروف به شما میده، برای اجرای این تابع میتونید از این کد استفاده کنید:
کد:
[FONT=Courier New][SIZE=2]BirthDate$ = [COLOR=#800000]'19880919'[/COLOR] 
[COLOR=#000090][B]PluginSet[/B][/COLOR]("SamplePlugin","BirthDate$") 
[COLOR=#000090][B]PluginRun[/B][/COLOR]("SamplePlugin","CalculateAge") 
[COLOR=#000090][B]PluginGet[/B][/COLOR]("SamplePlugin","YourAgeNum") 
[COLOR=#000090][B]PluginGet[/B][/COLOR]("SamplePlugin","YourAgeString$")
[/SIZE][/FONT]
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
آرایه ها

آرایه ها: آرایه ها نوع خاصی از متغیر ها هستن که میتونن چند آیتم رو در خود نگه دارن، در واقع آرایه ها مثل یک بسته عمل میکنن که حاوی چندین داده از یک نوع هست و میشه با ذکر شماره ی داده، به اون داده دسترسی یافت
آرایه ها مثل حمل چند بسته در یک کامیون هستن،

attachment.php


در این کامیون میتونید ببینید که تمام محموله حاوی بسته های مشابهی هست (همونطور که نوشته ی روی در کامیون نشون میده) و هر بسته دارای شماره ی مخصوص به خودش هست
این همون دلیلی هست که ما از آرایه ها استفاده میکنیم، آرایه ها به برنامه نویس کمک میکنن تا داده هایی از یک نوع رو در یک محموله (متغیر) جای بده.
جای دادن بسته هایی از یک نوع در یک کامیون بسیار راحت تر از درخواست چند کامیون با نامهای مختلفه !

در MMB نیز از آرایه ها استفاده میکنیم، به این آرایه ها آرایه های تک بعدی گفته میشه، چونکه داده ها در این آرایه ها بصورت "خطی" ذخیره میشن
آرایه ها در MMB گروهی از متغیرها تحت یک نام هستن، به همراه آدرس هایی، که ما به کمک این آدرس ها میتونیم به هر آیتم در آرایه دسترسی داشته باشیم.
در زبان MMB آرایه ها هم مثل متغیرها استفاده میشن

attachment.php


در سمت چپ جدول متغیرها قرار دارن و در سمت راست جدول، همون متغیرها، اما به فرم آرایه؛ نوع پیشرفته ی متغیر که میتونیم اطلاعات بیشتری رو در اون ذخیره کنیم.

اجازه بدید یک آرایه رو بررسی کنیم:
کد:
[COLOR=DarkOrange][B]user_counter[/B][/COLOR][COLOR=Blue][[/COLOR][COLOR=Red]n[/COLOR][COLOR=Blue]][/COLOR]
این آرایه از اجزای زیر تشکیل شده :

  1. نام آرایه: user_counter: نام آرایه که می تونه از نوع متغیر عددی یا رشته ای (با علامت $) باشه.
  2. دو کروشه (Square Brackets) : [] : اندیس آرایه در بین این دو کروشه محصور میشه
  3. اندیس آیتم: (n) : عدد یا متغیری عددی که به شماره ی آیتم مورد نظر در آن آرایه اشاره میکنه.
چند مثال از آرایه ها:
آرایه هایی که اندیس شون (آدرس آیتم در آرایه) از نوع عدد هست:
کد:
[FONT=Courier New][SIZE=2]a[1]
 twain$[72]
 my_finger[534]
 tool$[102][/SIZE][/FONT]

آرایه هایی که اندیس شون از نوع متغیر عددی هست:

کد:
[FONT=Courier New][SIZE=2]a[i]
 twain$[chapter_no]
 my_finger[finger_number]
 tool$[tool_drawer][/SIZE][/FONT]
آرایه ها به طور گسترده ای در حلقه ها مورد استفاده قرار میگیرن، که استفاده از متغیرهای عددی در اندیس آرایه راهکار مناسبی هست
به مثالی از آرایه توجه کنید:
کد:
[FONT=Courier New][SIZE=2][COLOR=#0000ff]For[/COLOR] i = [COLOR=#ff0000]1[/COLOR] [COLOR=#0000ff]To[/COLOR] [COLOR=#ff0000]6[/COLOR] 
  Array[i] = i * i 
[COLOR=#0000ff]Next[/COLOR] i[/SIZE][/FONT]
با اجرای این حلقه یک آرایه ی 6 عضوی ایجاد خواهد شد که عناصر آن به شرح زیر هست:

  1. Array[1] = 1
  2. Array[2] = 4
  3. Array[3] = 9
  4. Array[4] = 16
  5. Array[5] = 25
  6. Array[6] = 36
که در اون هر عنصر از آرایه برابر i به توان 2 هست

این نوشته توضیح مختصری بود بر آرایه ها در MMB، البته نوع دیگری از آرایه ها در MMB وجود دارن که به اونها Delimited String هم گفته میشه که در نوشته های بعدی به توضیح بیشتر این موضوع خواهم پرداخت.

 

پیوست ها

  • Arrays.png
    Arrays.png
    97.1 کیلوبایت · بازدیدها: 1,004
  • Arrays - 2.png
    Arrays - 2.png
    3.8 کیلوبایت · بازدیدها: 992

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
آرایه ها - توضیحات بیشتر

در پست قبل در حد مطلوبی با آرایه ها آشنا شدید
گفته شد که آرایه ها نوع خاصی از متغیر ها هستن، بدین معنا که می توان با اونها مثل متغیرها رفتار کرد، با این تفاوت که آرایه ها توانایی ذخیره ی چندین مقدار متفاوت از یک نوع را در خود دارن، و از این جهت باعث راحت تر شدن کار ما شده ن !
و گفنه شد که آرایه ها نیز مثل متغیرها میتونن از نوع رشته ای یا عددی باشن:

آرایه ی عددی: این نوع آرایه توانایی ذخیره ی اعداد رو در خودش داره و شمایل کلی اون هم بدین صورت هست:
کد:
IntegerArray[]

آرایه ی رشته ای (متنی)
: این نوع آرایه توانایی ذخیره ی کلمات و کاراکترها و اعداد (از نوع کاراکتر) رو در خودش داره و در نوشتن نام آین نوع آرایه همانند متغیر همتای خود از پسوند $ استفاده میشه:
کد:
StringArray$[]
و برای دستیابی به مثلاً آیتم n ام این آرایه (آدرس آیتم) از کدی شبیه به کد زیر استفاده میشه:
کد:
Integer = IntegerArray[n]
String$ = StringArray$[n]
اما گفته شد که علاوه بر این نوع آرایه، نوع دیگری از آرایه ها هم وجود داره:
کد:
[FONT=Courier New][SIZE=2]Array$ = [COLOR=#800000]'Ali#Hamid#Elham#Homa#Saeid#Neda#Farzad#Anahita#'[/COLOR][/SIZE][/FONT]
این نوع آرایه ها که به " Delimited String " معروف اند، نوع خاصی از آرایه ها هستند که تمام آیتم های آن توسط یک کاراکتر خاص (در این مثال کاراکتر " # " ) از هم جدا شده اند، به این کاراکتر، کاراکتر جداساز گفته میشه.
نمونه ی بارزی از این نوع آرایه ها، فایلهای (CSV (Comma Seperated Values هستن، این نوع فایلها از کاراکتر " , " به عنوان کاراکتر جداساز استفاده کرده، شاید همینجا اهمیت این نوع آرایه برای ما مشخص میشه، با پشتیبانی MMB از این نوع آرایه میشه فایلهایی از این دست رو مورد پردازش قرار داد

MMB برای کار با این نوع آرایه ها دو دستور پیش روی ما قرار داده:

  • (GetArrayNum(Array$,Delimiter
توسط این دستور میشه تعداد آیتم های موجود در آرایه را بدست آورد، این دستور دو ورودی میگیره که ورودی اول " $Array " هست که در واقع نام آرایه ی مورد نظر هست و ورودی دوم که " Delimiter " هست، در واقع همان کاراکتر جداساز هست که این دستور با کمک اون تعداد آیتم های موجود در آرایه رو تشخیص میده، و خروجی این دستور یک عدد هست که مشخص کننده ی تعداد آیتم های موجود در آرایه هست.
لطفاً توجه فرمایید که این دستور به تنهایی نمیتونه بکار برده بشه و باید در طرف دیگه ی تساوی یک متغیر عددی باشه، به کد زیر توجه فرمایید:
کد:
[FONT=Courier New][SIZE=2]Array$ = [COLOR=#800000]'Ali#Hamid#Elham#Homa#Saeid#Neda#Farzad#Anahita#'[/COLOR] 
NumOfItems = [COLOR=#000090][B]GetArrayNum[/B][/COLOR](Array$,#) 
[COLOR=#000090][B]Message[/B][/COLOR]("Number of Items in Array:","NumOfItems") [/SIZE][/FONT]
که در این مثال مقدار برگردانده شده توسط این دستور عدد 8 هست که نشان دهنده ی تعداد آیتم های موجود در آرایه ی مشخص شده هست.
برای پردازش این نوع آرایه ها ابتدا توسط این دستور تعداد آیتم های موجود در آرایه را بدست میاریم، سپس با مشخص شدن تعداد آیتم توسط دستور بعد - که توضیح داده خواهد شد - آیتم ها رو استخراج می کنیم.


  • (GetArrayItem(Array$,Delimiter,Index
توسط این دستور میشه یک آیتم خاص رو از آرایه استخراج نمود.
این دستور سه ورودی داره که شرح داده خواهند شد:

  1. $Array : نام آرایه ی مورد نظر رو مشخص میکنه
  2. Delimiter : کاراکتر جداساز بکار رفته در آرایه رو مشخص میکنه، مشخص کردن این کاراکتر برای پردازش صحیح آرایه الزامی هست
  3. Index : این ورودی یک عدد هست که مشخص کننده ی شماره ی آیتم مورد نظر در آرایه هست، این عدد میتونه بین 1 و عدد بازگردانده شده توسط دستور GetArrayNum (تعداد آیتم های موجود در آرایه) باشه
و خروجی این دستور هم یک String هست که حاوی آیتم مورد نظر هست
به مثال زیر توجه کنید:
کد:
[FONT=Courier New][SIZE=2]Array$ = [COLOR=#800000]'Ali#Hamid#Elham#Homa#Saeid#Neda#Farzad#Anahita#'[/COLOR] 
Item$ = [COLOR=#000090][B]GetArrayItem[/B][/COLOR](Array$,#,[COLOR=#ff0000]3[/COLOR]) 
[COLOR=#000090][B]Message[/B][/COLOR]("The Third Item in Array:","Item$")[/SIZE][/FONT]
که خروجی این دستور متن " Elham " هست که در واقع سومین آیتم این آرایه هست.

در مثال زیر، استفاده ی پیشرفته تر این دو دستور نشون داده شده:
کد:
[FONT=Courier New][SIZE=2]Array$ = [COLOR=#800000]'Ali#Hamid#Elham#Homa#Saeid#Neda#Farzad#Anahita#'[/COLOR] 
Delimiter$ = [COLOR=#800000]'#'[/COLOR] 
NumOfItems = [COLOR=#000090][B]GetArrayNum[/B][/COLOR](Array$,Delimiter$) 
[COLOR=#0000ff]For[/COLOR] i=[COLOR=#ff0000]1[/COLOR] [COLOR=#0000ff]To[/COLOR] NumOfItems 
  Item$ = [COLOR=#000090][B]GetArrayItem[/B][/COLOR](Array$,Delimiter$,i) 
  Text$ = [COLOR=#800000]'Item '[/COLOR] + [COLOR=#000090][B]CHAR[/B][/COLOR](i) 
  [COLOR=#000090][B]Message[/B][/COLOR]("Text$","Item$") 
[COLOR=#0000ff]Next[/COLOR] i [/SIZE][/FONT]
در این مثال ابتدا توسط دستور GetArrayNum تعداد آیتم های موجود در آرایه مشخص میشه، سپس در یک حلقه که از 1 تا تعداد آیتم های موجود در آرایه اجرا میشه، تک تک آیتم های موجود در آرایه استخراج میشه و سپس در یک MessageBox نمایش داده میشه


موفق باشید

ادامه دارد...
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
توضیحات در رابطه با متغیرهای رشته ای

بعد از آرایه ها نیاز هست که کمی هم در مورد توابع کار با رشته ها صحبت کنیم.

همونطور که مطلع هستید، متغیرها در MMB بر دو نوع اند: عددی (Numerical) و رشته ای (String)

متغیرهای رشته ای (String): این نوع متغیر کاراکتر (ها) رو در خودش نگه میکنه، یعنی این متغیر ماهیتاً از نوع کاراکتر هست و مثلاً متن ها و کلمات در این نوع متغیر ذخیره میشن و برای تعریف این نوع متغیر از کاراکتر ($) پس از نام متغیر استفاده میکنیم:
کد:
[FONT=Courier New][SIZE=2]StringVariable$ = [COLOR=#800000]'SQLite is Awesome !'[/COLOR][/SIZE][/FONT]
همونطور که مشاهده میکنید برای نسبت دادن یک رشته به این نوع متغیر، کاراکترها رو بین دو سینگل کوتیشن ( ' ) محصور میکنیم.
شاید این سوال براتون پیش بیاد که اگر ما بخایم در متنمون از کاراکتر ( ' ) استفاده کنیم چکار باید کرد، چون اگر این کاراکتر تایپ کنیم MMB فکر میکنه که رشته ی ما تموم شده و بقیه ی کاراکترها رو به حساب نمیاره و پیغام خطا میده.
برای اینکار از کاراکتر BackSlash (\) استفاده میکنیم تا به MMB بفهمونیم که ما میخایم یک کاراکتر ( ' ) در رشته مون داشته باشیم و اینجا آخر رشته نیست،
مثلاً اگر بخایم عبارت " I'm Learning SQLite " رو به یک متغیر نسبت بدیم باید به شکل زیر عمل کنیم:
کد:
[FONT=Courier New][SIZE=2]StringVariable$ = [COLOR=DarkRed]'I\'m Learning SQLite'[/COLOR][/SIZE][/FONT]
خب، حالا اگر ما بخایم که همین کاراکتر BackSlash رو در انتهای رشته مون داشته باشیم چی ؟ مثل مسیر فایلها و پوشه ها، چون گفته شد که اگه قبل از کاراکتر ( ' ) از کاراکتر بک اسلش استفاده کنیم، به MMB میگیم که این کاراکتر سینگل کوتیشن جزو رشته مون هست و نه انتهای رشته، با این تفاسیر اگر لازم باشه که آخر یک رشته از کاراکتر بک اسلش استفاده کنیم مشکل بوجود میاد و MMB اینجور تفسیر میکنه که این انتهای رشته نیست و فقط یک کاراکتر سینگ کوتیشن هست...!
برای مرتفع ساختن این مسئله هم راه حل این هست که از دو کاراکتر بک اسلش پشت سرهم استفاده کنیم:
کد:
[FONT=Courier New][SIZE=2]Path$ = [COLOR=#800000]'C:\MyMMBProjects\\'[/COLOR][/SIZE][/FONT]
موضوع دیگه ترکیب کردن چند رشته یا متغیر رشته ای با هم هست، یا اصطلاحاً جمع زدن اونها !
برای اینکار از اپراتور جمع ( + ) استفاده میکنیم، به مثال زیر توجه کنید:
کد:
[FONT=Courier New][SIZE=2]MyName$ = [COLOR=#800000]'Nevercom'[/COLOR] 
String$ = [COLOR=#800000]'My Name Is: '[/COLOR] + MyName$ 
[COLOR=#000090][B]Message[/B][/COLOR]("String$","")[/SIZE][/FONT]
این کد پیغام " My Name Is: Nevercom " رو در یک MessageBox نمایش میده.

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

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
تبدیل متغیرها به یکدیگر

در این قسمت با توابع و دستوراتی که اعمالی را روی متغیرها - عددی و رشته ای - انجام میدهند آشنا میشوید


  • (CHAR(integer
این دستور یک متغیر عددی یا یک عدد رو میگیره - به عنوان ورودی؛ در پرانتز - و اون رو به نوع متغیر رشته ای یا کاراکتر تبدیل می کنه
کد:
[FONT=Courier New][SIZE=2]
integer = [COLOR=#ff0000]25[/COLOR] 
String$ = [COLOR=#800000]'My Score is: '[/COLOR] 
Score$ = String$ + integer 
[COLOR=#000090][B]Message[/B][/COLOR]("Score$","")
[/SIZE][/FONT]
این کد سعی میکنه یک متغیر رشته ای و یک متغیر عددی رو - همانگونه که هستن - به هم پیوند بده، اگر این کد رو در پنجره ی اسکریپت نویسی MMB بنویسید، با خطایی مواجه خواهید شد مبنی بر اینکه شما مجاز نیستید داده هایی از نوع مختلف رو به هم پیوند بدید !
برای انجام اینکار از تابع ()CHAR بهره میبریم:
کد:
[FONT=Courier New][SIZE=2]
integer = [COLOR=#ff0000]25[/COLOR] 
String$ = [COLOR=#800000]'My Score is: '[/COLOR] 
Score$ = String$ + [COLOR=#000090][B]CHAR[/B][/COLOR](integer) 
[COLOR=#000090][B]Message[/B][/COLOR]("Score$","")
[/SIZE][/FONT]
این کد همان کار رو به شیوه ای صحیح و درست انجام میده، با اجرای این کد یک پیغام نمایش داده میشه

attachment.php


  • ($VAL(String
این تابع یک متغیر رشته ای رو به متغیر عددی تبدیل می کنه، این تابع اعداد موجود در رشته رو از اولین کاراکتر تا رسیدن به یک کاراکتر غیر عدد، به اعداد صحیح یا متغیر عددی تبدیل میکنه
کد:
[FONT=Courier New][SIZE=2]
String$ = [COLOR=#800000]'22 January 2009'[/COLOR] 
Integer = [COLOR=#000090][B]VAL[/B][/COLOR](String$) 
[COLOR=#000090][B]Message[/B][/COLOR]("Integer Value is:","Integer")
[/SIZE][/FONT]
این کد متغیر رشته ای $String رو به عدد تبدیل کرده و اون را در متغیر عددی Integer قرار میده (میریزه)
خروجی این کد عدد 22 خواهد بود، زیرا این دستور از اولین کاراتر رشته شروع به خوندن میکنه و تا جایی که کاراکتر از نوع عدد باشه عمل تبدیل رو انجام میده،
در کد بالا دو کاراکتر اول از نوع عدد هستن (22) ولی کاراکتر سوم یک کاراکتر غیرعددی هست (فاصله)، بنابراین تابع به محض رسیدن به کاراکتر سوم عملیات تبدیل رو متوقف میکنه و مقدار بدست آمده رو بر میگردونه، همونطور که میبینید عدد 2009 که در رشته وجود داره، به دلیل انفصالی که بین کاراکترهای عددی وجود داره و اینکه بعد از کاراکترهای غیر عددی قرار گرفته، لحاظ نمیشه و برگردونده نمیشه،
توجه کنید که اگر اولین کاراکتر از نوع عدد نباشه، عملیات تبدیل از همون ابتدا متوقف شده و تابع مقدار صفر رو برمیگردونه
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
توابع مربوط به متغیرها: متغیرهای رشته ای - فصل اول

در این قسمت به مرور تعدادی از توابع و دستورات مربوط به رشته ها میپردازیم.

قبلاً با توابع ()VAL و ()CHAR آشنا شدید، اینجا به بررسی سایر توابع میپردازیم


  • (CHR(number
این تابع یک عدد یا متغیر عددی رو به عنوان ورودی میپذیره که عددی بین 0 تا 225 هست، و خروجی اون کاراکتر متناظر با همون عدد در جدول ASCII هست
اعداد 0 تا 32 و عدد 127 در جدول ASCII کاراکترهای غیرقابل نمایش اند، که هیچ معرف گرافیکی ای ندارند، ولی بسته به کاربرد، شاید بر روی نحوه ی نمایش متن اثر بزارن
کاراکترهای با مقدار 127 و بالاتر بسته به نوع فونت و پلتفرم، نمایش متفاوتی دارند، و البته در حال حاضر توسط MMB پشتیبانی نمیشن
کد:
[FONT=Courier New][SIZE=2]
String$ = [COLOR=#000090][B]CHR[/B][/COLOR]([COLOR=#ff0000]169[/COLOR]) + [COLOR=#800000]' MajidOnline 2010'[/COLOR] 
[COLOR=#000090][B]Message[/B][/COLOR]("String$","") [/SIZE][/FONT]
این اسکریپت کاراکتر شماره ی 169( © ) را با رشته ی "MajidOnline 2010" پیوند میده و اونرو در یک MessageBox نمایش میده، متن نمایش داده شده به این شکله:
MajidOnline 2010 ©
کاربرد دیگه ی این دستور در ایجاد یک خط جدید در متن هست، اگر دقت کرده باشید، جمله ها یا رشته ها همگی تک خطی اند و دستوری برای شکستن رشته ها به چند خط وجود ندارد، ولی توسط دستور ()CHR میتونین اینکار رو انجام بدین
کد:
[FONT=Courier New][SIZE=2]String$= [COLOR=#800000]'First line'[/COLOR] + [COLOR=#000090][B]CHR[/B][/COLOR]([COLOR=#ff0000]13[/COLOR]) + [COLOR=#000090][B]CHR[/B][/COLOR]([COLOR=#ff0000]10[/COLOR]) + [COLOR=#800000]'Second line'[/COLOR] 
[COLOR=#000090][B]Message[/B][/COLOR]("String$","")
[/SIZE][/FONT]
خروجی این اسکریپت بدین شکل خواهد بود که (CHR(13) + CHR(10 رشته رو به خط بعد میشکنه:
First Line
Second Line



  • ($ORD(character
این دستور، درست برعکس دستور قبل عمل میکنه، یعنی یک کاراکتر (متغیر رشته ای) را به عنوان ورودی میپذیره و خروجی اون؛ عدد (متغیر عددی) متناظر با اون کاراکتر در جدول ASCII خواهد بود
کد:
[FONT=Courier New][SIZE=2]
Character$ = [COLOR=#800000]'#'[/COLOR] 
RetVal = [COLOR=#000090][B]ORD[/B][/COLOR](Character$) [/SIZE][/FONT]
خروجی این اسکریپت عدد 35 که مقدار متناظر با کاراکتر # در جدول ASCII است میباشد


کد:
[FONT=Courier New][SIZE=2][COLOR=#0000ff]If[/COLOR] ( [COLOR=#000090][B]ORD[/B][/COLOR](Char$) => [COLOR=#ff0000]65[/COLOR] & [COLOR=#000090][B]ORD[/B][/COLOR](Char$) <= [COLOR=#ff0000]90[/COLOR] ) [COLOR=#0000ff]Then[/COLOR] 
  [COLOR=#000090][B]Message[/B][/COLOR]("The Character is Uppercase","") 
[COLOR=#0000ff]End[/COLOR][/SIZE][/FONT]
این کد چک میکنه که کاراکتر ذخیره شده در متغیر $Char از حروف بزرگ الفبای لاتین هست یا حروف کوچک
بر طبق جدول ASCII حروف بزرگ الفبای لاتین مقداری بین 65 تا 90 و حروف کوچک مقداری بین 97 تا 122 رو دارن.
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
توابع مربوط به متغیرها: متغیرهای رشته ای - فصل دوم

  • ($LEN(string
این تابع یک متغیر رشته ای (String) رو به عنوان ورودی میپذیره و خروجی اون طول این رشته از نوع متغیر عددی (عدد) خواهد بود، طول یک رشته به نوعی بیانگر تعداد کاراکترهای اون رشته خواهد بود
** شما میتونید با لود کردن یک فایل در یک متغیر رشته ای طول اون فایل رو بدست بیارید
کد:
[FONT=Courier New][SIZE=2][COLOR=#000090][B]LoadText[/B][/COLOR]("string$","C:\SampleText.txt") 
RetVal=[COLOR=#000090][B]LEN[/B][/COLOR](string$) 
[COLOR=#000090][B]Message[/B][/COLOR]("Length of the String:","RetVal") [/SIZE][/FONT]
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
توابع مربوط به متغیرها: متغیرهای رشته ای - فصل سوم

  • ($LOW(string
این تابع یک رشته (String) رو به عنوان ورودی میپذیره و تمام کاراکترهای اونرو به حروف کوچک لاتبن تبدیل میکنه
کد:
[FONT=Courier New][SIZE=2]string$ = [COLOR=#800000]'ThIs  TeXt WiLL bE CoNvErtED to LoWeRcAsE'[/COLOR] 
RetString$ = [COLOR=#000090][B]LOW[/B][/COLOR](string$)
[/SIZE][/FONT]
در این مثال خروجی این تابع در متغیر $RetString ذخیره شده و مقدار اون بدینگونه خواهد بود:
کد:
 this  text will be converted to lowercase


  • ($UPP(String
این تابع درست برعکس تابع بالا عمل کرده و تمام کاراکترهای یک رشته رو به حروف بزرگ لاتین تبدیل میکنه
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
توابع مربوط به متغیرها: متغیرهای رشته ای - فصل چهارم

  • ($POS(SubString$, String
این تابع وجود رشته ی $SubString رو در رشته ی $String جستجو میکنه

اگر رشته ی $SubString در رشته ی $String موجود باشه، تابع عددی رو بر میگردونه که نشان دهنده ی محل قرارگیری اولین کاراکتر از رشته ی مورد جستجو ($SubString) در رشته ی جستجو شونده ($String) هست؛ در غیر اینصورت تابع عدد صفر رو برمیگردونه که نشان دهنده ی عدم وجود رشته ی مورد نظر در رشته ی دیگر هست
کد:
[FONT=Courier New][SIZE=2]
string$ = [COLOR=#800000]'Have a nice day!'[/COLOR] 
substring$ = [COLOR=#800000]'nice'[/COLOR] 
RetVal = [COLOR=#000090][B]POS[/B][/COLOR](substring$,string$)
[/SIZE][/FONT]
در این مثال، خروجی تابع که در متغیر RetVal ذخیره میشه، برابر عدد 8 خواهد بود که نشان دهنده ی محل شروع رشته ی مورد جستجو (nice) در رشته ی اصلی هست


* این تابع دو ورودی از نوع متغیر رشته ای میپذیره که پارامتر اول رشته ای هست که قراره در رشته ی دیگه (پارامتر دوم) مورد جستجو قرار بگیره؛ و پارامتر دوم رشته ی اصلی هست که عمل جستجو بر روی اون صورت میگیره

** همونطور که میدونید زبان اسکریپت نویسی MMB یک زبان Case Sensetive یا حساس به کوچکی و بزرگی حروف هست، از این جهت، برای مطمئن شدن از وجود یک رشته در رشته ی دیگه، هر دو رشته رو توسط توابع ()LOW یا ()UPP به یک فرم در آورده و سپس عمل جستجو رو انجام میدیم، تا بزرگی و کوچکی حروف باعث عاجز ماندن دستور ()POS از یافتن رشته ی مورد نظر نشه
کد:
[FONT=Courier New][SIZE=2]string$       = [COLOR=#800000]'Have a nice day!'[/COLOR] 
substring$    = [COLOR=#800000]'hAvE'[/COLOR] 
RetString$    = [COLOR=#000090][B]LOW[/B][/COLOR](string$) 
RetSubString$ = [COLOR=#000090][B]LOW[/B][/COLOR](substring$) 
RetVal        = [COLOR=#000090][B]POS[/B][/COLOR](RetSubString$,RetString$)[/SIZE][/FONT]
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
توابع مربوط به متغیرها: متغیرهای رشته ای - فصل پنجم

  • (StrCopy(String$, Indx, Count
این تابع کاراکترهایی را از رشته کپی میکند
این تابع سه پارامتر به عنوان ورودی میپذیرد:

  1. $String : رشته ی مادر که قرار است کاراکترهایی از آن کپی شود
  2. Indx : محل شروع کپی کاراکترها در رشته (عدد)
  3. Count : تعداد کاراکترهایی که باید از محل شروع به بعد کپی شوند (عدد)
* اگر Indx بزرگتر از طول متغیر $String باشد، این دستور یک رشته ی خالی را باز میگرداند
** اگر count تعداد کاراکترها را بیش از تعداد موجود مشخص کند، این دستور تنها کاراکترهایی را از نقطه ی شزوع تا انتهای رشته باز میگرداند
کد:
[FONT=Courier New][SIZE=2]string$ = [COLOR=#800000]'Have a nice day!'[/COLOR] 
ReturnExt$ = [COLOR=#000090][B]StrCopy[/B][/COLOR](string$,[COLOR=#ff0000]8[/COLOR],4)[/SIZE][/FONT]
کد بالا، از کاراکتر شماره ی 8 به تعداد 4 کاراکتر شروع به کپی میکند و رشته ی بازگردانده شده بدین شکل خواهد بود:
nice

نوعی استفاده ی پیشرفته تر از این تابع به همراه توابعی که پیشتر معرفی شدند را در زیر میبینید:
کد:
[FONT=Courier New][SIZE=2]string$ = [COLOR=#800000]'Have a nice day!'[/COLOR] 
[COLOR=#009000]** count number of letters[/COLOR] 
count = [COLOR=#000090][B]LEN[/B][/COLOR](string$) 
[COLOR=#009000]** create loop from 1 to number of letters[/COLOR] 
[COLOR=#0000ff]For[/COLOR] i = [COLOR=#ff0000]1[/COLOR] [COLOR=#0000ff]To[/COLOR] count 
  [COLOR=#009000]** copy one character per loop[/COLOR] 
  ReturnExt$ = [COLOR=#000090][B]StrCopy[/B][/COLOR](string$,i,[COLOR=#ff0000]1[/COLOR]) 
  [COLOR=#009000]** pause loop[/COLOR] 
  [COLOR=#000090][B]Pause[/B][/COLOR]("[COLOR=#ff0000]100[/COLOR]") 
  [COLOR=#009000]** merge letters (this will produce animation effect)[/COLOR] 
  newstring$ = newstring$ + ReturnExt$ 
  [COLOR=#009000]** load merged string to a Text object[/COLOR] 
  [COLOR=#000090][B]LoadText[/B][/COLOR]("Text","newstring$") 
[COLOR=#0000ff]Next[/COLOR] i [/SIZE][/FONT]
کد بالا باعث ایجاد یک انیمیشن تایپ متن میشود، توجه کنید که برای مشاهده ی این اسکریپت باید یک شئ متن (Text Object) با نام Text در صفحه ی پروژه موجود باشد

* دستور ("$LoadText("Text","newstring که در کد بالا مورد استفاده قرار گرفته است، محتویات یک رشته را در یک شئ متنی نمایش میدهد.
 

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

بالا