我创建了一个包含3列表的数据库。 [ID Date FCode ZCode]。
// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_CODES_TABLE = "CREATE TABLE " + TABLE_NAME + "("
+ KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ KEY_DATE + " TEXT,"
+ KEY_FCODE + " TEXT,"
+ KEY_ZCODE + " TEXT" + ")";
db.execSQL(CREATE_CODES_TABLE);
}
我已经设法与SQLite数据库进行通信,但是我在从数据库返回一些值时遇到了问题。更确切地说,我在数据库中插入一些信息,如:
db.addSQLinfo(new SQLCodes("01-07-2016", "100", "200"));
db.addSQLinfo(new SQLCodes("02-07-2016", "101", "201"));
db.addSQLinfo(new SQLCodes("03-07-2016", "102", "202"));
db.addSQLinfo(new SQLCodes("04-07-2016", "103", "203"));
db.addSQLinfo(new SQLCodes("05-07-2016", "104", "204"));
db.addSQLinfo(new SQLCodes("06-07-2016", "105", "205"));
db.addSQLinfo(new SQLCodes("07-07-2016", "106", "206"));
以后我正在使用此查询来检索数据。我的目标是根据我设置的日期返回所有值。所以例如,如果我执行这个:
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(
TABLE_NAME, new String[]{KEY_ID, KEY_DATE, KEY_FCODE, KEY_ZCODE},
"05-07-2016", null, null, null, null);
if (cursor != null)
cursor.moveToNext();
String[] infos = {
cursor.getString(0), // return KEY_ID
cursor.getString(1), // return KEY_DATE
cursor.getString(2), // return KEY_FCODE
cursor.getString(3) // return KEY_ZCODE
};
infos String []数组总是有[1,01-07-2016,100,200],无论我在db.query中设置的日期如何。我尝试了其他几种Query方法但没有结果。
答案 0 :(得分:2)
我认为你错过了一个参数。
第3个参数是您要检查的列名? 第四个你要检查的价值。
应该是:
Cursor cursor = db.query(
TABLE_NAME, new String[]{KEY_ID, KEY_DATE, KEY_FCODE, KEY_ZCODE},
KEY_DATE + "= ?", new String[] {"05-07-2016"}, null, null, null);