رفتن به مطلب

آموزش استفاده از دیتابیس آفلاین در اندروید استودیو


امین شاهدی

ارسال‌های توصیه شده

با سلام ، این آموزش راجع به استفاده از دیتابیس Sqlite در اندروید استودیو که خیلی راحت با استفاده از کتابخونه SQLiteAssetHelper و کلسی که نوشتم میتونین به راحتیه b4a از دیتابیس استفاده کنین ، 

امیدوارم که مفید بوده باشه 
 
دانلود 31mb
 
 
 
 
(آموزش بعدی ساخت ArrayAdapter و لیست ویو به شکل دلخواه)

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • پاسخ 41
  • ایجاد شده
  • آخرین پاسخ

خسته نباشی امین جان

شخصا خیلی منتظر این آموزش بودم

آموزش بعدی همون ArrayAdapter رو هم که حله  :crazy:  ان شالله بعدی ترش  :dance:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 2 ماه بعد...

دوست عزیز من از این آموزش استفاده کردم ولی وقتی روی اکتیویتی مورد نظر کلیک میکنم که لیت ویو رو نشون بده برنامه stop میشه و میاد بیرون؟

مشکل از کجاست؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

دوست عزیز من از این آموزش استفاده کردم ولی وقتی روی اکتیویتی مورد نظر کلیک میکنم که لیت ویو رو نشون بده برنامه stop میشه و میاد بیرون؟

مشکل از کجاست؟

 

دوست عزیز کد + ارورتون در پنجره Android Monitor رو قرار بدید ؟ :S

لینک ارسال
به اشتراک گذاری در سایت های دیگر

این ارور هست:
 
01-31 11:20:16.225 28864-28864/ir.kazeroonkadeh.kazeroon E/AndroidRuntime: FATAL EXCEPTION: main
                                                                           java.lang.RuntimeException: Unable to start activity ComponentInfo{ir.kazeroonkadeh.kazeroon/ir.kazeroonkadeh.kazeroon.HelpActivity}: java.lang.NullPointerException
                                                                               at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2372)
                                                                               at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2424)
                                                                               at android.app.ActivityThread.access$600(ActivityThread.java:169)
                                                                               at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1388)
                                                                               at android.os.Handler.dispatchMessage(Handler.java:107)
                                                                               at android.os.Looper.loop(Looper.java:194)
                                                                               at android.app.ActivityThread.main(ActivityThread.java:5433)
                                                                               at java.lang.reflect.Method.invokeNative(Native Method)
                                                                               at java.lang.reflect.Method.invoke(Method.java:525)
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:924)
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:691)
                                                                               at dalvik.system.NativeStart.main(Native Method)
                                                                            Caused by: java.lang.NullPointerException
                                                                               at ir.kazeroonkadeh.kazeroon.HelpActivity.onCreate(HelpActivity.java:21)
                                                                               at android.app.Activity.performCreate(Activity.java:5179)
                                                                               at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1146)
                                                                               at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2336)
                                                                               at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2424) 
                                                                               at android.app.ActivityThread.access$600(ActivityThread.java:169) 
                                                                               at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1388) 
                                                                               at android.os.Handler.dispatchMessage(Handler.java:107) 
                                                                               at android.os.Looper.loop(Looper.java:194) 
                                                                               at android.app.ActivityThread.main(ActivityThread.java:5433) 
                                                                               at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                               at java.lang.reflect.Method.invoke(Method.java:525) 
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:924) 
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:691) 
                                                                               at dalvik.system.NativeStart.main(Native Method) 
01-
 
 
 
 
 
اینم کر کلاس دیتابیس
package ir.kazeroonkadeh.kazeroon;

import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteQueryBuilder;

import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
                                        //Amin Shahedi
                                        //AnswerCenter.ir
public class MyDatabase extends SQLiteAssetHelper {
    // esme database (bayad tuye folder Assets va foldere databases zakhire shode bashe)
    // mesal : assets/databases/test.db    ~>    private static final String DATABASE_NAME = "test.db";
    private static final String DATABASE_NAME = "kazeroondb.db";
    //versione morede nazar (baraye dadan update be barname
    //dar surati ke database qablan copy shode bashe va version yeksan bashe dg copy nemishe.
    //dar surati ke database qablan copy shode bashe va version ro balatar bedin db dobare copy mishe.
    private static final int DATABASE_VERSION = 1;

    public MyDatabase(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);

        // Shoma mitunin ye constructor jadid baraye addrese delkhahe db ezafe konid
        // mesl ye folder dar SD cart (be surate pishfarz tuye DirInternal zakhire mishe)
        // hatman motmaen bashin ke folder vojud dashte bashe va dastrasiharo ezafe karde bashin (dastrasi be SD card)
        // bad mitunin be surate zir constructor super ro be shekle zir taqir bedin
        //super(context, DATABASE_NAME, context.getExternalFilesDir(null).getAbsolutePath(), null, DATABASE_VERSION);


    }

    public List<String> getListOfRow(String query,String columnName) {
        //query mesle : "SELECT * FROM data"
        SQLiteDatabase sql = this.getWritableDatabase();
        Cursor c = sql.rawQuery(query, null);
        final List<String> list = new ArrayList<String>();
        try {
            while(c.moveToNext()) {
                list.add(c.getString(c.getColumnIndex(columnName)));
            }
        } finally {
            c.close();
        }
        return list;
    }

    /**
     *
     * @param query
     * @param columnName
     * @return
     */
    public String getString(String query,String columnName) {
        //query mesle : "SELECT * FROM data"
        SQLiteDatabase sql = this.getWritableDatabase();
        Cursor c = sql.rawQuery(query, null);
        c.moveToFirst();
        return c.getString(c.getColumnIndex(columnName));

    }
    public int getInt(String query,String columnName) {
        //query mesle : "SELECT * FROM data"
        SQLiteDatabase sql = this.getWritableDatabase();
        Cursor c = sql.rawQuery(query, null);
        c.moveToFirst();
        return c.getInt(c.getColumnIndex(columnName));
    }
    public void Querry(String query) {
        SQLiteDatabase sql = this.getWritableDatabase();
        sql.execSQL(query);
    }
    public byte[] getBlob(String query,String columnName) {
        SQLiteDatabase sql = this.getWritableDatabase();
        Cursor c = sql.rawQuery(query, null);
       return c.getBlob(c.getColumnIndex(columnName));
    }
public int getRowCount(String query){
    SQLiteDatabase sql = this.getWritableDatabase();
    Cursor c = sql.rawQuery(query, null);
    return c.getCount();
}
    public int getColumnCount(String query){
        SQLiteDatabase sql = this.getWritableDatabase();
        Cursor c = sql.rawQuery(query, null);
        return c.getColumnCount();
    }



}

اینم کد اکتیویتی

 MyDatabase db=new MyDatabase(this);
         TextView tv= (TextView) findViewById(R.id.tv1);
        tv.setText(db.getString("SELECT * FROM tbl_historical_place WHERE id=1","name"));
لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام عزیزم

اروری که بهتون میده، بیشتر وقتی اتفاق میافته که شما دیتایی رو پیدا نمیکنید

یعنی کوئریتون چیزی پیدا نکرده اصلا..

یه چکش بکنید :fekr:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

دوست عزیز چک کردم اطلاعات درست بودن و دیتا هم توی اون جدول با id شماره یک وجود داره
من متد getstring رو که صدا میزنم به تنهایی برنامه اروری نمیده

 MyDatabase db=new MyDatabase(this);
         TextView tv= (TextView) findViewById(R.id.tv1);
        db.getString("SELECT * FROM tbl_historical_place WHERE id=1","name");

ولی وقتی به تکت ویو نسبتش میدم و میگم settext کنه ارور میده وگرنه توی toast هم نشون میده

 Toast.makeText(HelpActivity.this,db.getString("SELECT * FROM tbl_historical_place WHERE id=1", "name"),Toast.LENGTH_SHORT).show();
لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 4 هفته بعد...

متد setText رو درست صدا میزنین ؟ اینجوری :

tv.setText(db.getString("SELECT * FROM tbl_historical_place WHERE id=1","name"));
لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 3 ماه بعد...

سلام دوستان

من میخوام یکی از سطرها رو از دیتابیس حذف کنم

یه LongClickListener تعریف کردم که دیالوگ بده و اگه Positive رو انتخاب کنه بیاد و سطر رو پاک کنه

خوب حالا من چطوری میتونم بگم این سطر رو پاک کن؟

تو b4a با کورسور موقعیتشو میگرفتیم و میگفتیم با ایدی پاک کن

ممنون میشم کمکم کنید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

querry ها که نوی جاوا و b4a فرقی نمیکنه شما میاین querry رو اجرا میکنین و حذف میکنین دیگه 

        int position = ... ;
        myDatabase.Querry("DELETE FROM table WHERE ID = "+position);
لینک ارسال
به اشتراک گذاری در سایت های دیگر

بازم سلام داداش

من با پوزیشن گرفتن تونستم ببرمش تو یه اکتیویتی دیگه برای ویرایش

حالا همه چی درسته فقط واسه آپدیت مقادیر کد زیر رو استفاده میکنم گیر میده

مشکل از کجاست ؟ کد اشتباهه؟ :sorry:  :53:

mydb.Querry("UPDATE memo SET subject="+getsubj +",text="+gettext +"WHERE id="+poset);
لینک ارسال
به اشتراک گذاری در سایت های دیگر

اشتباهه دوست عزیز درستش بشکل زیر هست

mydb.Querry("UPDATE memo SET subject='"+getsubj +"',text='"+gettext +"' WHERE id="+poset);
	
لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 1 ماه بعد...

سلام ،

دوستان عزیز اگر مانند بنده به مشکل no such table برخوردید « ابتدا فایل Apk برنامه رو از روی دیوایس مورد نظر حذف کنید. بعد دیتابیسی که داخل پوشه asset/databases قرار دادید رو حذف کنید و دوباره کپی کنید.  »

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 4 ماه بعد...

سلام دوستان 

استاد شاهدی ممنون از این اموزش و ببخشید که تاژیک قدیمی رو بروز کردم

من برناممو با این روند ساختم و هیچ مشکلی هم نبود اما حالا که میخوام برناممو اپدیت کنم  طبق گفته خودتون version  رو تغییر میدم ووقتی برنامه رو اجرا میکنم فورس کلوز میده

Caused by: com.readystatesoftware.sqliteasset.SQLiteAssetHelper$SQLiteAssetException: no upgrade script path from 2 to 3

این هم ارور لاگ کت

خواهش میکنم اساتید و دوستان کمکم کنند چون اگه مشکل بر طرف نشه 20 هزار کاربرامو از دست میدم

پیشاپیش ممنون از کمک هاتون:53::53:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام دوستان کسی نبود به من کمک کنه ؟؟؟

استاد ایزدی.استاد شاهدی ،....

لطفا کمک کنید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

چطوری این دیتابیس رو اپگرید کنم طوری که کاربر مجبور نشه  برنامه رو پاک کنه؟؟؟؟؟؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 3 ماه بعد...

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

تصویر زیر:

error.jpg

لینک ارسال
به اشتراک گذاری در سایت های دیگر

گریدل که حتما باید رو آنلاین باشه

شما از jcenter استفاده میکنید؟

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

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

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • اضافه کردن...