【问题标题】:SQlite database android studio in KotlinKotlin 中的 SQlite 数据库 android studio
【发布时间】:2021-05-16 14:00:44
【问题描述】:
SQlite 数据库 Android Studio 中的新功能现在我有一个应用程序,可以将一些数据存储在表格中,例如姓名、电话号码和日期。我有一个日期选择器。我想要的是当我选择一个日期时,它只显示日期等于我从日期选择器中选择的日期的数据。如果可能的话,我想在 kotlin 中得到答案。但即使在java中应该这样做我也会转换它。谢谢
fun DateCount(): Int {
val db = this.readableDatabase
val cursor = db.rawQuery("SELECT $DATE_COLUMN FROM $TABLE_NAME", null) // dont know what to write here
val count = cursor.count
cursor.close()
return count
}
【问题讨论】:
标签:
android
android-studio
kotlin
android-sqlite
【解决方案1】:
val cursor = db.rawQuery("SELECT $DATE_COLUMN FROM $TABLE_NAME", null) // 不知道在这里写什么
您需要一个 WHERE 子句,例如:-
fun DateCount(pickedDate: String): Int {
val db = this.readableDatabase
val cursor = db.rawQuery("SELECT $DATE_COLUMN FROM $TABLE_NAME WHERE $DATE_COLUMN = '$pickedDate'", null) // dont know what to write here
val count = cursor.count
cursor.close()
return count
}
-
pickedDate 将是从日期选择器中选择的日期。
-
pickedDate 的格式必须与保存的数据完全相同。
-
因此,如果日期包含时间和日期,那么您必须更改 LIKE 子句的 =,例如WHERE $DATE_COLUMN LIKE '$pickedDate%'
-
或者你可以使用 SQLite substr 函数,例如WHERE substr($DATE_COLUMN,1,length($pickedDate)) = $pickedDate
-
您还应该考虑利用 rawQuery 的第三个参数来绑定pickDate(即在 SQL 中使用 ?,因为第三个参数是 String[],pickDate 是唯一的元素) .这可以防止 SQL 注入。