نوشته شده توسط
mehrdad85
سلام
بسسسسیار سپاسگزار مررسی
اگه زحمتی نیست کد را برام بفرستید یا اینجا اپلود کنین که من و دیگر دوستان استفاده کنیم .
دعاگو هستیم .
ممنون
خواهش میکنم شما لطف دارید
فقط چون من از جاوای ۸ استفاده میکنم کلاس هام وابستگی های زیادی دارند مدتی طول میکشه بخوام آماده کنم واینجا قرار بدم. به همین علت فعلا قسمتی که از روی assets فایل دیتابیس را کپی میکنه قرار میدم امیدوارم مفید باشه! در صورتی که نیاز به بخش های دیگه داشتید اطلاع بدید!
البته قبلش باید یک کلاس از روی کلاس SQLiteOpenHelper اندروید مشتق کنید و الباقی داستان....
public static final String DB_NAME = "your_db_Name";
public static int attachedDatabase(Context ctx) throws Exception {
int req;
try (InputStream _upgraded_db = ctx.getAssets().open(DB_NAME)){
String _current_db = ctx.getDatabasePath(DB_NAME).getPath();
File _DataBaseFile_= new File(_current_db);
if (_DataBaseFile_.exists() && dbInstalled(_current_db)) {
ifNeededUpGradeDb(ctx);
if (sDbOldVersion < sDbNewVersion)
req = setupScript(ctx, sDbOldVersion, sDbNewVersion) ? 1 : -1;
else
req =2 ;
} else {
String _empty_db_ = _current_db.substring(1,_current_db.indexOf(DB_NAM E)) ;
File _MainPath_ = new File(_empty_db_);
_MainPath_.mkdirs();
req = copyDb(_upgraded_db, new FileOutputStream(_current_db)) ? 1 : -1;
}
} catch (Exception e) {
throw new Exception(e.getMessage());
}
return req;
}
private static boolean copyDb(InputStream _inputStream_, OutputStream _outputStream_) {
int _length_;
boolean req;
byte[] _buffer_;
try {
_buffer_ = new byte[_inputStream_.available()];
while ((_length_ = _inputStream_.read(_buffer_)) > 0) {
_outputStream_.write(_buffer_, 0, _length_);
}
req = true;
_outputStream_.flush();
_outputStream_.close();
_inputStream_.close();
} catch (IOException e) {
req = false;
}
return req;
}
private static boolean dbInstalled(String _current_db) {
SQLiteDatabase db;
try {
db = SQLiteDatabase.openDatabase(_current_db, null, 0);
db.rawQuery("SELECT "+KEY_ID+" FROM "+TABLE_PROFILE, null);
} catch (SQLiteException e) {
db = null;
}
if (db != null) {
db.close();
}
return db != null;
}