کانال بازی سازی تلگرام
جستجو در دیتابیس در b4a با سورس :: آموزش ساخت بازی اندروید+پکیج های تخصصی

آموزش ساخت بازی اندروید+پکیج های تخصصی

هرگز دل من ز علم محروم نشد
کم ماند ز اسرار که معلوم نشد
هفتاد و دو سال فکر کردم شب و روز
معلومم شد که هیچ معلوم نشد
---
تمام اعمالی که انجام می دهیم، حتی اگر ذره ای و مثقالی باشد، به خودمان باز می گردد و بازتابش آنها را در زندگی خواهیم دید. زلزال ۷
او کسی است که (روح) شما را در شب (به هنگام خواب) میگیرد; و از آنچه در روز کرده‏اید، با خبر است; سپس در روز شما را (از خواب) برمیانگیزد; و (این وضع همچنان ادامه مییابد) تا سرآمد معینی فرا رسد; سپس بازگشت شما به سوی اوست; و سپس شما را از آنچه عمل میکردید، با خبر میسازد. انعام ۶۰
دلها به یاد خدا آرام میگیرد. رعد آیه ۲۷
بدانید زندگی دنیا تنها بازی و سرگرمی، و تجمل پرستی و تفاخر در میان شما و افزون طلبی در اموال و فرزندان است . حدید آیه ۲۰
آن خدایی که آدمی را از خون بسته (که تحول نطفه است) بیافرید.
بخوان و (بدان که) پروردگار تو کریم‌ترین کریمان عالم است.
آن خدایی که بشر را علم نوشتن به قلم آموخت.
به آدمی آنچه را که نمی‌دانست تعلیم داد.
راستی که انسان سرکش و مغرور می‌شود.
چون که خود را در غنا و دارایی ببیند. علق ۲- ۷
این زندگانی چند روزه دنیا افسوس و بازیچه‌ای بیش نیست، عنکبوت ۶۴
در روی زمین به تکبر راه مرو که نمی توانی زمین را بشکافی و هرگز قامتت به بلندای کوهها نمی رسد. اسراء ۳۷
در آنچه خداوند بر تو بخشیده است، سرای آخرت را بجوی و سهم خود را از دنیا فراموش مکن و همانگونه که خدا به تو نیکی کرده است نیکی کن و هرگز فساد در زمین منما که خدا مفسدان را دوست ندارد. قصص ۷۷
و هرگاه نعمت و رحمتی به انسان بچشانیم و سپس آن را از او برگیریم او مأیوس و نومید میشود و به کفران و ناسپاسی بر میخیزد. هود ۹
بندگان مرا آگاه ساز که من بسیار آمرزنده و مهربانم. حجر ۴۹
از رحمت خدا نا امید مباشید که جز کافر هیچ کس از رحمت خدا نا امید نیست. یوسف ۸۷
پس به یاد من باشید تا به یاد شما باشم. بقره ۱۵۲
زندگانی دنیا چیزی جز متاع فریبنده نیست . آل عمران ۱۸۵
از آنچه به شما روزی داده ایم پیش از آنکه روزی فرا رسد که نه معامله ای وجود دارد و نه دوستی و شفاعت ، انفاق کنید. بقره ٢۴۵
بسا چیزی را ناخوش داشته باشید که آن به سود شماست و بسا چیزی را دوست داشته باشید که به زیان شماست، و خدا میداند و شما نمیدانید. بقره ۲۱۶
ما آیات (خود) را برای شما بیان کردیم شاید اندیشه کنید...حدید ۱۷

پیوندهای روزانه
پیوندها

جستجو در دیتابیس در b4a با سورس

دوشنبه, ۶ مهر ۱۳۹۴، ۰۳:۵۹ ق.ظ

منبع:gameover.blog.ir

برای اینکه دیتا بیس بسازید نیاز به نرم افزار navicat دارید که ورژن premium رو از اینترنت دانلود کنید . اموزشم نمی خواد ور برید حله winking
-

یه کانکشن و سپس یه دیتا بیس و سپس یک جدول به نام table1 بسازید.
اسم دیتا بیس من db1.db هست که از نوع sql Lite 3 ایجادش کردم.
اسم جدول من table1 هست که دارای دو ستون esm و nomre هست و یه سری اسم و مقدار که داخلش ریختم :
[تصویر: navicat.jpg]

دیتابیس ایجاد شده رو با نام db1.db در پوشه ی Files داخل پوشه ی پروژه ی خودتون بریزید.

سپس وارد b4a بشید و در بخش Files (پایین سمت راست) رفته و Sync رو بزنید تا فایل های اضافه شده به پوشه ی Files رو داخل پروژه شناسایی و بار کنه.

به منوی Designers برید و یک اکتیویتی با نام main ایجاد کنید و یک listView و یک کادر متن(EditText ) بسازید و همونجا از منوی Tools->Generate members کدهای تعریف کادر متن و بقیه که لازم دونستید generate کنید(متوجه نمی شید تیک بزنید و توی کدها نگاه کنید ببینید رویدادها و متغیرهای لازم تعریف میشه)

کدهای Globals (بخش sub نه process) ما اینان:

کد:
Sub Globals
    Private EditText1 As EditText
    Private ListView1 As ListView    
    Dim SQL1 As SQL
    Dim cursor1 As Cursor
End Sub
کدهای ایجاد اکتیویتی هم اینان :

کد:
Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("main")
    Activity.Color=Colors.RGB(26,188,156)'#1abc9c
    Activity.Title="sajjad3011"
    
    Activity.LoadLayout("main")
    If File.Exists(File.DirInternal,"db1.db") = False Then
        File.Copy(File.DirAssets,"db1.db",File.DirInternal,"db1.db")
    End If
    
    If SQL1.IsInitialized = False Then
        SQL1.Initialize(File.DirInternal, "db1.db", False)
    End If
    
    DBload("")
    
End Sub

حالا باید کد رویداد EditText1_TextChanged رو بسازیم که وقتی توی کادر متنی ویرایش یا تغییراتی اعمال کردیم جستجو و نتیجه اون در لیست نمایان بشه:
کد:
Sub EditText1_TextChanged (Old As String, New As String)
    DBload(New)
End Sub
در کد فوق تابعی به نام DBload رو با مقدار تولید شده در متغیر New که خودش میشناسه فراخوانی کرده و ورودی دادیم.
اینم کد تابع یا ساب روتین یا روال DBload:
کد:
Sub DBload(q As String)
Private condition As String
q=q.Trim'remove spaces
condition="WHERE esm LIKE '%" & q & "%'"
ListView1.Clear'need to clear the list
cursor1 = SQL1.ExecQuery("SELECT * FROM table1 " & condition)
For i = 0 To cursor1.RowCount - 1
cursor1.Position = i
ListView1.AddSingleLine(cursor1.GetString("esm")& "|" &cursor1.GetString("nomre"))
ListView1.SingleLineLayout.ItemHeight = 40
ListView1.SingleLineLayout.Label.TextSize = 20
ListView1.SingleLineLayout.Label.TextColor = Colors.Black
ListView1.SingleLineLayout.Label.Color = Colors.White
Next
End Sub
توضیح کد فوق:
با تابع Trim فضای خالی راست و چپ رشته ی ورودی که به جای q نشسته رو پاک می کنیم.
condition شرط رشته ای هست که پیوند میزنیم به متن SQL که قراره برای عمل پرس و جو یا query تولید بشه.
با دستور زیر q رو در like برای جستجو جاساز کردیم:
کد:
condition="WHERE esm LIKE '%" & q & "%'"
دستورات SQL هم بلد نیستید توی اینترنت ریخته اموزش های زیادی.
علامت & برای چسبودندن یا پیوند زدن دو عبارت رشته ای به هم بکار می ره.
سپس ابتدا لیست رو خالی کردیم :
کد:
ListView1.Clear
سپس کرسر ایجاد شده رو اجرا و نتیجه رو دریافت کردیم :
کد:
cursor1 = SQL1.ExecQuery("SELECT * FROM table1 " & condition)
اولین رکورد(سطر) شمارش 0 هست .
cursor1.RowCount تعداد کل سطرهای یافت شده طبق جستجو رو بر می گردونه.
پس آخرین سطر اندیسش یکی کمتر از تعداد هست.
واسه همین توی حلقه ی For از 0 تا cursor1.RowCount - 1 تکرار رو انجام می دیم و سطر به سطر میایم ستون ها رو می خونیم(ستون های esm و nomre) و ب علامت "|" از هم جدا کردیم برای زیبایی نمایش در listView :
کد:
For i = 0 To cursor1.RowCount - 1
cursor1.Position = i
ListView1.AddSingleLine(cursor1.GetString("esm")& "|" &cursor1.GetString("nomre"))
ListView1.SingleLineLayout.ItemHeight = 40
ListView1.SingleLineLayout.Label.TextSize = 20
ListView1.SingleLineLayout.Label.TextColor = Colors.Black
ListView1.SingleLineLayout.Label.Color = Colors.White
Next
با TextSize اندازه متن رو با 20 تنظیم کردیم(واسه تغییرش می تونید یه نوار لغزان بذارید و ذخیره کنید توی فایل یا دیتابیس یا هر ترفند دیگه ای که شگرد خودتونهbig grin )
-
بعد از اجرا می تونید تایپ کنید و مثل pmd dictionary کار می کنه. بقیشو بدوhappy
[تصویر: search_db.jpg]
-
اینم سورس که خودم ساختم:
http://s5.picofile.com/file/8157708068/search_db.zip.html

اگه بخواید مرتب سازی هم انجام بده مثلا بر حسب ستون esm باید order by esm رو به آخر query(بازجست) اضافه کنید:
یعنی اینطوری:

کد:
cursor1 = SQL1.ExecQuery("SELECT * FROM table1 " & condition & "ORDER BY esm")
نتیجه رو ببینید اسمی که تایپ کردم وسه جستجو مرتب لیست میشه بر حسب حروف الفبا :
[تصویر: order_by.jpg]

تابع file.copy میاد یه فایل (در اینجا db1.db که اسم بانک اطلاعاتی ما هست و جدول table1 در اون هست) رو کپی می کنه از مکان اول به مکان مقصد.
file.dirAssets آدرس پوشه ی files داخل خود پروژه رو میده که توی apk پک و بسته بندی میشه و توی اندروید بعد از نصب unPack خواهد شد. و در حقیقت دیتابیس db1.db رو به صورت SQL lite 3 در نرم افزار premium navicat ساختیم و جدول table1 رو هم براش ایجاد کردیم و دیتابیس رو با نام db1.db ذخیره کردیم در پوشه ی Files پروژمون big grin

File.DirInternal هم پوشه ی داخلی اندروید رو چک می کنه که آیا قبلا دیتابیس رو ما کپی کرده بودیم یا خیر؟
اگه کپی کرده بودیم دیگه کپی نکن.
البته می تونیم شرط اول رو برداریم و همیشه بگیم هر وقت یه چیز جدید نصب کردیم تو بیا دیتابیس آپدیت شده ی جدید رو کپی کن.
دلیل اینکه کپی می کنه هم اینه که توی پوشه ی داخلی باشه سرعت کار کمی بالا می ره یا دلایل امنیتی دیگه big grin
-
تمام خط های فوق واسه اتصال به بانک db1.mdb بود.
--
اما بعدش اید جدول رو بخونیم و دستورات SQL برای انتخاب سطرها و ویرایش و آپدیت و درج و مرتب سازی و ... که اینا همشو نمی شد یه جا نوشت چون کثیف کاری میشد.
برای همن منظور یه ساب روتین(sub یا روال یا تابع یا procedure هم می گن) نوشتیم به اسم DBload("") که بیاد اطلاعات جدول رو لود کنه و کدهای لازم رو داخلش نوشتیم و فقط اسمشو صدا زدیم که خودش اونو اجرا کنه به همین سادگی big grin
در مورد چپ و راست چین کردن باید خصوصیات EditText یا ListView یا Label یا حالا غیره رو تغییر بدی که اونو بعدا در بخش دیگه ای بپرس چون الان ذهنم درگیره.
اما این که از word بخونه کار منطقی نیست باید بریزی توی یه ساختار جدولی یال فایل های متنی یا دیتابیس و بهترین کار اینه که با نرم افزارهای مختلف یا ببری به XML (زبان انتقال و حمل داده ها) و بعدش ببری که اکسل یا اکسس یا SQL و ... که اونم الان نمی دونم و بحثش نیست.
شما کارهایی که میخوای بکنی اینه که لغات زبانی PDF یا word ای که توی نت پیدا کردی(مثل من و ... big grin) رو میخوای ببری به access و اونا همه چیزو آماده نذاشتن تا ما سریع به پول برسیم.
پس باید زحمت بکشید خودتون دستی یکی دو ماه وقت بذارید بکوب یه چیز خوب بسازید یا اینکه یه سری دیتابیس های حاوی لغات رو از تولید کننده ها بخرید ولی ارزشش رو داره.
-
البته ایده های بسیاری هست که باید تمرکز کرد روی برنامه نویسی و طراحی.
-
امیدوارم انشاء ا... با تلاش و مشورت راه براتون باز بشه. بازم سوالی بود بپرسید


خرید آموزش b4a فارسی با قیمت کم:
http://gameover.blog.ir/1395/04/03/%DA%A9%D8%AA%D8%A7%D8%A8-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D8%A7%D9%85%D9%88%D8%B2%D8%B4-b4a-%D8%B3%D8%A7%D8%AE%D8%AA-%DA%AF%DB%8C%D9%85-%D8%A2%D9%88%D8%B1
موافقین ۰ مخالفین ۰ ۹۴/۰۷/۰۶
مدیرکل

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی