Mthzf1384 123 ارسال شده در 13 اسفند، ۱۳۹۹ اشتراک گذاری ارسال شده در 13 اسفند، ۱۳۹۹ سلام خدمت همه دوستان برنامه نویس با آموزش دیتابیس آفلاین در خدمتتون هستم. دیتابیس آفلاین خیلی کاربرد ها در برنامه های آفلاین و آنلاین داره به طور خیلی کلی شما میتونید اطلاعات رو در اون ذخیره کنید و هر موقع خواستید فراخوانی کنید(البته اطلاعات نه چندان مهم چون اطلاعات به راحتی میتوانند در دسترس باشند و برای اطلاعات مهم باید در دیتابیس آنلاین ذخیره کرد) کار ما کلا با برنامه نویکت(navicat) و B4A هست اگر نویکت رو ندارید میتونید از لینک زیر اون رو دانلود کنید: دانلود نسخه 32 بیتی دانلود برای نسخه 64 بیتی خب برسیم به آموزشمون: ابتدا برنامه نویکت رو باز کنید از قسمت conection گزینه چهارم یعنی SQLite رو انتخاب کنید در پنجره باز شده سه مورد مهم هست:( conection name , type , database file) در conection name اسم اون دیتابیس در برنامه نویکت رو قرار بدید در type اگر میخواهید دیتابیس جدیدی بسازید هم میتوانید گزینه دومی و هم گزینه سومی را انتخاب کنید و اگر میخواهید دیتابیس از قبل موجود را به برنامه نویکت اضافه کنید گزینه اول را انتخاب کنید اگر مورد دوم و سوم را انتخاب کردید در database file محل ذخیره دیتابیس رو قرار بدید(باید در پوشه فایل های برنامه اون رو قرار بدید) و اگر مورد اول باید آدرس اون دیتابیس ذخیره شده رو بزنید در نهایت را ok بزنید حالا دیتابیس شما ساخته شده اما هنوز قابل استفاده در B4A برای ذخیره اطلاعات نیست برای اینکه قابل استفاده بشه باید تیبل و فیلد ایجاد کنیم تا قابل استفاده بشه برای ذخیره اطلاعات. خب حالا چطوری تیبل و فیلد ایجاد کنیم: ابتدا روی دیتابیس خودتون کلیک کنید تا رنگش آبی بشه روی main کلیک کنید تا باز بشه حالا در پنچره باز شده new tabel رو بزنید خب حالا باید فیلد هامون رو در داخل تیبل ایجاد کنیم برای ایجاد فیلد چهار تا قسمت خیلی مهمه (name , type , not null , key) name اسم فیلد هست و در B4A باهاش کار داریم Type محتوای ذخیره سازی هست اگر integer قرار دادید دیگه نمیتونید داخلش حروف تایپ کنید و به همین ترتیب اگر تیک not null رو بزنید دیگه هیچ فیلدی نمیتونه خالی از اطلاعات باشه اگر در key کلیدی قرار دادید دیگه اطلاعات هیچ دو فیلدی نمیتونن مثل هم باشن حالا به ترتیب هایی که ذکر شده هر تعداد فیلد هایی که خواستید رو بسازید و در نهایت دکمه save رو بزنید و اسم تیبل رو انتخاب کنید توصیه: همیشه فیلد اول رو ID قرار بدید و not null و key رو براش فعال کنید یادتون باشه ما با اسم تیبل و اسم فیلد ها کار داریم و شما برای دسته بندی راحت تر برنامتون میتونید چند تا تیبل و چند تا فیلد داشته باشید به عنوان مثال اگه برنامه شما یک کتاب هست که تنظیمات هم داره شما بهتره اطلاعات تنظیمات را در یک تیبل و متن های کتاب رو در تیبل دیگه ای قرار بدید خب الان میتونید اطلاعات رو در دیتابیس ذخیره کنید و در برنامه از اون استفاده کنید. ادامه آموزش را با یک مثال ادامه میدیم میخواهیم یک برنامه با یک دکمه بسازیم که بشه رنگ دکمه رو کاربر تغییر بده و اون رنگ برای همیشه برای اون دکمه باقی باشه؛ در حالت بدون استفاده از دیتابیس و ذخیره سازی اطلاعات شما نمیتونید بیشتر از یه رنگ که توسط خودتون(نه کاربر) تعیین میشه قرار بدید ولی در این مورد کاربر هر بار میتونه رنگ دکمه رو تغییر بده و به راحتی ذخیره کنه و از این به بعد از اون استفاده کنه برای این کار ابتدا یه دیتابیس ایجاد کنید با یک تیبل و چهار فیلد: فیلد اول که طبق توصیه ID باید باشه فیلد دوم Red باشه فیلد سوم green باشه فیلد چهارم Blue باشه در این فیلد ها میزان رنگ های Red , Green , Blue که توسط کاربر قرار داده شده رو ذخیره میکنیم برای مقدار پیش فرض Red رو 255، green , blue رو صفر، ID هم برابر با یک قرار بدید تا رنگ اولیه دکمه قرمز باشه خب حالا که اطلاعات پیش فرض رو در دیتابیس ذخیره کردیم دیگه کار ما با برنامه ی نویکت تموم شده و باید بقیه کار ها رو در B4A انجام بدیم روش اصولی استفاده از دیتابیس اینه که شما تمام کارهای مربوط به دیتابیس رو در داخل یک class module انجام بدید و بعد با activity اصلی ارتباط برقرار کنید نکته: دیتابیس نمیتونه در dirassets باشه و باید قبل از هر گونه کاری روی دیتابیس اون رو در جای دیگری ذخیره کنید(من در dirinternal ذخیره میکنم) خب حالا طبق مراحل زیر عمل میکنیم: تیک کتابخانه SQL را میزنیم در class module ایجاد شده از قبل در ساب class global یک متغیر از SQL تعریف میکنیم در ساب Initialize کد های زیر رو برای کپی دیتابیس و اینیشالایز SQL قرار میدیم: If(File.Exists(File.DirInternal , "نام دیتابیس.db") = False)Then File.Copy(File.DirAssets , "نام دیتابیس.db" , File.DirInternal , "نام دیتابیس.db") End If If(sql1.IsInitialized = False)Then sql1.Initialize(File.DirInternal , "نام دیتابیس.db" , False) End If به طور کلی برای گرفتن اطلاعات ما به یک متغیر از نوع Cursor برای خواندن فیلد ها نیاز داریم و باید اون رو با دستور Select مقدار دهی کنیم. فرمول کلی دستور select به صورت زیر است: Dim cur as Cursor = sql1.ExecQuery("SELECT * FROM نام تیبل") در کد بالا اطلاعات تمام فیلد ها را میگیره و به cur میده اما اگه شما فقط یک سطر از اون فیلد رو میخواهید باید مثل کد زیر عمل کنید: Dim cur as Cursor = sql1.ExecQuery("SELECT * FROM نام تیبل WHERE ID = 1") نکته خیلی مهم: در دستور بالا و به طور کلی در هر کوئری کلمات نباید کوچک نوشته شوند مانند SELECT و اگر به صورت select نوشته شد غلط است در کد بالا cur فقط اطلاعات ID = 1 رو میگیره حالا اگر شما آیدی دیگه ای رو میخواهید میتونید جای یک هر مقداری قرار بدید باید پازیشن cur رو مقدار دهی کنیم تا cur بتونه از اون پازیشن بخونه و بعد در خودش ذخیره کنه. اگر شما فقط یک سطر خاصی از اون فیلد ها را میخواهید باید پازیشن cur رو برابر صفر قرار بدید اما اگر تمام اطلاعات رو میخواهید نیاز به حلقه فور هست مانند کد زیر: For i = 0 To cur.RowCount - 1 cur.Position = i Next خب حالا باید اطلاعات رو از دیتابیس بگیریم و اون رو از کلاس ماژول به اکتیویتی اصلی انتقال بدیم برای این کار یه ساب با نام GetData میسازیم از نوع لیست و در اون سه مقدار R , G , B رو میگیریم مانند کد زیر: Sub GetData As List Dim l As List l.Initialize Dim cur As Cursor = sql1.ExecQuery("SELECT * FROM TblColor") cur.Position = 0 l.Add(cur.GetString("Red") &"#"& cur.GetString("Green") &"#"& cur.GetString("Blue")) Return l End Sub در کد بالا ما میزان رنگ ها رو به ترتیب درون لیست قرار دادیم و اون ها رو با یک # از هم جدا کردیم تا بتونیم در اکتیویتی اصلی اون ها رو از هم تشخیص بدیم خب حالا اطلاعات رو آوردیم در کلاس ماژول حالا باید اون ها رو وارد اکتیویتی اصلی کنیم برای این کار ابتدا در ساب global یه متغیر از نوع کلاسمون تعریف میکنیم وقبل از هر کاری ساب initialize کلاس ماژول رو فراخوانی میکنیم تا دیتابیس آماده کار بشه کد زیر رو در اکتیویتی قرار میدیم تا اطلاعات در اکتیویتی اصلی بیاد و بتونیم تنظیمات پیش فرض رو اعمال کنیم: Sub Globals Private Button1 As Button Dim mydb As MySql Dim l As List End Sub Sub Activity_Create(FirstTime As Boolean) Activity.LoadLayout("Layout") mydb.Initialize l.Initialize l = mydb.GetData Dim s() As String = Regex.Split("#" , l.Get(0)) Button1.Color = Colors.RGB(s(0) , s(1) , s(2)) End Sub خب جلسه اول به اتمام رسید در این جلسه ساخت دیتابیس و ذخیره اطلاعات اولیه و فراخوانی و استفاده از اطلاعات رو قرار دادیم انشاءالله در جلسات بعدی نحوه اضافه کردن و آپدیت سطر هامون رو قرار میدیم سعی میکنم سورس کد هایی هم آماده کنم و در اخیارتون قرار بدم پیروز و سربلند باشید لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
Mthzf1384 123 ارسال شده در 19 اسفند، ۱۳۹۹ سازنده اشتراک گذاری ارسال شده در 19 اسفند، ۱۳۹۹ سلام خدمت همه دوستان عزیز جلسه دوم خب در این جلسه قرار شد تا آپدیت اطلاعات ذخیره شده و همچنین حذف و اضافه کردن اطلاعات(از داخل برنامه) رو یاد بدیم. ابتدا با آپدیت آغاز میکنیم: فرم کلی دستور update به صورت زیر است: UPDATE نام تیبل SET نام فیلد = ? WHERE ID = 1 در کد بالا میگیم آپدیت کن تیبل فلان در فیلد فلان وقتی که آیدی برابر یک هست حالا میخواهیم این دستور را در بیسیک پیاده سازی کنیم همونطور که گفتم در یک کلاس ماژول تمام کار های مربوطه رو باید انجام بدیم و در اکتیویتی اصلی از اون استفاده کنیم: Public Sub Update sql1.ExecNonQuery("UPDATE TblColor SET Blue = 255 WHERE ID = 1) End Sub حالا کافیه این ساب رو در اکتیویتی اصلی فراخوانی کنید گاهی وقت ها شما خیلی آیدی دارید و فقط میخواهید در بعضی از آیدی ها تغییر ایجاد کنید و شماره آیدی رو هم نمیدونید مثلا در تگ دکمه هست و شما اطلاعی از اون ندارید برای این کار از کد زیر استفاده کنید: Public Sub UpdateAkharin(ID As Int) sql1.ExecNonQuery2("UPDATE TblColor SET Blue = ? WHERE ID = ?" , Array As String(255 , ID)) End If با این کار ما آیدی رو میتونیم در اکتیویتی اصلی مقدار دهی کنیم: mydb1.Update(Btn.Tag) اینگونه ما بدون دانستن آیدی و خیلی دقیق آیدی مربوطه رو مقدار دهی کردیم گاهی وقت ها نیاز است تا یک مقداری رو از داخل برنامه به دیتابیس بفرستیم برای این کار از کد زیر استفاده میکنیم: INSERT INTO نام تیبل VALUES(1, 0 , 255 , 0) در قسمت VALUES باید به ترتیب فیلدهامون مقادیر رو قرار بدیم حالا باید این کد را در بیسیک هم پیاده سازی کنیم اینگونه: Sub Insert sql1.ExecNonQuery2("INSERT INTO TblColor VALUES(? , ? , ? , ?)" , Array(2 , 255 , 0 , 255)) End Sub گاهی اوقات هم نیاز است اطلاعات رو پس از منسوخ شدن از دیتابیس حذف کنیم فرم کلی دستور delete: DELETE FROM نام تیبل WHERE ID = 4 حالا باید این کد را در بیسیک هم پیاده سازی کنیم اینگونه: Sub Delete sql1.ExecNonQuery("DELETE FROM TblColor WHERE ID = 3") End Sub اگر آیدی را هم نمیدونستید میتونید مثل قسمت update عمل کنید و آیدی را به طور دقیق بدهید. خب این جلسه هم به اتمام رسید انشاءالله سعی میکنم سورس کد هایی رو برایتان قرار بدهم. پیروز و سربلند باشید لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.