السلام عليكم ورحمة الله وبركاته
SqlLite Database هي عبارة عن قاعدة بيانات تكون داخل التطبيق يمكنك ستخدامها كما تستخدم اي نوع من انواع قواعد البيانات و لكن هي بشكل مصغر ----
الدرس هو عبارة عن قاعدة بيانات مكتبة بداخلها جدول الكتب فقط
في البداية نقوم بعمل class Book حتي يساعدنا
بعد ذالك نقوم بإنشاء class DatabaseHandler و هو الذي يدير لنا قاعدة البيانات و يقوم بعمليات الإضافة و الحذف و التعديل و جلب القيم وهذا class يرث من SQLiteOpenHelperpackage 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() {}}
يتكون من الحقول التالية
// 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();
}
}
ليست هناك تعليقات:
إرسال تعليق