查询Sqlite数据库where子句Android

时间:2013-12-13 10:41:58

标签: android sql sqlite android-sqlite where-clause

您好我正在开发一个Android应用程序。我正在尝试从数据库中查询。我需要从表TASK中获取所有内容,其中dbDate = AlarmDate和dbdTime = AlarmTime。

c = db.rawQuery("SELECT * FROM TASK WHERE dbDate = '"+AlarmDate+"' AND dbTime= '"+Alarmtime+"'", null);

问题是,光标c为空。 我不确定我在查询中出错了。请帮助。

谢谢!

3 个答案:

答案 0 :(得分:0)

Android有绑定方法,以避免sql注入。您可以使用第二个参数来提供SQL的变量。

Cursor cur = db.rawQuery("SELECT * FROM TASK WHERE dbDate = ? AND dbTime = ? ", new String[]{AlarmDate, AlarmDate});

答案 1 :(得分:0)

通过你的评论'我已经使用了db = openOrCreateDatabase("Globus", 0, null);,其中Globus是数据库名称',你没有正确使用SQLite与android。

你应该做的是创建扩展SQLiteOpenHelper的类,然后确保覆盖onCreateonUpgrade方法,这些是创建表和进行更改的方法,在这里已经说过一百次,所以我将提供教程的链接:http://www.codeproject.com/Articles/119293/Using-SQLite-Database-with-Android

当你进行数据库操作时,在课堂上调用getWritableDatabasehttp://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html#getWritableDatabase()

我说调用getWritableDatabase因为你不需要担心,如果你可以写它,可写数据库也是可读的。仅供参考。询问更多细节。

这应该是阅读过程(写作是一样的,只需使用你想要的方法而不是query):

SQLiteDatabase db = dbHelper.getWritableDatabase();
db.beginTransaction();//this should lock the tables you are reading
Cursor c = db.rawQuery("select 1 where 1=?", new String[]{"1"});
if(c.moveToFirst()){
    do{
        //Do what you want with the row
    }while(c.moveToNext());
}
c.close();
db.setTransactionSuccessful();
db.endTransaction();
db.close();

这是我编写的数据库帮助程序的源代码,也许它会有所帮助,通读它,了解它是如何工作的。 https://bitbucket.org/FabianCCook/dbhelper/src/af7a8eba8d1a3f139e4170bbef9f1a2d3fdf1b47/src/nz/smartlemon/DatabaseHelper/ApplicationDataDbHelper.java?at=master

如果您想知道open方法存在的原因,请阅读此代码

(这个课程是在别人的帮助下制作的)

https://bitbucket.org/FabianCCook/dbhelper/src/af7a8eba8d1a3f139e4170bbef9f1a2d3fdf1b47/src/nz/smartlemon/DatabaseHelper/SDCardSQLiteOpenHelper.java?at=master

答案 2 :(得分:-1)

SQLiteDatabase db = getReadableDatabase();


 Cursor cur = db.rawQuery("SELECT * FROM TASK WHERE dbDate = '"+AlarmDate+"' AND dbTime = '"+AlarmTime+"'",new String [] {});

确保您已获得“db”的可读数据库,否则每次都会返回null。 同时将原始查询的结尾更改为新的String [] {}

希望这会有所帮助,这就是我在我的应用程序中使用的内容。