آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

خوندن اطلاعات از سمت سرور به وسیله آندروید ( حل شد )

alireza  11 سال پیش  11 سال پیش
+1 0

سلام دوستان من یه برنامه نوشتم که اطلاعات رو از سمت سرور می خونه وروی دیتابیس ذخیره می کنه اما یه مشکل جدیدا باهاش برخورد کردم و اون اینه که وقتی اطلاعات به صورت جیسون می فرستم همه به دیتا بیسم اضافه میشن برای بارهای بعد که اطلاعات جدیدی اضافه میشه فقط جیسون مربوط به اون اطلاعات جدید رو ارسال می کنم ولی چیزی به دیتا بیسم اضافه نمی شه اما اگر اطلاعات قبلی رو هم بفرستم مشکلی به وجود نمی یاد و به دیتا بیسم اطلاعات اضافه میشه 

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

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

 <?php


$mobileNews=array();


$mobileNews[0]['id']=1;
$mobileNews[0]['title']='title1';
$mobileNews[0]['news']='لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان
گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود
ابزارهای کاربردی می باشد. کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت
بیستری را برای طراحان رایانه ای و فرهنگ پیشرو در زبان فارسی ایجاد کرد. در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و
شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار
گیرد.';
$mobileNews[0]['category']='ماجرایی';
$mobileNews[0]['creater']='حسین رئیسی';

$mobileNews[0]['publicationDate']='۰۳:۳۰:۰۰ ۱۳۹۳/۱۲/۲۵';
$mobileNews[0]['url']="image-5.jpg";
$mobileNews[0]['thumbnail']="t-image-5.jpg";
$mobileNews[0]['fileName']='file5.zip';

$mobileNews[1]['id']=2;
$mobileNews[1]['title']='title2';
$mobileNews[1]['news']='لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان
گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود
ابزارهای کاربردی می باشد. کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت
بیستری را برای طراحان رایانه ای و فرهنگ پیشرو در زبان فارسی ایجاد کرد. در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و
شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار
گیرد.';
$mobileNews[1]['category']='ماجرایی';
$mobileNews[1]['creater']='حسین رئیسی';
$mobileNews[1]['publicationDate']='۰۳:۳۰:۰۰ ۱۳۹۳/۱۲/۲۵';
$mobileNews[1]['url']="image-5.jpg";
$mobileNews[1]['thumbnail']="t-image-5.jpg";
$mobileNews[1]['fileName']='file5.zip';


$mobileNews[2]['id']=3;
$mobileNews[2]['title']='title3';
$mobileNews[2]['news']='لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان
گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود
ابزارهای کاربردی می باشد. کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت
بیستری را برای طراحان رایانه ای و فرهنگ پیشرو در زبان فارسی ایجاد کرد. در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و
شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار
گیرد.';
$mobileNews[2]['category']='ماجرایی';
$mobileNews[2]['creater']='حسین رئیسی';
$mobileNews[2]['publicationDate']='۰۳:۳۰:۰۰ ۱۳۹۳/۱۲/۲۵';
$mobileNews[2]['url']="image-5.jpg";
$mobileNews[2]['thumbnail']="t-image-5.jpg";
$mobileNews[2]['fileName']='file5.zip';


?>
<?php echo json_encode($mobileNews,JSON_UNESCAPED_UNICODE); ?>

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

  @Override
            public void onDataReceive(String data) {
                Cursor check = G.database.rawQuery("SELECT * FROM recent ", null);
                int j = 0;
                while (check.moveToNext()) {
                    j++;
                }
                check.close();

                if (j == 0) {
                    id = 0;
                    G.database.execSQL("INSERT INTO recent(recent_id) VALUES ('" + 0 + "')");
                } else {
                    Cursor des = G.database.rawQuery("SELECT * FROM recent ", null);
                    while (des.moveToNext()) {

                        id = des.getInt(des.getColumnIndex("recent_id"));
                    }
                    des.close();
                }
                try {
                    JSONArray tasks = new JSONArray(data);
                    for (int i = id; i < tasks.length(); i++) {

                        JSONObject object = tasks.getJSONObject(i);
                        StructTask task = new StructTask();
                        task.id = object.getLong("id");
                        task.category = object.getString("category");
                        task.creater = object.getString("creater");
                        task.publicationDate = object.getString("publicationDate");
                        task.url = object.getString("url");
                        task.file = object.getString("fileName");
                        task.thumbnail = "t_" + object.getString("url");
                        task.title = object.getString("title");
                        task.news = object.getString("news");

                        DownloadManager.addToDownloadList(task.thumbnail, task.id);
                        num = task.id;
                        G.database.execSQL("UPDATE recent SET recent_id = '" + task.id + "' ");
                        G.database.execSQL("INSERT INTO task (task_file,task_id,task_category,task_creater,task_title,task_news,task_date,task_thumbnail,task_url) VALUES ('" + task.file + "','" + task.id + "','" + task.category + "', '" + task.creater + "','" + task.title + "','" + task.news + "','" + task.publicationDate + "','" + task.thumbnail + "','" + task.url + "')");
                    }
                }
                catch (JSONException e) {
                    e.printStackTrace();
                }
0 0
ممنون میشم دوستان و اساتید راهنمایی کنند کجای کد من مشکل داره که باید چیکار کنم این مشکل برطرف بشه (11 سال پیش)
0 0
لطفا از درج سوالات تکراری خودداری فرمایید ، توضیحات لازم در آموزش ها داده شده است . (11 سال پیش)
0 0
چیزی که من تو سوال مطرح کردم توی اموزش ها گفته نشده میشه شما راهنمایی کنید باید واسه کاری که گفتم می خوام انجام بدم کدم کجاش مشکل داره ؟ (11 سال پیش)
0 0
شما با trace کردن راحت تر می تونین بفهمین مشکل از کجاست. حتما یه if ، یا چیز دیگه ای اشتباه نوشتید. (11 سال پیش)
0 0
منظورتون از trace کردن چیه ؟ راستش نمی دونم trace چی هست ؟ استاد تو اموزش ها توضیح دادن ؟ (11 سال پیش)
0 0
trace کردن کردن یعنی اجرای خط به خط برنامه. کلمات trace ، debug و دیباگ را در انجمن و یا گوگل جستجو کنید. (11 سال پیش)
0 0
اها متوجه شدم ممنون .. ولی جناب پناهی برنامه من از لحاظ اجرا مشکلی نداره و درست کار می کنه من فقط می خوام برای خوندن اطلاعات و ارسال جیسون از سمت سرور نیام هر سری اطلاعات جیسون مربوط به ای دی های که قبلا در دیتا بیس ذخیره شدن رو ارسال کنم و فقط از اون ای دی به بعد رو ارسال کنم سمت اندروید اینکار رو که می کنم دیگه من چیزی رو نمی خونم ولی اگه ای دی های قبلی رو هم همراه این ای دی جدید جیسونشون رو ارسال کنم این ای دی هم خونده میشه و اضافه میشه ... نمی دونم فکر می کنم مربوط به ارایه دو بعدی که سمت سرورم نوشتم یا مربوط به شرایط for هست گفتم شاید کسی قبلا همچین کاری رو کرده بتونه راهنمایی کنه که باید شکل دیگه ای کد بنویسم یا اینی که نوشته شده درسته ؟! (11 سال پیش)
0 0
اها متوجه شدم ممنون .. ولی جناب پناهی برنامه من از لحاظ اجرا مشکلی نداره و درست کار می کنه من فقط می خوام برای خوندن اطلاعات و ارسال جیسون از سمت سرور نیام هر سری اطلاعات جیسون مربوط به ای دی های که قبلا در دیتا بیس ذخیره شدن رو ارسال کنم و فقط از اون ای دی به بعد رو ارسال کنم سمت اندروید اینکار رو که می کنم دیگه من چیزی رو نمی خونم ولی اگه ای دی های قبلی رو هم همراه این ای دی جدید جیسونشون رو ارسال کنم این ای دی هم خونده میشه و اضافه میشه ... نمی دونم فکر می کنم مربوط به ارایه دو بعدی که سمت سرورم نوشتم یا مربوط به شرایط for هست گفتم شاید کسی قبلا همچین کاری رو کرده بتونه راهنمایی کنه که باید شکل دیگه ای کد بنویسم یا اینی که نوشته شده درسته ؟! (11 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
hamidd  11 سال پیش
0 0

شما به جای:

 while (des.moveToNext()) {

id = des.getInt(des.getColumnIndex("recent_id"));
}

اینو بنویسید ببینید چی میشه.

  while (des.moveToNext()) {

id++;
}

البته من وقت نکردم زیاد به کدتون دقت کنم.

+1 0
ممنون از پاسختون ولی مربوط به این موضوعی که گفتین نبود (11 سال پیش)
+1 0
مربوط به چی بود. اگه امکانش هست میشه بدونم لطفا؟ (11 سال پیش)
+1 0
مربوط به شرایط for بود درواقع من میومدم اطلاعات ارایه جیسونی که دریافت می کردم رو می گفتم از عنصر id ام به بعد بخون و وقتی میومدم جیسون های قبلی رو حذف می کردم و وفقط جیسون مربوط به اطلاعیه های جدید رو اضافه می کردم دیگه عنصر صفرم این ارایه رو باید می خوندم نه عنصر id ام رو !!! در واقع با حذف متغیر id و گذاشتن صفر مشکل خیلی ساده برطرف شد یه بی دقتی در الگوریتم کار این مشکل رو ایجاد کرده بود ... به هر حال ممنون از پاسختون (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .