رفتن به مطلب

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


امین شاهدی

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

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

ارور

3-30 11:14:20.077 11261-11261/? E/AndroidRuntime: in writeCrashedAppName, pkgName :cqq2.xample.edik.squiltest3
03-30 11:14:20.077 11261-11261/? D/AndroidRuntime: file written successfully with content: cqq2.xample.edik.squiltest3 StringBuffer : ;cqq2.xample.edik.squiltest3
03-30 11:14:20.077 11261-11261/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                   Process: cqq2.xample.edik.squiltest3, PID: 11261
                                                   java.lang.RuntimeException: Unable to start activity ComponentInfo{cqq2.xample.edik.squiltest3/cqq2.xample.edik.squiltest3.MainActivity}: android.database.sqlite.SQLiteException: near "index": syntax error (code 1): , while compiling: SELECT * FROM fa_makarem WHERE index=5
                                                       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: android.database.sqlite.SQLiteException: near "index": syntax error (code 1): , while compiling: SELECT * FROM fa_makarem WHERE index=5
                                                       at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
                                                       at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
                                                       at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
                                                       at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
                                                       at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
                                                       at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
                                                       at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
                                                       at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314)
                                                       at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1253)
                                                       at cqq2.xample.edik.squiltest3.MyDatabase.getString(MyDatabase.java:58)
                                                       at cqq2.xample.edik.squiltest3.MainActivity.onCreate(MainActivity.java:29)
                                                       at android.app.Activity.performCreate(Activity.java:5397)
                                                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1090)
                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)

کد برنامه

  MyDatabase db=new MyDatabase(this);
        Button bt1 = (Button) findViewById(R.id.button);

        ListView lv1=(ListView)findViewById(R.id.lv1);
        ArrayAdapter adapter =new ArrayAdapter(this,android.R.layout.simple_list_item_1,db.getListOfRow("SELECT * FROM fa_makarem","text"));
          lv1.setAdapter(adapter);
           TextView tv1=(TextView)findViewById(R.id.textView);
          tv1.setText(db.getString("SELECT * FROM fa_makarem WHERE index=5", "text"));

در دیتابیس بنده به جای id کلمه index  نوشته شده است

 

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

  • پاسخ 41
  • ایجاد شده
  • آخرین پاسخ
در در 1396/12/26, 01:46:45، Gray Mind گفته است :

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


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:

ممنون،اما برای نمایش این کدها رو زدم جواب نداد...

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

 

adapter:

public class MAdapter extends ArrayAdapter<Model>{
    List<Model> itemes= Collections.emptyList();

    public MAdapter(Context context, ArrayList<Model> records){

        super(context,0,records);
    }




    public View getView(int position, View convertView, ViewGroup parent){
      //  String item=getItem(position);
        if (convertView==null){
            convertView= LayoutInflater.from(getContext()).inflate(R.layout.item,parent,false);
        }

        final TextView txt=(TextView)convertView.findViewById(R.id.textView);
        final TextView txt2=(TextView)convertView.findViewById(R.id.textView2);

      
     txt2.setText(itemes.get(position).getFarsi());
	 txt.setText(itemes.get(position).getEng());


        return convertView;
    }


}

MainActivity:

public class MainActivity extends AppCompatActivity {
    //private ArrayList<Model> arrayList =new ArrayList<Model>();

    private List<Model> a= Collections.emptyList();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
      
      
        ListView listView=(ListView)findViewById(R.id.listv);
        MyDatabase db=new MyDatabase(this);
       MAdapter mAdapter=new MAdapter(this,a);
      listView.setAdapter(mAdapter);
     
    }
}

 

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

بایگانی شده

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

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

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

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