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

کپی نشدن دیتا بیس تو گوشی به علت ححم بالا

jamal2012  11 سال پیش  11 سال پیش
0 0

سلام من وقتی دیتا بیسم حجمش خیلی بالاست وقتی از پوشه assets میخواد کپی کنه نمیتونه و یه فایلی که حجمش صفره رو کپی میکونه مشکل کجاست؟از کلاسsqlite asset helper  چیزی نفهمیدم اگه میشه کمک کنید

0 0
کسی نمیدونه خیلی کارم گیر کرده کمک کنید لطفا ممنون (11 سال پیش)
0 0
اصولا باید کپی کنه احتمالا فضای کافی برای کپی شدن رو نداره ...!! راستی مگه حجمش چقدره ؟؟؟ :)) (11 سال پیش)
0 0
10 مگه یکی از بچه پرسیدم میگه باید دیتا بیس چند تیکه شه بعد mergشه با کلاسsqlit asset helper شما چیزی نمیدونید از این کلاس یا روشهای دیگه (11 سال پیش)
0 0
یکی از بچه=از یکی از بچه ها (11 سال پیش)
0 0
کسی نمیدونه؟؟؟ (11 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
Mseif  11 سال پیش
+1 0

شما با استفاده از برنامه HJSplit   دیتابیس رو به 10 پارت یک مگابایتی تقسیم کن چون پوشه Assest بیشتر از 1 مگابایت رو کپی نمی کنه بعد نام هر پارت رو یه شماره از 1 تا 10 بده

db.sqlitedb.001
db.sqlitedb.002
db.sqlitedb.003
db.sqlitedb.004
...... db.sqlitedb.010
private void copyDataBase() throws IOException {
AssetManager am = mContext.getAssets();
OutputStream os =newFileOutputStream(DB_PATH + DB_NAME);byte[] b =newbyte[1024];String[] files = am.list("");
Arrays.sort(files);int r;for(int i =1; i <=9; i++) {
InputStreamis= am.open("
db.sqlitedb.00"+ i);while((r =is.read(b))!=-1) { os.write(b,0, r);
}
Log
.i("BABY_DATABASE_HELPER","Copying the database (part "+ i +" of 9)");is.close();
}
os.close();
}
پاسخ به سوال 
jamal2012  11 سال پیش
0 0

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

 public class G extends Application {

public static Context context;
public static LayoutInflater inflater;
public static Handler HANDLER = new Handler();
public static Activity currentActivity;

public static SQLiteDatabase database;
public static StructApplication selectedApplication;
public static StructApplicationFav selectedApplicationFav;

public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
public static String DIR_APP = DIR_SDCARD + "/my_database";


@Override
public void onCreate() {

super.onCreate();
context = getApplicationContext();
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

new File(DIR_APP).mkdirs();

prepareDB();

}


private boolean prepareDB() {

try {
String state = Environment.getExternalStorageState();
InputStream is = context.getAssets().open("norooz.sqlite");

if (state.equals(Environment.MEDIA_MOUNTED))
{

File DB_PATH = new File(DIR_APP + "/norooz.sqlite");

Log.i("DB_PATHDB_PATHDB_PATHDB_PATHDB_PATHDB_PATH", "DB_PATH=" + DB_PATH);

if (DB_PATH.exists()) {

database = SQLiteDatabase.openOrCreateDatabase(DB_PATH, null);
Log.i("databasedatabasedatabasedatabasedatabasedatabase", "database=" + database);

return true;

}
else {

if (copy(new FileOutputStream(DB_PATH), is)) {
database = SQLiteDatabase.openOrCreateDatabase(DB_PATH, null);
return true;
}
else {
return false;
}
}
}
else {
Log.i("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh", "state=" + state);
DIR_APP = getFilesDir().toString();
File dbFile = new File(getFilesDir().toString() + "/" + "/norooz.sqlite");
if (dbFile.exists()) {
database = SQLiteDatabase.openOrCreateDatabase(dbFile, null);
return true;
}
else {
FileOutputStream os = openFileOutput("norooz.sqlite", context.MODE_PRIVATE);
if (copy(os, is)) {
database = SQLiteDatabase.openOrCreateDatabase(dbFile, null);
return true;
}
else {
return false;
}
}
}
}
catch (Exception e) {
e.printStackTrace();
return false;
}
}


private boolean copy(OutputStream os, InputStream is) {
try {
int readed = 0;
byte[] buffer = new byte[8 * 1024];
while ((readed = is.read(buffer)) > 0) {
os.write(buffer, 0, readed);
}
try {
is.close();
}
catch (Exception e) {
e.printStackTrace();
}
try {
os.flush();
}
catch (Exception e) {
e.printStackTrace();
}
try {
os.close();
}
catch (Exception e) {
e.printStackTrace();
}
return true;
}
catch (Exception e) {
e.printStackTrace();
return false;
}
}

}

0 0
دوستان کسی نیست ج بده راهنمایی کنه جان من خیلی گیرم! (11 سال پیش)
0 0
ظاهرا یه کد کپی بود از سایت استک و هیچ پشتیبانی نداره (11 سال پیش)
0 0
خب شما باید اون کد رو به جای کد اتصال به بانک فعلیتون قرار بدین این که دیگه واضحه (11 سال پیش)
0 0
این کد بالا که من ازش استفاده میکونم کده خیلی کاملی هست یعنی میاد میگه اگه sd card بود کپی کن توش اگه نداشت تو حافظه داخلی کپی کن و... حالا من میخوام تو این کد از کد شما استفاده کنم ممنون میشم اگر کمکم کنید (11 سال پیش)

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