تحديث قاعدة بيانات على الاندرويد ستوديو update database


السلام عليكم كما العادة فاننا نتناول مواضيع عن قواعد البيانات لما لها من اهمية في اي برنامج ايا كان و اليوم سنتحدث عن تحديث قواعد البيانات بطريقة بسيطة واليك روابط التدوينات السابقة الكتابة في قواعد البيانات على الاندرويد ستوديو و الاتصال بقاعدة البيانات في الاندرويد .

اولا سنقوم بفتح مشروع جديد تم نافدة جديدة ساترك الاسم كما هو Main Activity
يمكنك انشاء قاعدة بيانات جديدة وملئها بما تريد عبر برنامج sqllite db ثم تقوم بانشاء ملف Assest في مجلد res و نقوم بلصق قاعدة البيانات داخله
بعد ذلك نقوم بانشاء كلاس جديد نسميه dabase قم بنسخ الكود التالي اليه
dabase.class
public class dabase extends SQLiteOpenHelper {

    String DB_PATH = null;
    private static String DB_NAME = "dbfile.db";
    private SQLiteDatabase db;
    private final Context myContext;
    public dabase(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();
            this.getWritableDatabase();
            try {
                copyDataBase();
            } catch (IOException e) {
                throw new Error("Error copy database");
            }
        }
    }

    public boolean checkDataBase() {
        SQLiteDatabase checkDB = null;
        try {
            String myPath = DB_PATH + DB_NAME;
            checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
        } catch (SQLiteException e) {
        }
        if (checkDB != null) {
            checkDB.close();
        }
        return checkDB != null ? true : false;
    }

    public 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();

    }

    private void openDataBase() throws SQLException {
        String myPath = DB_PATH + DB_NAME;
        db = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);

    }
    @Override
    public synchronized void close() {
        if (db != null)
            db.close();
        super.close();
    }


    @Override
    public void onCreate(SQLiteDatabase db) {
    }
    public void getOpen(){
        openDataBase();
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        if (newVersion > oldVersion)
            try {
                copyDataBase();
            } catch (IOException e) {
                e.printStackTrace();

            }
    }
    public Cursor update(String table, int right,int id) {
        db.execSQL("UPDATE "+table+" SET true='"+right+"' WHERE id="+id+"");
        return null;
        }

}

ننتقل الى Main activity
وننقل الكود التالي
MainActivity.class

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        try
        {
            //database intialize
            dabase myDbHelper = new dabase(getApplicationContext());
            try {
                myDbHelper.getOpen();
            } catch (SQLException sqle) {
                throw sqle;
            }
            myDbHelper.update("table",1,2);
 
 
}catch (Exception e){}
هل ترغب في مثل هذه التدوينات

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

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

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

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

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