انجمن سایت کلیدستان



ذخیره کردن json در sqllite (در برنامه نویسی اندروید)زمان کنونی: ۱۳۹۵/۰۹/۱۹، ۰۲:۰۹ ب.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: aliazad
آخرین ارسال: داش بهروز
پاسخ 8
بازدید 3052

رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ذخیره کردن json در sqllite (در برنامه نویسی اندروید)

ذخیره کردن json در sqllite (در برنامه نویسی اندروید)

#1
سلام
بابت سایت خوبتون ممنون .
من با توجه مبحث زیر json را دریافت کردم. الان میخواهم انرا در یک sqlite ذخیره کنم. ممنون میشم کمکم کنید
http://www.kelidestan.com/keys/keys.php?key=2651
پاسخ

ذخیره کردن json در sqllite (در برنامه نویسی اندروید)

#2
سلام.
ممنون. 
هنگامی که متن ساختاریافته به روش json را به صورت رشته (String) داشته باشیم، تنها کافی است که از دستورات مربوط به ذخیره یک متن (رشته - String) در یک جدول از پایگاه داده SQLite استفاده کنیم :

http://www.kelidestan.com/keys/categorie...ategory=23

اگر متن ساختاریافته به شکل json را به صورت رشته (String) دارید که مشکلی نیست، اما اگر آن را به صورت رشته (String) ندارید، ابتدا باید JSONObject را به یک رشته (String) تبدیل کنیم.
برای این منظور، با فرض اینکه JSONObject دارای نام myJSONObject باشد، کد زیر را می نویسیم :

کد پی‌اچ‌پی:
String str myJSONObject.toString(); 

بعدا می توان این متن را از پایگاه داده فراخوانی کرد، آن را به یک JSONObject تبدیل کرده (کلید شماره 311) و سپس پردازش های مورد نظرمان را بر روی آن انجام بدهیم.

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

ذخیره کردن json در sqllite (در برنامه نویسی اندروید)

#3
بابت پاسختان واقعا ممنون
یک هفتی اوی ی سایت خارجی مطرح کردم ولی جوابی تشتیدم 
من ی کد نوشتم رشته را ذخیره کنم ولی اررور میده

http://stackoverflow.com/questions/28169...to-sqllite

اگه میشه یه نگاهی بندازین. 

این هم کد 
نقل قول:
public class MainActivity extends ListActivity 


    InputStream is = null;
    String ip = "http://192.168.56.1/2.txt";
    String line = null;
    String result = null;
    public String[] list1, list2;

    SQLiteDB sqlite_obj;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        sqlite_obj = new SQLiteDB(MainActivity.this);

        try {

            URL url = new URL(ip);
            executeReq(url);
            webserviceCall();
            Toast.makeText(getBaseContext(), "Data from Webservice", Toast.LENGTH_SHORT).show();
        }
        catch(Exception e) {
            sqlitecall();
            Toast.makeText(getBaseContext(), "Data from SQLite DB", Toast.LENGTH_SHORT).show();
        }

        setListAdapter(new ListViewAct(this, list1, list2));
    }

    private void executeReq(URL url) throws IOException {
        // TODO Auto-generated method stub

        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setReadTimeout(3000);
        con.setConnectTimeout(3500);
        con.setRequestMethod("GET");
        con.setDoInput(true);

        // Connect
        con.connect();
    }

    private void webserviceCall() {
        // TODO Auto-generated method stub

        try {

            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(ip);

            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();
        }
        catch (Exception e) {
            Log.e("Webservice 1", e.toString());
        }
        try {

            BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;

            while((line = reader.readLine()) != null) {

                sb.append(line + "\n");
            }

            is.close();
            result = sb.toString();         
        }
        catch (Exception e) {
            Log.e("Webservice 2", e.toString());
        }
        try {

            JSONArray ja = new JSONArray(result);
            JSONObject jo = null;

            list1 = new String[ja.length()];
            list2 = new String[ja.length()];

            for(int i=0; i<ja.length(); i++) {

                jo = ja.getJSONObject(i);
                list1[i] = jo.getString("id");
                list2[i] = jo.getString("name");
            }           
        }catch (Exception e) {
            Log.e("Webservice 3", e.toString());
        }

        sqlite_obj.open();

        sqlite_obj.deleteAll();

        for(int i=0; i<list1.length; i++) {

            sqlite_obj.insert(list1[i].toString(), list2[i].toString());
        }
        sqlite_obj.close();
    }   

    private void sqlitecall() {
        // TODO Auto-generated method stub

        sqlite_obj.open();
        Cursor c = sqlite_obj.getAllData();

        list1 = new String[c.getCount()];
        list2 = new String[c.getCount()];

        if (c.moveToFirst())
        {
            int i=0;
            do {
                DisplayContact(c, i);
                i++;
            } while (c.moveToNext());
        }
        sqlite_obj.close();
    }

    private void DisplayContact(Cursor c, int i) {
        // TODO Auto-generated method stub

        list1[i] = c.getString(0);
        list2[i] = c.getString(1);  
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {

        //get selected items
        String selectedValue = (String) getListAdapter().getItem(position);
        Toast.makeText(this, selectedValue, Toast.LENGTH_SHORT).show();
    }
پاسخ

ذخیره کردن json در sqllite (در برنامه نویسی اندروید)

#4
یا اینکه کل رشته json را به عنوان یک رکورد داخل جدول ذخیره کنم؟
پاسخ

ذخیره کردن json در sqllite (در برنامه نویسی اندروید)

#5
(۱۳۹۳/۱۱/۱۰, ۰۱:۰۸ ق.ظ)'aliazad' نوشته: یا اینکه کل رشته json را به عنوان یک رکورد داخل جدول ذخیره کنم؟

 


بله کل رشته را در یک ستون (Column) از جدول ذخیره کنید.
در صورت مواجه شدن با خطا، خطایابی کنید :

کلید شماره 813


 
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط داش بهروز

ذخیره کردن json در sqllite (در برنامه نویسی اندروید)

#6
ایا راهی هست که به صورت منتاظر از تا به sqlite انتقال داد
id ---->id
name---->name
city---->city
پاسخ

ذخیره کردن json در sqllite (در برنامه نویسی اندروید)

#7
http://sampleprogramz.com/android/datadatabase.php
پاسخ

ذخیره کردن json در sqllite (در برنامه نویسی اندروید)

#8
اساتید درست میگن  همچنین  
شما میتونید مقادیر رو از جیسون بگیرید و توی سه تا آرایه ذخیره کنید ..list1,list2, list3  مثل دستور زیر

کد پی‌اچ‌پی:
list1 = new String[ja.length()];
                    
list2 = new String[ja.length()];
                    
list3 =  new String[ja.length()];
                    for(
int i=0i<ja.length(); i++) {

                        
jo ja.getJSONObject(i);
                        
list1[i] = jo.getString("id");
                        
list2[i] = jo.getString("name");
                        
list3[i] = jo.getString("city");
                    } 

        بعد از اینکار شما حالا 3 تا آرایه دارید که مقادیر داخل اونا ذخیره شده....دیگه بیشتر کار رو انجام دادید میمونه فقط ذخیره کردن آن..
        میتونید واسه ذخیره  از ظرف ContentValues دخل دیتابیس  استفاده کنید ..که مثل یه ظرف هر چی خواستید میریزید داخلش و بعد اون پاس میدید داخل دیتابیس..
        از متد زیر میتونید استفاده کنید..

کد پی‌اچ‌پی:
public void Save_to_Sqlite()
        {
         
SQLiteDatabase dataBase=openOrCreateDatabase(pathMODE_PRIVATEnull);
             
Cursor cursor=dataBase.rawQuery("SELECT name,id , city FROM T1;"null);
            
             
                
ContentValues values=new ContentValues();
                for(
int i=0;i<list1.lenght();i++)
                {
                
values.put("id"list1[i]);
                
values.put("name"list2[i]);
                
values.put("city"list3[i]);
                
dataBase.insert("T1"nullvalues);
                }
                
dataBase.close();
        } 

این حلقه هربار که اجرا میشه یه ردیف داخل دیتابیس ذخیره میکنه با استفاده از ContentValues
امیدوارم کمکتون کرده باشم...
اساتید و دوستان جسارت من ببخشید
پاسخ
 سپاس شده توسط admin


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

آخرین کلیدهای غیررایگان

شما هم می توانید کلیدهای غیررایگان منتشر کنید (بیشتر بدانید)