【问题标题】:Error occurred while store image path to SQLite Database using Android?使用 Android 将图像路径存储到 SQLite 数据库时发生错误?
【发布时间】:2018-08-22 09:19:20
【问题描述】:

它继续出现错误...是什么问题? 每个变量都是字符串。

String insertSQL = "INSERT INTO " + DBHelper.getTableName() + " VALUES (\''"+entry.getKey()+"\'', \''"+images+"\'')";

错误信息

插入标签结果值(''Sky'', ''["/storage/emulated/0/DCIM/CandyCam/IMG_20171009_164101723.jpg","/storage/emulated/0/DCIM/Pictail/IMG_20180305_000218777.jpg","/storage/emulated/0/DCIM/Pictail/IMG_20180401_235850107 .jpg","/storage/emulated/0/DCIM/Pictail/IMG_20180518_194252232.jpg"]''))

我的表有三列:ID(Integer), LABEL(TEXT), IMAGES(TEXT)

【问题讨论】:

  • 分享你的创建表 SQL 查询
  • 我的表有三列:ID(Integer), LABEL(TEXT), IMAGES(TEXT)
  • bareham,不是现在需要它(我已经相应地编辑了问题),但如果您被要求提供更多信息并拥有该信息,最好编辑问题并将其包含在问题中。无论如何也要回复评论。
  • @MikeT 谢谢你的支持

标签: android android-sqlite android-sql


【解决方案1】:

问题 1 您指定了一个带空格的表名,即 LABELING RESULT,如果这是表名,那么您需要将其括起来,例如[标签结果]。

问题 2 你应该只有 1 个单引号。

问题 3 你有一个额外的右括号。

我相信以下是您想要的:-

INSERT INTO [LABELING RESULT] VALUES ('Sky', '["/storage/emulated/0/DCIM/CandyCam/IMG_20171009_164101723.jpg","/storage/emulated/0/DCIM/Pictail/IMG_20180305_000218777.jpg","/storage/emulated/0/DCIM/Pictail/IMG_20180401_235850170.jpg","/storage/emulated/0/DCIM/Pictail/IMG_20180518_194252232.jpg"]'))

哪个(虽然没有检查)是:-

String insertSQL = "INSERT INTO [" + DBHelper.getTableName() + "] VALUES ('"+entry.getKey()+"', '"+images+"')";

假设 Sky 进入 LABEL 列,2 个逗号分隔的图像路径进入 IMAGES 列。

额外的重新封闭([]):-

如果您想使用关键字作为名称,您需要引用它。那里 SQLite中引用关键字的四种方式:

  • 'keyword' 单引号中的关键字是字符串文字。
  • "keyword" 双引号中的关键字是标识符。
  • [keyword] 方括号中的关键字是标识符。这不是 标准 SQL。 MS Access 和 SQL 使用此引用机制 服务器并包含在 SQLite 中以实现兼容性。
  • keyword 用重音符号(ASCII 代码 96)括起来的关键字是标识符。 这不是标准 SQL。 MySQL 使用这种引用机制,并且 为了兼容性,包含在 SQLite 中。

SQL As Understood By SQLite - SQLite Keywords

【讨论】:

  • 表名一定要带括号([])吗?
  • 是的,或者其他有效的封闭字符(将相应地更新答案)如果它有一个空格,虽然我个人不会使用空格或者下划线。例如LABELING_RESULT。
猜你喜欢
  • 2012-04-09
  • 2013-06-15
  • 1970-01-01
  • 2012-01-18
  • 1970-01-01
  • 2019-04-02
  • 1970-01-01
  • 2012-06-04
  • 2013-06-02
相关资源
最近更新 更多