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

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

علی  11 سال پیش  10 سال پیش
+1 0

من یک لیست ویو دارم که یک سری اطلاعات رو آنلاین می خونه و اومدم یه دیتابیس داخلی در گوشی هم راه انداختم که وقتی به اینترنت وصل نبود از local بخونه.

حالا وقتی اطلاعات رو آنلاین می خونم درج میشه داخل local .

ولی نمیاد چک کنه با آخرین آیدی که اگه تکراری بود نفرسته .

هر بار آنلاین می خونم تکراری درج می کنه داخل local. داخل این params چطوری کد بنویسم که درست شه؟ اون news_id هم آخرین ایدی رو از local سلکت می کنه.

 public void newsRead(){

String url = "http://192.168.0.1/android/note_server/news.php";
ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("action", "read"));
params.add(new BasicNameValuePair("News_id", news_id)); ====> اینجا
Log.i("LOG", params.toString());


String result = Webservice.readUrl(url, params);
if (result != null) {
try {

JSONArray tasks = new JSONArray(result);
DataBaseConnection db = new DataBaseConnection(this, "database", 5);
final SQLiteDatabase database = db.getWritableDatabase();
for (int i = 0; i < tasks.length(); i++) {
JSONObject object = tasks.getJSONObject(i);
StructTask task = new StructTask();
task.id = object.getString("news_id");
task.title = object.getString("news_title");
task.desc = object.getString("news_desc");
task.date = object.getString("news_date") ;
database.execSQL("INSERT INTO news (news_title,news_desc,news_date) VALUES ('" + task.title + "','" + task.desc + "','" + task.date + "')");
G.tasks.add(task);
}

database.close();
}
catch (JSONException e) {
e.printStackTrace();
}
}

}

-------------------------------------------
php

function read(){
$connection = connectToDatabase();
$result = mysqli_query($connection, "SELECT * FROM news WHERE ('news_id' > '{$News_id}')");
$output = array();
while($row = mysqli_fetch_array($result)) {
$record = array();
$record['news_id'] = $row['news_id'];
$record['news_title'] = $row['news_title'];
$record['news_desc'] = $row['news_desc'];
$record['news_date'] = $row['news_date'];
$output[] = $record;
}


0 0
این کدها درست کار میکنن ؟ DataBaseConnection چیه؟ از کجا باید بیارمش ؟ (11 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
Amir.z  11 سال پیش
+1 0

با سلام , این کد رو تست کنین شاید براتون موثر باشه, اگر تکراری باشه اضافه نمیشه , و آپدیت میشه

"INSERT or replace INTO news

0 0
نه دوست عزیز این کار نکرد. باید بیاد با آنلاین چک کنه آیدی ها رو ولی نمیدونم چطوری. (11 سال پیش)
0 0
بپه ها کسی نمیدونه جواب سوال منو؟ حداقل بگید در این کد php چطوری اون News_id رو باید request بدم بهش؟ (11 سال پیش)
0 0
سلام ، این به خاطر آرایه G.tasks ؛ قبل از اینکه بهش مقدار بدی ، در ابتدای اکتیویتی G.tasks.clear کن . چون هربار از سرور میخونه میریزه تو آرایه ای که قبلا هم این مقادیر درونش بوده (11 سال پیش)
0 0
nima جان من برای دیتابیس لوکال که sqlite هستش می گم نه آنلاین. (11 سال پیش)
0 0
فرقی نداره ، اول اکتیویتی که داری جیسان میخونی G.tasks.clear کردی ؟ بکن حل میشه (11 سال پیش)
0 0
نشد نیما جان . اصلا سوال من رو کسی متوجه نمیشه . :( (11 سال پیش)
0 0
مشکلتون حل شد ؟ راه حلی پیدا نکردین ؟ اگر حل شده لطفا راهنمایی بفرمایید ممنون (11 سال پیش)
+2 0
نمیدونم متوجه شدم یا نه ولی خب یه چیزایی میگم : شما باید همیشه از دیتا بیس لوکال اطلاعات رو بخونید و نمایش بدید بعدش هر وقت به اینترنت وصل شدین یا دکمه ی آپدیت اطلاعات در برنامتون فشرده شد اونوقت آی دی آخرین مطلب سمت لوکال و سمت سرور رو با تابع max از SQL بگیرید و مقایسه کنید اگه آیدی سمت سرور بزرگر بود باید اطلاعات داخل دیتا بیس لوکال ذخیره بشه و تموم :) اگه بازم مشکلی بود بگو (10 سال پیش)

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