rezano
شنبه 30 خرداد 1394, 04:17 صبح
با سلام
من دو تا دکمه برای اکتیویتی گزاشتم یکی به اسم Create DB و یکی دیگه به اسم Load DB
در رویداد کلیک Create DB نوشتم:
try {
SQLiteDatabase mydb = openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE, null);
mydb.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (NAME TEXT);");
mydb.execSQL("INSERT INTO " + TABLE_NAME + " (NAME) VALUES ('Reza')");
mydb.close();
Toast.makeText(getApplicationContext(), "Value Added To Table", Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}
که میاد یه دیتابیس میسازه برام و یه سطر دیتا هم اضافه میکنه. (که به درستی هم کار میکنه)
در رویداد کلیک Load DB نوشتم:
try{
SQLiteDatabase mydb = openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE,null);
Cursor allrows = mydb.rawQuery("SELECT * FROM "+ TABLE_NAME, null);
allrows.moveToFirst();
Toast.makeText(getApplicationContext(), allrows.getString(0), Toast.LENGTH_LONG).show();
mydb.close();
}catch(Exception e){
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}
و این دکمه هم میاد مقداری که قبلا ریخته شده توی دیتابیس می خونه (که این هم درست کار میکنه)
تا اینجا هم چیز درسته.
حالا من اومدم از مسیر ساخت برنامه دیتابیس رو برداشتم و با پلاگین SQLite Manager برای Firefox اطلاعات رو ویرایش کردم و با دوباره بانک رو سر جاش گزاشتم که بازم مشکلی نبود.
از طریق مسیر زیر پوشه assets رو ایجاد کردم و سپس یک دایرکتوری به اسم databases درونش ساختم و فایل دیتابیسم رو درونش قرار دادم
http://i.stack.imgur.com/nJuct.png
ولی بعد از اجرا با پیغام خطای زیر مواجه میشم
132419
و اطلاعاتم رو بازیابی نمیکرد. بعد از مقداری دستکاری کردن کد بازیابس اطلاعات رو تغییر دادم
یعتی کد:
SQLiteDatabase mydb = openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE, null);
را به کد ریز تغییر دادم تا از مسیر مشخص شده دیتابیس رو بخونه :
SQLiteDatabase mydb = SQLiteDatabase.openDatabase("data/data/com.myapp.test004/databases/"+DATABASE_NAME,null, Context.MODE_PRIVATE);
که نتیجه این شد که میبینید:
132418
و البته توی پوشه data/data/com.myapp.test004 هم اثری از پوشه databases نیست.
مشکل کار من کجاست؟چرا دیتابیسم منتقل نمیشه؟ لطفا کامل توضیح بدید که قشنگ جا بیوفته.
ممنون از وقتی که گزاشتید و پستم رو خوندید.
من دو تا دکمه برای اکتیویتی گزاشتم یکی به اسم Create DB و یکی دیگه به اسم Load DB
در رویداد کلیک Create DB نوشتم:
try {
SQLiteDatabase mydb = openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE, null);
mydb.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (NAME TEXT);");
mydb.execSQL("INSERT INTO " + TABLE_NAME + " (NAME) VALUES ('Reza')");
mydb.close();
Toast.makeText(getApplicationContext(), "Value Added To Table", Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}
که میاد یه دیتابیس میسازه برام و یه سطر دیتا هم اضافه میکنه. (که به درستی هم کار میکنه)
در رویداد کلیک Load DB نوشتم:
try{
SQLiteDatabase mydb = openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE,null);
Cursor allrows = mydb.rawQuery("SELECT * FROM "+ TABLE_NAME, null);
allrows.moveToFirst();
Toast.makeText(getApplicationContext(), allrows.getString(0), Toast.LENGTH_LONG).show();
mydb.close();
}catch(Exception e){
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}
و این دکمه هم میاد مقداری که قبلا ریخته شده توی دیتابیس می خونه (که این هم درست کار میکنه)
تا اینجا هم چیز درسته.
حالا من اومدم از مسیر ساخت برنامه دیتابیس رو برداشتم و با پلاگین SQLite Manager برای Firefox اطلاعات رو ویرایش کردم و با دوباره بانک رو سر جاش گزاشتم که بازم مشکلی نبود.
از طریق مسیر زیر پوشه assets رو ایجاد کردم و سپس یک دایرکتوری به اسم databases درونش ساختم و فایل دیتابیسم رو درونش قرار دادم
http://i.stack.imgur.com/nJuct.png
ولی بعد از اجرا با پیغام خطای زیر مواجه میشم
132419
و اطلاعاتم رو بازیابی نمیکرد. بعد از مقداری دستکاری کردن کد بازیابس اطلاعات رو تغییر دادم
یعتی کد:
SQLiteDatabase mydb = openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE, null);
را به کد ریز تغییر دادم تا از مسیر مشخص شده دیتابیس رو بخونه :
SQLiteDatabase mydb = SQLiteDatabase.openDatabase("data/data/com.myapp.test004/databases/"+DATABASE_NAME,null, Context.MODE_PRIVATE);
که نتیجه این شد که میبینید:
132418
و البته توی پوشه data/data/com.myapp.test004 هم اثری از پوشه databases نیست.
مشکل کار من کجاست؟چرا دیتابیسم منتقل نمیشه؟ لطفا کامل توضیح بدید که قشنگ جا بیوفته.
ممنون از وقتی که گزاشتید و پستم رو خوندید.