رفتن به مطلب

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


امین شاهدی

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

  • 2 هفته بعد...
  • پاسخ 41
  • ایجاد شده
  • آخرین پاسخ

سلام آموزش خوبی بود،اما برای سرچ این کد رو میزنم و برنامه stop میشه

اسم رو از یه textbox میگیره و نتیجه در یک textview نمایش میده ، دو نوع کد زدم واسش اما هر دو ارور داد


 
        txtsv.setText(db.getString("SELECT * FROM database WHERE name LIKE'%"+txts,"name"));
        db.Querry("SELECT * FROM database WHERE name LIKE'%"+txts);

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

در 12 دقیقه قبل، t0p گفته است :

سلام آموزش خوبی بود،اما برای سرچ این کد رو میزنم و برنامه stop میشه

اسم رو از یه textbox میگیره و نتیجه در یک textview نمایش میده ، دو نوع کد زدم واسش اما هر دو ارور داد



 

        txtsv.setText(db.getString("SELECT * FROM database WHERE name LIKE'%"+txts,"name"));
        db.Querry("SELECT * FROM database WHERE name LIKE'%"+txts);


 

 

Select * From memo Where Subject Like '%"+SearchText+"%'","subject")

درستش اینطوریه داداش

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

در در 1396/02/13, 20:34:31، Gray Mind گفته است :

 


Select * From memo Where Subject Like '%"+SearchText+"%'","subject")

درستش اینطوریه داداش

بله ناقص بود ،تشکر

 

حالا اگر سرچ با Edittxt باشه و در Listview نمایش نتایج باشه این کد رو میزنم اما نه خطا داره و نه اجرا میشه مشکل چیه؟

 ArrayAdapter adapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,db.getListOfRow("SELECT * FROM tbl WHERE name LIKE'%"+txtsearch+"%'","farsi"));
      lists.setAdapter(adapter);

 

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

در 9 دقیقه قبل، t0p گفته است :

بله ناقص بود ،تشکر

 

حالا اگر سرچ با Edittxt باشه و در Listview نمایش نتایج باشه این کد رو میزنم اما نه خطا داره و نه اجرا میشه مشکل چیه؟


 ArrayAdapter adapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,db.getListOfRow("SELECT * FROM tbl WHERE name LIKE'%"+txtsearch+"%'","farsi"));
      lists.setAdapter(adapter);

 

خود کد درسته و مشکلی نیست

احتمالا کد رو جای اشتباهی گذاشتی یا چیزی

این یه نمونه هستش که میتونی با یکم ویرایش کدتو درست کنی

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search);
       
        
        final EditText edsearch=(EditText)findViewById(R.id.searched);
        edsearch.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                mydb = new MyDatabase(Search.this);
                MainListView = (ListView)findViewById(R.id.lvsearch);
                String SearchText = edsearch.getText().toString();
                MainListAdapter = new ArrayAdapter(Search.this,android.R.layout.simple_list_item_1,mydb.getListOfRow("Select * From memo Where Subject Like '%"+SearchText+"%'","subject"));
                MainListView.setAdapter(MainListAdapter);

              
            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });
    }

 

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

در 3 ساعت قبل، Gray Mind گفته است :

خود کد درسته و مشکلی نیست

احتمالا کد رو جای اشتباهی گذاشتی یا چیزی

این یه نمونه هستش که میتونی با یکم ویرایش کدتو درست کنی


@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search);
       
        
        final EditText edsearch=(EditText)findViewById(R.id.searched);
        edsearch.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                mydb = new MyDatabase(Search.this);
                MainListView = (ListView)findViewById(R.id.lvsearch);
                String SearchText = edsearch.getText().toString();
                MainListAdapter = new ArrayAdapter(Search.this,android.R.layout.simple_list_item_1,mydb.getListOfRow("Select * From memo Where Subject Like '%"+SearchText+"%'","subject"));
                MainListView.setAdapter(MainListAdapter);

              
            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });
    }

 

 String SearchText = edsearch.getText().toString();

این کد مهم رو نزده بودم

درست شد ،ممنون

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

  • 1 ماه بعد...

با سلام

جناب شاهدی من این آموزش و همینطور آموزش ریسایکلرویو رو دیدم ولی نتونستم اطلاعات دیتابیس رو توی ریسایکلر ویو نمایش بدهم.اگر امکان داره یک آموزش درباره این موضوع درست کنید چون بنظرم خیلی کاربرد داره.ممنون

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

سلام دوستان ، یک مشکلی دارم اینجا

 

وقتی که میخام اطلاعات رو فراخوانی کنم این ارور رو میده :

 

06-24 21:19:29.626 21435-21435/ir.emskk E/AndroidRuntime: FATAL EXCEPTION: main
                                                        Process: ir.emskk, PID: 21435
                                                        java.lang.RuntimeException: Unable to start activity ComponentInfo{ir.ems/ir.emskk.StartMission2Activity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.database.sqlite.SQLiteDatabase.getVersion()' on a null object reference
                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
                                                            at android.app.ActivityThread.-wrap12(ActivityThread.java)
                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
                                                            at android.os.Handler.dispatchMessage(Handler.java:102)
                                                            at android.os.Looper.loop(Looper.java:154)
                                                            at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                            at java.lang.reflect.Method.invoke(Native Method)
                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
                                                         Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.database.sqlite.SQLiteDatabase.getVersion()' on a null object reference
                                                            at com.readystatesoftware.sqliteasset.SQLiteAssetHelper.getWritableDatabase(SQLiteAssetHelper.java:178)
                                                            at ir.ems.SelectCitySQLite.getListOfRow(SelectCitySQLite.java:26)
                                                            at ir.ems.StartMission2Activity.onCreate(StartMission2Activity.java:27)
                                                            at android.app.Activity.performCreate(Activity.java:6720)
                                                            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 
                                                            at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 
                                                            at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                            at android.os.Looper.loop(Looper.java:154) 
                                                            at android.app.ActivityThread.main(ActivityThread.java:6119) 
                                                            at java.lang.reflect.Method.invoke(Native Method) 
                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 

میگه که ورژن دیتابیس null هست اما من اون رو روی 1 گذاشتم توی کلاس MySQLiteDatabase 

 

لطفا دوستان راهنمایی کنید.

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

  • 1 ماه بعد...
در 36 دقیقه قبل، mahdi0020 گفته است :

سلام.

 

این کلاس میتونه به دیتابیس چیزی اضافه کنه؟

 

 

بله عزیز
اضافه ویرایش حذف ساخت دیتابیس و... همه کاری میتونید انجام بدید

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

Mydatabase mydb = new MyDatabase(this);
mydb.Querry("INSERT INTO table_name (column1,column2) VALUES ('" + text1.gettext.tostring() + "','" + text2.gettext.tostring() + "');

بجای table_name اسم تیبل

بجای column ستون های که میخواید اطلاعات رو واردش کنید

در آخر هم متنی که میخواید واردش کنید

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

در 19 دقیقه قبل، Gray Mind گفته است :

Mydatabase mydb = new MyDatabase(this);
mydb.Querry("INSERT INTO table_name (column1,column2) VALUES ('" + text1.gettext.tostring() + "','" + text2.gettext.tostring() + "');

بجای table_name اسم تیبل

بجای column ستون های که میخواید اطلاعات رو واردش کنید

در آخر هم متنی که میخواید واردش کنید

از اخرای query که متن ها رو میگیره ارور میگیره.

 

الان شما کدی بدین که یک متن مشخص رو وارد دیتابیس بکنه.

 

ممنون...

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

در ۱ ساعت قبل، Gray Mind گفته است :

Mydatabase mydb = new MyDatabase(this);
mydb.Querry("INSERT INTO table_name (column1,column2) VALUES ('" + text1.gettext.tostring() + "','" + text2.gettext.tostring() + "');

بجای table_name اسم تیبل

بجای column ستون های که میخواید اطلاعات رو واردش کنید

در آخر هم متنی که میخواید واردش کنید

شما خودتون قطعه کدتون رو تست کنید،ببینید مشکلی نداره؟؟

برای من مشکل داره.

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

در 1 ساعت قبل، mahdi0020 گفته است :

شما خودتون قطعه کدتون رو تست کنید،ببینید مشکلی نداره؟؟

برای من مشکل داره.

یه پرانتز کم داره هموطن

کدو کپی نکنید، خودتون بنویسید

Mydatabase mydb = new MyDatabase(this);
mydb.Querry("INSERT INTO table_name (column1,column2) VALUES ('" + text1.getText.toString() + "','" + text2.getText.toString() + "')");

وقتی هم میگید ارور داره یا مشکل داره، بگید مشکلش رو ، ک راهنماییتون کنیم عزیز دلم

شاد باشید

 

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

  • 3 ماه بعد...
در 7 ساعت قبل، modares گفته است :

سلام دوستان من توی لود دیتابیس به این مشکل برخوردم لطقا کمکم کنید

باتشکر  این هم لینک

توی asset فایل دیتابیس رو گذاشتید؟!

خطا میگه نمیتونه به فایل test.db متصل بشه:fekr:

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

  • 3 ماه بعد...

اگر بخواهیم دو یا چند ستون از جدول در لیست ویو نمایش داده شود کد ها به چه صورت میشود؟

طبق این کد فقط یک ستون از جدول قابل نمایشه

با تشکر

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

در 18 ساعت قبل، t0p گفته است :

اگر بخواهیم دو یا چند ستون از جدول در لیست ویو نمایش داده شود کد ها به چه صورت میشود؟

طبق این کد فقط یک ستون از جدول قابل نمایشه

با تشکر

واسه اینکار شما میای و یه کلاس مدل میسازی برای مثال :

public class ContactModel {
    private int id ;
    private String Name;
    private String Number;
    private String Photo_Uri;

    public void setId(int id) {
        this.id = id;
    }

    public void setName(String name) {
        Name = name;
    }

    public void setNumber(String number) {
        Number = number;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return Name;
    }

    public void setPhoto_Uri(String photo_Uri) {
        Photo_Uri = photo_Uri;
    }

    public String getPhoto_Uri() {
        return Photo_Uri;
    }

    public String getNumber() {
        return Number;
    }
}

 

خوب برای نمونه من کدای مدل مخاطبین خودمو گذاشتم

حالا توی کلاس دیتابیستون یه متد میسازی و از نوع جنریک ArrayList که میگیم تو هر سطر لیستمون آبجکت هایی داریم از نوع کلاس مدل مخاطبینمون و بعد مثل کد زیر یه شی از کلاس مدل میسازیم و مقادیر رو با ستر ها توی حلقه ست میکنیم و در آخر به لیستمون اضافه ش میکنیم  :

public ArrayList<ContactModel> getBlackList(){
        ArrayList<ContactModel> list = new ArrayList<>();
        Cursor cursor = sql.rawQuery("select * from blacklist",null);
        while (cursor.moveToNext()){
            CallBlockWhiteBlackListModel model = new CallBlockWhiteBlackListModel();
            model.setId(cursor.getInt(cursor.getColumnIndex("id")));
            model.setName(cursor.getString(cursor.getColumnIndex("name")));
            model.setNumber(cursor.getString(cursor.getColumnIndex("number")));
            model.setPhoto_Uri(cursor.getString(cursor.getColumnIndex("photo_uri")));
            list.add(model);
        }
        return list;
    }

 

همین 

موفق باشی:53:

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

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

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

 MyDatabase db=new MyDatabase(this);
         Toast.makeText(MainActivity.this,db.getString
                 ("SELECT * FROM words WHERE id=10", "en_word"),Toast.LENGTH_SHORT).show();


ارور

03-30 10:27:13.227 5091-5091/? E/AndroidRuntime: in writeCrashedAppName, pkgName :cqq2.xample.edik.squiltest3
03-30 10:27:13.227 5091-5091/? D/AndroidRuntime: file written successfully with content: cqq2.xample.edik.squiltest3 StringBuffer : ;cqq2.xample.edik.squiltest3
03-30 10:27:13.227 5091-5091/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                 Process: cqq2.xample.edik.squiltest3, PID: 5091
                                                 java.lang.RuntimeException: Unable to start activity ComponentInfo{cqq2.xample.edik.squiltest3/cqq2.xample.edik.squiltest3.MainActivity}: com.readystatesoftware.sqliteasset.SQLiteAssetHelper$SQLiteAssetException: no upgrade script path from 3 to 1
                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
                                                     at android.app.ActivityThread.access$800(ActivityThread.java:135)
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
                                                     at android.os.Handler.dispatchMessage(Handler.java:102)
                                                     at android.os.Looper.loop(Looper.java:136)
                                                     at android.app.ActivityThread.main(ActivityThread.java:5021)
                                                     at java.lang.reflect.Method.invokeNative(Native Method)
                                                     at java.lang.reflect.Method.invoke(Method.java:515)
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)
                                                     at dalvik.system.NativeStart.main(Native Method)
                                                  Caused by: com.readystatesoftware.sqliteasset.SQLiteAssetHelper$SQLiteAssetException: no upgrade script path from 3 to 1
                                                     at com.readystatesoftware.sqliteasset.SQLiteAssetHelper.onUpgrade(SQLiteAssetHelper.java:314)
                                                     at com.readystatesoftware.sqliteasset.SQLiteAssetHelper.getWritableDatabase(SQLiteAssetHelper.java:197)
                                                     at cqq2.xample.edik.squiltest3.MyDatabase.getString(MyDatabase.java:57)
                                                     at cqq2.xample.edik.squiltest3.MainActivity.onCreate(MainActivity.java:21)
                                                     at android.app.Activity.performCreate(Activity.java:5397)
                                                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1090)
                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
                                                     at android.app.ActivityThread.access$800(ActivityThread.java:135) 
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
                                                     at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                     at android.os.Looper.loop(Looper.java:136) 
                                                     at android.app.ActivityThread.main(ActivityThread.java:5021) 
                                                     at java.lang.reflect.Method.invokeNative(Native Method) 
                                                     at java.lang.reflect.Method.invoke(Method.java:515) 
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827) 
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643) 
                                                     at dalvik.system.NativeStart.main(Native Method) 

 

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

بایگانی شده

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

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

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