SQLite 在一个区间内从 table 中选择一行

SQLite selecting a row from table in an interval

你好,我正在做一个 Android SQLite 项目,但找不到获取值的方法,该程序从用户那里获取输入值并在数据库中搜索它,我想做一个查询喜欢;如果输入值为 3;如果值介于 col_a 和 col_b 之间,则查看 col_a 和 col_b 打印 col_c 值“AA”和 col_d 值“BB” ”。像 col_a < 3 的第一行

这是我的代码;

Cursor cursor = db.rawQuery("SELECT * FROM my_table WHERE col_a < 3 < col_b " , null);
    if (cursor.moveToNext()) {
        String element1 = cursor.getString(cursor.getColumnIndexOrThrow("col_c"));
        String element2 = cursor.getString(cursor.getColumnIndexOrThrow("col_d"));
        String element3 = cursor.getString(cursor.getColumnIndexOrThrow("ID"));
        cursor.close();

        Log.d(""," " +element1);
        Log.d(""," " +element2);
        Log.d(""," " +element3);
    }

这是一个例子table;

ID  |  col_a  |  col_b  |  col_c  |  col_d 
-------------------------------------------
1   |    1    |    5    |   AA    |   BB   
-------------------------------------------
2   |    5    |    10   |   CC    |   DD    
-------------------------------------------

假设用户输入的值存储在数值变量x中,构造sql语句,并为该值使用?个占位符:

String sql = "SELECT * FROM my_table WHERE col_a < ?  AND ? < col_b";
Cursor cursor = db.rawQuery(sql, new String[] {String.valueOf(x), String.valueOf(x)});
if (cursor.moveToNext()) {
    String element1 = cursor.getString(cursor.getColumnIndexOrThrow("col_c"));
    String element2 = cursor.getString(cursor.getColumnIndexOrThrow("col_d"));
    String element3 = cursor.getString(cursor.getColumnIndexOrThrow("ID"));
    cursor.close();
    Log.d(""," " +element1);
    Log.d(""," " +element2);
    Log.d(""," " +element3);
}

如果列 col_acol_b 的数据类型是 INTEGER 您可以使用运算符 BETWEEN:[= 简化 sql 语句21=]

String sql = "SELECT * FROM my_table WHERE ? BETWEEN col_a + 1  AND col_b - 1";
Cursor cursor = db.rawQuery(sql, new String[] {String.valueOf(x)});
.....................................................................

此外,如果您希望返回超过 1 行,请使用 while 循环而不是 if:

while (cursor.moveToNext()) {
   .................................
}