بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
کپی نشدن دیتا بیس تو گوشی به علت ححم بالا
سلام من وقتی دیتا بیسم حجمش خیلی بالاست وقتی از پوشه 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;
}
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .