الاتصال بقاعدة البيانات في الاندرويد android studio sqlite


كحال اي مشروع الكتروني للاتصال بقاعدة البيانات في الاندرويد لابد من تعلم لغة sql  و يعتمد الاندرويد حتى الان على sqlite  كقاعدة بيانات و من تعامل مسبقا مع php  التي تعتمد على mysqlite فستكون الامور مختلفة بعض الشيء لذا في هذا الدرس سنتطرق الى كيفية الاتصال بقاعدة البيانات داخلية في الاندرويدـ android studio اي مصحوبة مع التطبيق لان اغلب التطبيقات تعمل offline .
اول ما سنقوم به هو انشاء قاعدة بيانات من خلال برنامج db browser for sqlite وقم بتحميل هذا الملف
تقوم بتنصيب البرنامج بعدها تفتح الملف الذي حملته .

1-اضافة عمود جديد
2-حفظ التغييرات
3-تطبييق التغييرات مهم جدا قد تخسر التغييرات ان لم تضغط عليه
4ـ اسم الجدول.
ننتقل الان الى android studio
نقوم بانشاء مجلد اسمه assets

بعد ذالك ننقل ملف database الى المجلد و نضغط على الزر الايمن ثم Paste.
الان قطعت نصف الطريق
نقوم بفتح نافدة جديدة تكون هكذا تعرض الاسماء و كلمات المرور و البريد الالكتروني في قاعدة البيانات .
ملف xml
<relativelayout
 android:layout_height="match_parent" 
 android:layout_width="match_parent" 
 android:paddingbottom="@dimen/activity_vertical_margin"
 android:paddingleft="@dimen/activity_horizontal_margin"
 android:paddingright="@dimen/activity_horizontal_margin"
 android:paddingtop="@dimen/activity_vertical_margin"
 tools:context="com.learnmore.androidbella.ScrollLayout"
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools">
  
    <linearlayout android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:orientation="vertical"/>
  
        <textview android:id="@+id/textView2"
             android:layout_height="wrap_content"
             android:layout_width="wrap_content"
             android:text="Large Text"
             android:textappearance="?android:attr/textAppearanceLarge"/>
  
</relativelayout>
بعدها نقوم انشاء كلاس جديد
اذهب الى مجلد java واضغط على زر الفارة الايمن ثم new =>java class
تقوم باعطاءه اسم  dbase
ننسخ الكود التالي
package com.learnmore.androidbella;
 
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
 
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
 
/**
 * Created by ismailbella on 11/4/2016.
 */
//الكلاس برت كلاس خاص بفتح قاعدة البيانات
public class dbase extends SQLiteOpenHelper {
    String DB_PATH = null;
    //اسم ملف قاعدة البيانات
    private static String DB_NAME = "DOROS.db";
    private SQLiteDatabase db;
    private final Context myContext;
    public dbase(Context context) {
        super(context, DB_NAME, null, 10);
        this.myContext = context;
        this.DB_PATH = "/data/data/" + context.getPackageName() + "/" + "databases/";
        Log.e("Path 1", DB_PATH);
    }
 
 
    public void createDataBase() throws IOException {
        boolean dbExist = checkDataBase();
        if (dbExist) {
        } else {
            this.getReadableDatabase();
            try {
copyDataBase();
            } catch (IOException e) {
                throw new Error("Error copy database");
            }
        }
    }
 
    private boolean checkDataBase() {
        SQLiteDatabase checkDB = null;
        try {
            String myPath = DB_PATH + DB_NAME;
            checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
        } catch (SQLiteException e) {
        }
        if (checkDB != null) {
            checkDB.close();
        }
        return checkDB != null ? true : false;
    }
 
    private void copyDataBase() throws IOException {
        InputStream myInput = myContext.getAssets().open(DB_NAME);
        String outFileName = DB_PATH + DB_NAME;
        OutputStream myOutput = new FileOutputStream(outFileName);
        byte[] buffer = new byte[10];
        int length;
        while ((length = myInput.read(buffer)) > 0) {
            myOutput.write(buffer, 0, length);
        }
        myOutput.flush();
        myOutput.close();
        myInput.close();
 
    }
 
    public void openDataBase() throws SQLException {
        String myPath = DB_PATH + DB_NAME;
        db = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
 
    }
 
    @Override
    public synchronized void close() {
        if (db != null)
            db.close();
        super.close();
    }
 
 
    @Override
    public void onCreate(SQLiteDatabase db) {
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        if (newVersion > oldVersion)
            try {
                copyDataBase();
            } catch (IOException e) {
                e.printStackTrace();
 
            }
    }
    //الاستعلام
    public Cursor query(String table, String selection) {
        return db.query(table, null, selection, null, null, null, null);
    }
 
}
داخله
اقوم بالذهاب الى ملف الجافا المرتبط بالنافدة الاولى
و انسخ الكود المبين
package com.learnmore.androidbella;
 
import android.database.Cursor;
import android.database.SQLException;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
 
import java.io.IOException;
 
public class ScrollLayout extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.scroll_layout);
        //استدعاء الكلاس
        dbase myDbHelper = new dbase(this);
        try {
            myDbHelper.createDataBase();
        } catch (IOException ioe) {
            throw new Error("Unable to create database");
        }
        try {
            myDbHelper.openDataBase();
        } catch (SQLException sqle) {
            throw sqle;
        }
 
 
            //اسم الجدول
        //يمكنك تغيير null الى الشرط الذي ترغب فيه
        Cursor d = myDbHelper.query("user",null);
        TextView near=(TextView) findViewById(R.id.textView2);
        try {
//اخد اول قيمة
            if (d.moveToFirst()) {
                do {
                    //جلب البيانات و وضعها
                    //getstring (1) ==اجلب القيمة الثانية من العمود المختار
                near.setText("name : "+d.getString(1)+" email : "+d.getString(2)+" password "+d.getString(3));
                    //المرور الى التالية
                    } while (d.moveToNext());
            }
        }catch (Exception e){
            Toast.makeText(getApplicationContext(),"probleme",Toast.LENGTH_LONG).show();
        }
 
 
 
    }
    }

هل ترغب في مثل هذه التدوينات

اسماعيل ايت بلا

ببساطة ارغب في تجربة جديدة من التعلم من خلال مشاركة ما تعلمه يجبرني ذلك على البحث لمدة طويلة مما يجعل الموقع جديرا بالثقة

اترك لنا تعليقا

الاشتراك بالقائمة البريدية

توصل باحدث مواضيعنا و كن على اطلاع باخر اخبار وتقنيات الاندرويد