PDA

View Full Version : آپدیت کردن دیتابیس از سرور؟!



saeedsfm
سه شنبه 19 آبان 1394, 20:19 عصر
سلام من یک برنامه دارم که دیتابیس ان با sqlite ساخته شده و فایل دیتابیس ان با پسوند db در پوشه asset هست چگونه میتونم هر موقع که خواستم دیتابیسم رو از طریق سرور به صورت یکجا آپدیت کنم.
با تشکر

msroid
پنج شنبه 21 آبان 1394, 10:09 صبح
سلام

خب اگر یه سرور دارین مسلما یه پایگاه داده هم دارین. شما میتونین اطلاعات رو در پایگاه داده سرور ثبت کنین و کدهای برنامه رو هم جوری بنویسین که به صورت مداوم یا در زمان های خاص به پایگاه داده سرور وصل بشه و اگر به روز رسانی صورت گرفته باشه اطلاعات رو دریافت کنه و به پایگاه داده اندروید انتقال بده.(البته اگه منظور شما رو درست متوجه شده باشم)

ali.s7092
پنج شنبه 21 آبان 1394, 10:40 صبح
سلام اگر منظورتان آپدیت یکجا هست.
باید فایل جدید دیتابیس را از سرور دانلود کرده و با حذف فایل قبلی ، آن را جایگزین نمایید.

saeedsfm
پنج شنبه 21 آبان 1394, 12:03 عصر
سلام اگر منظورتان آپدیت یکجا هست.
باید فایل جدید دیتابیس را از سرور دانلود کرده و با حذف فایل قبلی ، آن را جایگزین نمایید.
درسته دقیقا من همین روش مد نظرم هست یعنی فایل دیتابیس جدید با پسوند db از سرور دانلود بشه و جایگزین دیتابیس قدیم بشه.
میشه همین روش را باز کنید و مفصل تر شرح بدید اگه همراه با کد باشه که بهتر!

ali.s7092
پنج شنبه 21 آبان 1394, 21:12 عصر
این کد قسمتی از یک برنامه هست که نوشتم.
دارای دیالوگ نشان دهنده ی مقدار پیشرفت دانلود هم می باشد.





public class Update extends Activity {

public static final int DIALOG_DOWNLOAD_PROGRESS = 0;
private ProgressDialog mProgressDialog;





@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.update);



new DownloadFileAsync().execute("آدرس فایلی که باید دانلود شود و روی سرور قرار دارد");


}


@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_DOWNLOAD_PROGRESS:
mProgressDialog = new ProgressDialog(this);
mProgressDialog.setMessage("Downloading file..");
mProgressDialog.setProgressStyle(ProgressDialog.ST YLE_HORIZONTAL);
mProgressDialog.setCancelable(false);
mProgressDialog.show();
return mProgressDialog;
default:
return null;
}
}



class DownloadFileAsync extends AsyncTask<String, String, String> {

@Override
protected void onPreExecute() {
super.onPreExecute();
showDialog(DIALOG_DOWNLOAD_PROGRESS);
}

@Override
protected String doInBackground(String... aurl) {
int count;

try {

URL url = new URL(aurl[0]);
URLConnection conexion = url.openConnection();
conexion.connect();

int lenghtOfFile = conexion.getContentLength();
Log.d("ANDRO_ASYNC", "Lenght of file: " + lenghtOfFile);

InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream("آدرس مکانی که فایل دانلود شده ذخیره می گردد");

byte data[] = new byte[1024];

long total = 0;

while ((count = input.read(data)) != -1) {
total += count;
publishProgress(""+(int)((total*100)/lenghtOfFile));
output.write(data, 0, count);
}

output.flush();
output.close();
input.close();

} catch (Exception ignored) {}
return null;

}
protected void onProgressUpdate(String... progress) {
Log.d("ANDRO_ASYNC", progress[0]);
mProgressDialog.setProgress(Integer.parseInt(progr ess[0]));
}

@Override
protected void onPostExecute(String unused) {

dismissDialog(DIALOG_DOWNLOAD_PROGRESS);



}
}


}

saeedsfm
جمعه 22 آبان 1394, 18:29 عصر
ممنون دوست عزیز آیا امکانش هست مستقیما فایل دانلود شده به پوشه asset تو برنامه منتقل بشه
چون گفته شده پوشه asset فقط قابلیت readable داره.

ali.s7092
شنبه 23 آبان 1394, 00:16 صبح
ممنون دوست عزیز آیا امکانش هست مستقیما فایل دانلود شده به پوشه asset تو برنامه منتقل بشه
چون گفته شده پوشه asset فقط قابلیت readable داره.

باید در حافظه دستگاه ذخیره کنی

saeedsfm
شنبه 23 آبان 1394, 11:26 صبح
ممنون من الان فایل جدید دیتابیسم دانلود میشه و تو sdcard ذخیره میشه چطوری میتونم اون رو با دیتابیس اصلی برنامه که تو پوشه assets هست جایگزین کنم؟؟؟؟؟

saeedsfm
شنبه 23 آبان 1394, 11:27 صبح
باید در حافظه دستگاه ذخیره کنی


ممنون من الان فایل جدید دیتابیسم دانلود میشه و تو sdcard ذخیره میشه چطوری میتونم اون رو با دیتابیس اصلی برنامه که تو پوشه assets هست جایگزین کنم؟؟؟؟؟

saeedsfm
یک شنبه 24 آبان 1394, 10:41 صبح
ممنون من الان فایل جدید دیتابیسم دانلود میشه و تو sdcard ذخیره میشه چطوری میتونم اون رو با دیتابیس اصلی برنامه که تو پوشه assets هست جایگزین کنم؟؟؟؟؟


دوستان کسی نیست جواب بده من فایل دیتابیسم تو پوشه asset هست چطوری میتونم مسیر اون رو تغییر بدم و برنامه از فایل دیتابیس داخل sdcard استفاده کنه

ali.s7092
یک شنبه 24 آبان 1394, 14:38 عصر
[QUOTE=saeedsfm;2280205]دوستان کسی نیست جواب بده من فایل دیتابیسم تو پوشه asset هست چطوری میتونم مسیر اون رو تغییر بدم و برنامه از فایل دیتابیس داخل sdcard استفاده کنه[/Q


از asset داخل حافظه کپی کن