1

我正在编写我的第一个 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 搜索)?

任何方向都非常感谢!

4

1 回答 1

0

阅读运营商的文件LIKE;您的查询应如下所示:

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 });
于 2013-01-10T16:26:54.727 回答