我正在尝试让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.
所以我有几个问题。
我用来访问上述方法的代码如下
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();
有什么想法吗? 感谢。
答案 0 :(得分:2)
SQL查询不正确。
2015-02-23
告诉数据库您要从数字2
中减去数字23
和2015
。
字符串必须为'quoted'
。
但是,您应该使用参数来避免此类格式问题:
String countQuery = "SELECT id FROM challenge WHERE date = ?";
Cursor cursor = db.rawQuery(countQuery, new String[]{ fDate });