मेरे पास एक एप्लिकेशन एसक्लाइट डीबी का उपयोग करता है, पहले इंस्टॉल पर मैं जांचता हूं कि डेटाबेस फ़ोल्डर और न ही डीबी फाइल मौजूद है यदि अपडेट डीबी फ़ंक्शन नहीं है। लेकिन गैलेक्सी नोट 10.1 पर उदाहरण के लिए कुछ मामले यह मुझे त्रुटि देता है।एंड्रॉइड स्क्लाइट सिंगलटन डीबी फाइलस्ट्रीम अपडेट
लोड पर;
this.dhn = DataHelper.getDataHelper(this);
File directory = new File(Environment.getDataDirectory() + File.separator + "data" + File.separator + "XXX" + File.separator + "databases");
if(!directory.exists())
{
directory.mkdirs();
updateDB();
}
try {
androidCheckout = this.dhn.Guid();
if(this.dhn.getSettings("dbVersion") == null || Integer.parseInt(this.dhn.getSettings("dbVersion")) != Version || !this.dhn.isTableExists("UserInfo"))
{
updateDB();
}
}
catch (SQLiteException e)
{
try {
updateDB();
androidCheckout = this.dhn.Guid();
}
catch (SQLiteException e11)
{
ManuelYukle();
}
}
public void updateDB()
{
this.dhn.close();
try {
InputStream myInput;
myInput = getAssets().open("XXX.db");
// Path to the just created empty db
String outFileName = "/data/data/XXX/databases/"
+ "XXX.db";
// Open the empty db as the output stream
FileOutputStream myOutput = new FileOutputStream(outFileName);
// transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
buffer = null;
outFileName = null;
this.dhn.close();
this.dhn = null;
this.dhn = DataHelper.getDataHelper(this); <<<<<<<< HERE IT CRUSHS
} catch (IOException e1) {
e1.printStackTrace();
}
}
DBHELPER क्लास>
private static DataHelper singleton;
public static DataHelper getDataHelper(Context context) {
if (singleton == null) {
singleton = new DataHelper(context);
OpenHelper openHelper = new OpenHelper(singleton.context);
singleton.db = openHelper.getWritableDatabase();
}
if(!singleton.db.isOpen()){
OpenHelper openHelper = new OpenHelper(singleton.context);
singleton.db = openHelper.getWritableDatabase();
}
singleton.context = context;
return singleton;
}
private DataHelper(Context context) {
this.context = context;
}
त्रुटि लॉग फ़ाइल>
12-09 19:11:15.772: I/SqliteDatabaseCpp(6271): sqlite returned: error code = 11, msg = database corruption at line 48171 of [ed759d5a9e], db=/data/data/XXX/databases/XXX_db
12-09 19:11:15.772: I/SqliteDatabaseCpp(6271): sqlite returned: error code = 11, msg = database disk image is malformed, db=/data/data/XXX/databases/XXX_db
12-09 19:11:15.772: E/SqliteDatabaseCpp(6271): sqlite3_exec - Failed to set synchronous mode = 1(Normal)
12-09 19:11:15.772: I/SqliteDatabaseCpp(6271): sqlite returned: error code = 11, msg = database corruption at line 48171 of [ed759d5a9e], db=/data/data/XXX/databases/XXX_db
12-09 19:11:15.772: I/SqliteDatabaseCpp(6271): sqlite returned: error code = 11, msg = database disk image is malformed, db=/data/data/XXX/databases/XXX_db
12-09 19:11:15.772: E/SqliteDatabaseCpp(6271): CREATE TABLE android_metadata failed
12-09 19:11:15.777: E/DefaultDatabaseErrorHandler(6271): Corruption reported by sqlite on database: /data/data/XXX/databases/XXX.db
12-09 19:11:15.782: E/DefaultDatabaseErrorHandler(6271): deleting the database file: /data/data/XXX/databases/XXX.db
हाय मर्ट, गैलेक्सी नोट 10.1 के साथ यहां एक ही समस्या है। समाधान मिला !? –
क्या यह संभव है कि यह अनुमति अनुमति है?क्या आप उस 'XXX' निर्देशिका में कुछ भी लिख सकते हैं (और पढ़ सकते हैं)? – Tigger