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_a
和 col_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()) {
.................................
}
你好,我正在做一个 Android SQLite 项目,但找不到获取值的方法,该程序从用户那里获取输入值并在数据库中搜索它,我想做一个查询喜欢;如果输入值为 3;如果值介于 col_a 和 col_b 之间,则查看 col_a 和 col_b 打印 col_c 值“AA”和 col_d 值“BB” ”。像 col_a < 3 这是我的代码; 这是一个例子table;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);
}
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_a
和 col_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()) {
.................................
}