【问题标题】: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

 }

【问题讨论】:

  • 如果您正在寻找为您编写代码的人,这不是正确的地方。这是一个链接,您可以在其中了解 SQL 查询的工作原理w3schools.com/sql

标签: 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 注入。

【讨论】:

    猜你喜欢
    • 2021-12-11
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    相关资源
    最近更新 更多