让SQLite在Android中工作并访问数据

时间:2015-02-23 20:05:15

标签: android sqlite

我正在尝试让SQLite数据库在Android中运行并提出一些问题!

我在数据库类的onCreate方法中添加了以下内容,该方法扩展了SQLiteOpenHelper

db.execSQL("CREATE TABLE IF NOT EXISTS `challenge` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `date` TEXT )");

然后我有以下方法。

public void addChallenge(){

    SQLiteDatabase db = this.getWritableDatabase();

    Date cDate = new Date();
    String fDate = new SimpleDateFormat("yyyy-MM-dd").format(cDate);

    ContentValues values = new ContentValues();
    values.put("date", fDate);

    db.insert("challenge", null, values);

}

以下内容将抓住上面提到的挑战。

public int getChallengeId(){

    SQLiteDatabase db = this.getWritableDatabase();

    Date cDate = new Date();
    String fDate = new SimpleDateFormat("yyyy-MM-dd").format(cDate);

    String countQuery = "SELECT id FROM challenge WHERE date = " + fDate;

    Cursor cursor = db.rawQuery(countQuery, null);

    int challenge_id = 0;

    if(cursor.moveToFirst()){
        challenge_id = cursor.getInt(0);
    }

    return challenge_id;

}

我的问题是挑战ID返回为0.

所以我有几个问题。

  • Android中默认存储的数据库在哪里?
  • 我是否正确地说这个?

我用来访问上述方法的代码如下

Database db_add = new Database(context);
db_add.addChallenge();
db_add.close();

Database db_get = new Database(context);
challenge_id = db_get.getChallengeId();
db_get.close();

有什么想法吗? 感谢。

1 个答案:

答案 0 :(得分:2)

SQL查询不正确。

2015-02-23告诉数据库您要从数字2中减去数字232015

字符串必须为'quoted'。 但是,您应该使用参数来避免此类格式问题:

String countQuery = "SELECT id FROM challenge WHERE date = ?";
Cursor cursor = db.rawQuery(countQuery, new String[]{ fDate });