Я попробовал этот код на DatabaseHelper.java
Номер строки 34
public DatabaseHelper(Context context) throws IOException {
super(context, DB_NAME, null, 1);
this.mycontext = context;
boolean dbexist = checkdatabase();
if (dbexist) {
// System.out.println("Database exists");
opendatabase();
} else {
// System.out.println("Database doesn't exist");
createdatabase();
}
}
Номер строки 64
private boolean checkdatabase() {
// SQLiteDatabase checkdb = null;
boolean checkdb = false;
try {
String myPath = DB_PATH + DB_NAME;
File dbfile = new File(myPath);
checkdb = SQLiteDatabase.openDatabase(myPath, null,
SQLiteDatabase.OPEN_READWRITE) != null;
checkdb = dbfile.exists();
} catch (SQLiteException e) {
System.out.println("Database doesn't exist");
}
return checkdb;
}
Номер строки 44
При создании метода menu.java
try {
db = new DatabaseHelper(this);
} catch (IOException e2) {
e2.printStackTrace();
}
try {
db.createdatabase();
} catch (IOException e) {
e.printStackTrace();
}
db.getReadableDatabase();
db.opendatabase();
Random rand = new Random();
randomJokId = rand.nextInt(603 - 1) + 1;
cur = db.jokOfTheDay(randomJokId);
cur.moveToFirst();
String fullJok = cur.getString(cur.getColumnIndex("body"));
String Jok = "";
Jok = fullJok.substring(0, 55);
jok_of_the_day.setText(Jok + "... Read more");
Log.d(TAG, "" + randomJokId);
}
Получение этого сообщения об ошибке
Еще одна важная вещь, у меня это сообщение об ошибке появляется три раза .
01-19 13:49:41.284: ERROR/Database(10932): close() was never explicitly called on database '/data/data/com.horror.android/databases/jokesdatabase.sql'
01-19 13:49:41.284: ERROR/Database(10932): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
01-19 13:49:41.284: ERROR/Database(10932): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1847)
01-19 13:49:41.284: ERROR/Database(10932): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820)
01-19 13:49:41.284: ERROR/Database(10932): at com.horror.android.DatabaseHelper.checkdatabase(DatabaseHelper.java:64)
01-19 13:49:41.284: ERROR/Database(10932): at com.horror.android.DatabaseHelper.createdatabase(DatabaseHelper.java:45)
01-19 13:49:41.284: ERROR/Database(10932): at com.horror.android.UltimateJokesMenu.onCreate(UltimateJokesMenu.java:51)
01-19 13:49:41.284: ERROR/Database(10932): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-19 13:49:41.284: ERROR/Database(10932): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
01-19 13:49:41.284: ERROR/Database(10932): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
01-19 13:49:41.284: ERROR/Database(10932): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
01-19 13:49:41.284: ERROR/Database(10932): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
01-19 13:49:41.284: ERROR/Database(10932): at android.os.Handler.dispatchMessage(Handler.java:99)
01-19 13:49:41.284: ERROR/Database(10932): at android.os.Looper.loop(Looper.java:130)
01-19 13:49:41.284: ERROR/Database(10932): at android.app.ActivityThread.main(ActivityThread.java:3683)
01-19 13:49:41.284: ERROR/Database(10932): at java.lang.reflect.Method.invokeNative(Native Method)
01-19 13:49:41.284: ERROR/Database(10932): at java.lang.reflect.Method.invoke(Method.java:507)
01-19 13:49:41.284: ERROR/Database(10932): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-19 13:49:41.284: ERROR/Database(10932): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-19 13:49:41.284: ERROR/Database(10932): at dalvik.system.NativeStart.main(Native Method)