هم اکنون عضو شوید

ورود

فراموشی گذرواژه

گذروازه خود را فراموش کردید ؟

ورود

عضو شوید

با عضویت در سایت از امکانات فوق العاده بهرمنده خواهید شد.

دوره آموزش برنامه نویسی اندروید
اموزش sqlite در اندروید بخش پیشرفته

اموزش sqlite در اندروید بخش پیشرفته

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

خب برای اینکار ابتدا یک کلاس درست میکنیم که وظایف ان باز کردن یا ساختن و ارتقای ساختار دیتابیس ما است در اینجا نام این کلاس را MyDatabase قرار داده ایم:

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

و اما تابع اخر که وظیفه مهمی هم دارد اگر دیتابیس وجود داشت بررسی میکند که اگر ورژن ان بزرگتر از ورژن قبلی بود دیتابیس را upgrade میکند یعنی تغییرات را که در ان مینویسیم در دیتابیس ایجاد میکند.

حالا یک کلاس دیگر ایجاد میکنیم که کار های دیتابیس ما را انجام دهد همانطور که قبلا اینکار ها یعنی حذف بروز رسانی و ..را انجام میدادیم اینجا هم همینکار را میکنیم ولی بصورت تابع.پس هرجا احتیاج داشتیم از این توابع استفاده میکنیم.در اینجا نام این کلاس را DatabaseHelper قرار داده ایم:

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

تابع اخر هم برای خواندن اطلاعات است که نتایج را در ارایه ای به نام TableData قرار میدهد.چون اطلاعات جدول ما زیاد است همه را در ارایه قرار می دهیم برای اینکار باید یک کلاس TableData ایجاد کنیم که ان را میبینید.

به همین راحتی کار ما به پایان می رسد و میتوانیم هر جا که بخواهیم از دیتابیسمان استفاده کنیم.به مثال زیر توجه کنید :

برای گرفتم اطلاعات از جدول و نمایش ان از این کد استفاده می کنیم و یا برای بروزرسانی از کد زیر:

برای اضافه کردن اطلاعات هم از کد زیر:

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

امیدوارم این اموزش هم براتون مفید بوده باشه.

موفق باشید

درباره نویسنده

دانشجو نرم افزار هستم به زبان های برنامه نویسی و اندروید علاقه مند هستم.

نظرها ( ۱۲ )

  1. ۳۱, تیر , ۱۳۹۶ در ۱۰:۵۶ ق.ظ

    اگر دیتابیس ما دارای ده ها جدول با روابط چند به چند باشه چطوری میشه . شما اون بالا اولش اومدی ایدی و نام و سن را تعریف کردی .
    متد ها را کاش طوری تعریف می کردید که بشه کوئری بهش پاس داد

    • محمد حسین جعفری پور
      ۳۱, تیر , ۱۳۹۶ در ۱:۲۴ ب.ظ

      همین الان هم میشه query بهش پاس داد لطفا آموزش های قبل را مطالعه کنید.

      موفق و موید باشید.

  2. shahram
    ۱۰, اسفند , ۱۳۹۶ در ۱:۰۶ ب.ظ

    خسته نباشید . شما insert,update,select رو نوشتین ولی delete رو ننوشتین . میشه بنویسین کدش رو . ممنون

    • محمد حسین جعفری پور
      ۱۱, اسفند , ۱۳۹۶ در ۱:۴۵ ب.ظ

      سلام و درود از کد زیر استفاده کنید

      موفق باشید.

  3. سلام
    ۳۰, تیر , ۱۳۹۷ در ۶:۳۴ ب.ظ

    برای داشتن چند table باید چی کار کرد؟؟

    • محمد حسین جعفری پور
      ۳۰, تیر , ۱۳۹۷ در ۷:۰۵ ب.ظ

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

      موفق باشید.

  4. رضا
    ۳۰, مهر , ۱۳۹۷ در ۸:۳۴ ق.ظ

    سلام
    تشکر بسیار زیاد بابت سایت بینظیرتون
    بعد از اجرای این دستور
    new DatabaseHelper(MainActivity.this).insertToTable(1086, “sepehr”, 19);
    میخوام اطلاعات رو توی textview نمایش بدم.
    اما زمان استفاده از کد (گرفتن اطلاعات) حلقه for درست اجرا نمیشه یعنی وقتی حلقه for رو برمیدارم و (i) رو صفر میدم یک سطر برام نمایش داده میشه اما وقتی (i) رو مثلا ۱ میدم یا حلقه for میذارم برنامه stop میشه. ممنون میشم راهنمایی کنید.

  5. میلاد بخشی پور
    ۸, دی , ۱۳۹۷ در ۱۲:۰۳ ب.ظ

    با سلام
    به منظور نمایش تمامی مقادیر دیتابیس میبایست در انتهای حلقه ی while تابع getAllTable() از کلاس DatabaseHelper بعد از خط ۳۸ از دستور ‘i++’ استفاده کرد.
    تشکر بابتت این مطلب خوبتون

  6. ۲۸, تیر , ۱۳۹۸ در ۳:۳۳ ب.ظ

    ببخشید من بار اول که
    DatabaseHelper.TableData[] data = new DatabaseHelper(this).getAllTable();

    for(int i = 0; i < data.length; i++){
    myTextView.append("name: " + data[i].name + ", age: " + data[i].age );
    }
    رو میزارم و توش اطلاعات ذخیره میکنم درسته..
    بار دوم میندازه بیرون از برنامه..
    و اینکه من با

    new DatabaseHelper(MainActivity.this).insertToTable(1086, "sepehr", 19
    اطلاعات کد رو عوض میکنم باز هم قبلی هارو نمایش گیده و تغییر نمیکنند

  7. ۲۸, تیر , ۱۳۹۸ در ۴:۴۴ ب.ظ

    و اینکه من میخام توی یکی از ستون ها فقط یک مقدار ذخیره کنم
    و اون مقدار رو بتونم تغییر بدم..
    مثلا شرط بزارم اگر مقدار اون ستون ۱ بود یک کار انجام بده،اگر ۲ بود یک کار دیگه و ..

  8. ۵, اسفند , ۱۳۹۸ در ۱۱:۲۰ ق.ظ

    سلام.
    اگه Database ها یا Cursor ها را نبندیم چی فرقی میکنه؟
    اصلا چرا ببندیم؟