【问题标题】:Querying for URL string in SQLite 3 database在 SQLite 3 数据库中查询 URL 字符串
【发布时间】:2013-01-10 16:13:16
【问题描述】:

我正在编写我的第一个 Android 应用程序,并使用 SQLite 数据库将数据存储在多个表上。我的一个表包含与某个搜索相对应的一堆页面的 URL。

使用我数据库中的字符串字段,我可以轻松地存储 html(格式为 html://mysite.org/blah/blah.htm 或 *.jpg,具体取决于我在做什么)。这些 URL 也很容易从数据库中检索到。

但是,为了更高效,我只想解析并添加一次这些 URL。我希望能够在表中搜索 URL,并且仅在 URL 不存在时才解析和添加它。问题是特殊字符(肯定是冒号和句点)会导致问题,因为它们是查询字符。我试过使用方括号({}),用单引号(')将查询中的 URL 括起来,甚至尝试使用反斜杠。

这里有什么我想查询的东西吗: SELECT * from TABLE WHERE url="http://*.htm" ?

此外,这是将 URL 存储到数据库的最佳方式吗?我正在处理的 URL 有时是从搜索表单填充值的搜索 URL,因此它们可能包含特殊字符(想想 Craigslist 搜索)?

非常感谢任何方向!

【问题讨论】:

    标签: java database sqlite url special-characters


    【解决方案1】:

    阅读documentation of the LIKE operator;您的查询应如下所示:

    SELECT * FROM MyTable WHERE url LIKE 'http://%.htm'
    

    此外,您的搜索字符串可能包含%_ 字符,因此您应该使用ESCAPE 子句。

    为确保' 等特殊字符在构造 SQL 命令时不会让您感到困惑,请使用参数:

    String searchPattern = "http://%.htm%";
    Cursor c = db.rawQuery("SELECT * FROM MyTable WHERE url LIKE ?",
                           new String[] { searchPattern });
    

    【讨论】:

      猜你喜欢
      • 2015-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-21
      相关资源
      最近更新 更多