Android SQLite毫无例外地关闭应用程序

时间:2016-05-24 17:59:34

标签: java android sqlite

有人可以帮我解决问题吗?我试图在我的应用程序中实现SQLite数据库,但无论何时我运行使用我的数据库类的活动,它都会关闭我的应用程序(它仍然在后台运行,当我开始时,整个应用程序重新启动)。我没有任何错误或例外,所以我不知道如何跟踪问题。

这是我的数据库类:

public class DatabaseHandler extends SQLiteOpenHelper {

private static final String DATABASE_NAME = "events.db";
private static final int DATABASE_VERSION = 1;

public static final String TABLE_ALLEVENTS = "allevents";

public static final String COLUMN_TITLE = "title";
public static final String COLUMN_SUBTITLE = "subtitle";
public static final String COLUMN_DESCRIPTION = "description";
public static final String COLUMN_STARTDATE = "startdate";
public static final String COLUMN_ENDDATE = "enddate";
public static final String COLUMN_PICTUREURL = "pictureurl";
public static final String COLUMN_URL = "url";
public static final String COLUMN_SAVED = "saved";

public DatabaseHandler(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
    //3rd argument to be passed is CursorFactory instance
}

// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
    String CREATE_EVENTS_TABLE = "CREATE TABLE "
            + TABLE_ALLEVENTS + "("
            + COLUMN_TITLE + " TEXT,"
            + COLUMN_SUBTITLE + " TEXT,"
            + COLUMN_DESCRIPTION + " TEXT,"
            + COLUMN_STARTDATE + " TEXT,"
            + COLUMN_ENDDATE + " TEXT,"
            + COLUMN_PICTUREURL + " TEXT,"
            + COLUMN_URL + " TEXT,"
            + COLUMN_SAVED + " TEXT);";
    db.execSQL(CREATE_EVENTS_TABLE);
}

// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // Drop older table if existed
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_ALLEVENTS);

    // Create tables again
    onCreate(db);
  }
}

我在活动中唯一能做的就是:

DatabaseHandler db = new DatabaseHandler(this);

//更新(现已解决):

我今天修复了它,看起来问题出现在项目本身,因为我试图创建一个新项目并复制粘贴相同的代码然后运行它,它开始正常工作。我对此没有合理的解释,但是logcat在新项目中也给了我很多帮助,所以我对任何有类似问题的人的建议是创建一个新项目并在那里测试你的查询,因为显然Android Studio没有显示所有错误有时。祝你好运!

1 个答案:

答案 0 :(得分:0)

尝试以这种方式创建新的数据库变量

SQLiteDatabase db=new SQLiteDatabase();
this.db=db;  

并在新的db变量上运行onCreate()方法。 您还必须在每个函数中创建一个新实例。