2013-12-13 414 views
0

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

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

问题是,游标c为空。 我不知道我在错误的地方在查询中。请帮忙。

谢谢!

+0

你如何存储读取dbDate和dbTime?什么是变量AlarmDate和Alarmtime? – Szymon

+0

dbDate和dbTime是包含String类型值的表TASK中的字段。 AlarmDate和Alarmtime是字符串值 – sanjana

回答

-1
SQLiteDatabase db = getReadableDatabase(); 


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

请确保您已获得'db'的可读数据库,否则每次都会返回null。 也改变你的原始查询结束为新的字符串[] {}

希望这可以帮助,这是我在我的应用程序中使用。

+0

我已经使用db = openOrCreateDatabase(“Globus”,0,null);其中Globus是db名称。 – sanjana

+0

一个空的参数列表是多余的。 –

0

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

​​
0

通过您的评论去“我已经使用db = openOrCreateDatabase("Globus", 0, null);其中的Globus是数据库名称”,你是不是使用SQLite正确的Android。

什么,你应该做的是创造延伸SQLiteOpenHelper类,然后确保你重写onCreateonUpgrade方法,这些都是在其中创建表和更改的方法,它已经说了一百遍就在这里等我将提供一个链接到一个教程:http://www.codeproject.com/Articles/119293/Using-SQLite-Database-with-Android

当你这样做的数据库操作,对高级应召​​(http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html#getWritableDatabase()

我说叫​​,因为这样你就不需要担心,如果你可以写它,一个可写的数据库也是可读的。只是FYI。询问更多细节。

这应该是阅读的过程中(写作是一样的,只是使用你想要的,而不是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