ورود

View Full Version : مشکل با اپدیت دیتابیس



o0o0okay
سه شنبه 12 اسفند 1393, 13:56 عصر
سلام
من میخاستم دیتابیس افلاینم رو بروزرسانی کنم. ولی متد هاشو موندم که چطور پر کنم.

public class database extends SQLiteOpenHelper {

public final String path = "data/data/com.an/databases/";
public final String Name = "dataofkonkor";
public SQLiteDatabase mydb;
private final Context mycontext;




public database(Context context) {
super(context, "dataofkonkor", null, 1);
mycontext = context;
}




@Override
public void onCreate(SQLiteDatabase arg0) {


}




@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {


}




public void useable() {
boolean checkdb = checkdb();
if (checkdb) {


} else {
this.getReadableDatabase();
try {
copydatabase();
}
catch (IOException e) {

}
}
}




public void open() {
mydb = SQLiteDatabase.openDatabase(path + Name, null, SQLiteDatabase.OPEN_READWRITE);
}




@Override
public void close() {
mydb.close();
}




public boolean checkdb() {
SQLiteDatabase db = null;
try {
db = SQLiteDatabase.openDatabase(path + Name, null, SQLiteDatabase.OPEN_READONLY);
}
catch (SQLException e) {


}
return db != null ? true : false;
}




public void copydatabase() throws IOException {


OutputStream myOutput = new FileOutputStream(path + Name);
byte[] buffer = new byte[1024];
int lenght;
InputStream myInput = mycontext.getAssets().open(Name);
while ((lenght = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, lenght);
}
myInput.close();
myOutput.flush();
myOutput.close();
}
}



متدهای onCreate و onUpgrade

می خوام کل دیتابیس تغییر کنه، نه فیلدی یا جدول خاصی.
کل دیتابیس تغییر کنه.

o0o0okay
چهارشنبه 13 اسفند 1393, 21:08 عصر
کسی نیست ؟ :افسرده:

#root#
چهارشنبه 13 اسفند 1393, 21:46 عصر
منظورتون بروزرسانی داده هاش از طریق اینترنت هست یا تغییر کل دیتابیس توسط نسخه جدید برنامه هست؟

o0o0okay
چهارشنبه 13 اسفند 1393, 22:01 عصر
بله، دقیقا بصورت اکسترنال_افلاین اپدیت بشه.
بصورت کلی، نه بصورت فیلد خاصی از سطر یا ستون.

#root#
چهارشنبه 13 اسفند 1393, 22:16 عصر
سوالم اضافه بود ته سوالتون جوابشو نوشته بودین :بامزه:

ساده ترین راه تغییر مقدار فیلد NAME هست، یعنی اسم دیتابیس، کار دیگه ای نیاز نیست، البته دقت کنید که تغییر اسم رو توی پوشه assets هم اعمال کنید.

همچنین دستور حذف دیتابیس قبلی رو هم بنویسد تا فضای استفاده شده آزاد بشه.

o0o0okay
چهارشنبه 13 اسفند 1393, 23:09 عصر
با اونکه این روش رو نمیپسندم، و مشکلاتی داره.
اما تغییر اسم دیتابیس، حرف خیلی جالبی بود. از ابتکار عملتون خوشم آمد، احسنت.