المواضيع

SqlLite & Android

السلام عليكم ورحمة الله وبركاته

SqlLite  Database  هي عبارة عن  قاعدة بيانات تكون داخل التطبيق    يمكنك ستخدامها  كما تستخدم اي نوع من انواع قواعد البيانات  و لكن هي بشكل مصغر   
----
الدرس هو عبارة عن قاعدة بيانات  مكتبة  بداخلها جدول الكتب فقط 
في البداية نقوم بعمل class  Book      حتي يساعدنا  
package tk.ameral.sqllite;
public class Book {
public int id;
public String title;
public String txt;
//
public Book(int id, String title, String txt) {
this.id = id;
this.title = title;
this.txt = txt;
}
public Book() {
}
}
بعد ذالك نقوم بإنشاء class  DatabaseHandler   و هو الذي يدير لنا قاعدة البيانات  و يقوم بعمليات الإضافة و الحذف و التعديل و جلب القيم       وهذا  class  يرث من  SQLiteOpenHelper  
يتكون من الحقول التالية 
// All Static variables
// اصدار قاعدة البيانات   و يكون رقم اكبر من صفر
private static final int DATABASE_VERSION = 1;

// اسم قاعدة البيانات
private static final String DATABASE_NAME = "BooksDB";

//اسم جدول الكتب في قاعدة البيانات
private static final String TABLE_BOOKS = "Books";

//  اسماء الحقول التي بداخل جدول  Books
private static final String KEY_ID = "id";
private static final String KEY_TITLE = "title";
private static final String KEY_Txt = "txt";
// عبارة عن مصفوفة من نوع Book  التي سنضع فيها الكتب المرجعة من قاعدة البيانات

private final ArrayList<Book> books_list = new ArrayList<Book>();

سأقوم بشرح الدوال التي بداخله كل واحدة علي حده   
-----------الدوال الأساسية-----------
1- بناء  وهي دالة تحمل نفس اسم class  و وظيفتها هنا انها تقوم  بعمل  بالتعامل مع قاعدة البيانات و وضعها من ضمن ملفات التطبيق من خلال  Context   !!!   لا تقوم بالتعديل عليها غالبا تكون كماهي 
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

2- onCreate   هي عبارة عن دالة ستدعي مرة واحدة فقط     و  غالبا ما يوضع فيها  كود sql لإنشاء جدول 
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_BOOKS_TABLE = "CREATE TABLE " + TABLE_BOOKS + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_TITLE + " TEXT,"
+ KEY_Txt + " TEXT)";
            db.execSQL(CREATE_BOOKS_TABLE);
}
3-onUpgrade    هي عبارة عن  دالة تستدعي عند تغيير اصدار قاعدة البيانات  و تستخدم عند التعديل علي الجداول في قاعدة البيانات  
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_BOOKS);

// Create tables again
onCreate(db);
}
---------------------------الدوال المختصة ---------------------------------
1- دالة الإضافة في قاعدة البيانات addBook

public void addBook(Context cx, Book ff) {

        ContentValues values = new ContentValues();
        values.put(KEY_ID ,ff.id);
        values.put(KEY_TITLE, ff.title);
        values.put(KEY_Txt, ff.txt);
        SQLiteDatabase db = this.getWritableDatabase();
        db.insert(TABLE_BOOKS, null, values);
        
        db.close();
        Toast.makeText(cx, "add OK", Toast.LENGTH_LONG);
}

دالة الحذف في قاعدة البيانات من خلال id
public void deleteBooK(int id) {
String query = "delete  FROM " + TABLE_BOOKS + " WHERE " + KEY_ID + " ="+id;

SQLiteDatabase db = this.getWritableDatabase();
db.execSQL(query);
}

3-get_All_Books  دالة تقوم بإرجاع  جميع الكتب الموجودة في جدول الكتب  في مصفوفة 
ملاحظة يتم جلب القيم في الجداول من خلال رقم الحقل   في الجدول   مثلا الحقل id  رقمه 0 و  title رقمه  1   و هكذا ...
public ArrayList<Book> get_All_Books() {
try {
books_list.clear();

// Select All Query
String selectQuery = "SELECT  * FROM " + TABLE_BOOKS + " ";
Log.d("get_Category_Books: ",selectQuery);

SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);

// looping through all rows and adding to list
//ملاحظة يتم جلب القيم في الجداول من خلال رقم الحقل   في الجدول 
if (cursor.moveToFirst()) {
do {
Book book = new Book(Integer.parseInt(cursor.getString(0)),cursor.getString(1),cursor.getString(2));
// Adding contact to list
books_list.add(book);
} while (cursor.moveToNext());
}

// return contact list
cursor.close();
db.close();
return books_list;
} catch (Exception e) {
// TODO: handle exception
Log.e("all_contact", "" + e);
}

return books_list;
}

-------------شرح استخدامها -------------------
في المثال التالي  تم استخدام  دالة الإضافة و دالة  العرض و دالة الحذف

package tk.ameral.sqllite;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import at.vcity.androidim.R;

public class MainActivty extends Activity {

private DatabaseHandler db;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.main);
db = new DatabaseHandler(getApplicationContext());
// insert in Book Table
Book bk = new Book();
bk.title = "test title";
bk.txt = "test test test ";
db.addBook(getApplicationContext(), bk);

// View all book in log
View_Data();

// Delet book row
// db.deleteBooK(1);

}

public void View_Data() {

ArrayList<Book> Derasat_data = new ArrayList<Book>();
Derasat_data.clear();

db = new DatabaseHandler(this);

ArrayList<Book> db_Array = db.get_All_Books();

for (int i = 0; i < db_Array.size(); i++) {

int idd = db_Array.get(i).id;
String title = db_Array.get(i).title;
String txt = db_Array.get(i).txt;// db_Array.get(i).txt;

Log.d("id =", "" + idd);
Log.d("Title =", "" + title);
Log.d("txt =", "" + txt);
}

db.close();

}
}

ليست هناك تعليقات:

إرسال تعليق

عرب رويد arabroid Designed by Templateism | MyBloggerLab Copyright © 2014

صور المظاهر بواسطة richcano. يتم التشغيل بواسطة Blogger.