在SQLite 3数据库中查询URL字符串

时间:2013-01-10 16:13:16

标签: java database sqlite url special-characters

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

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

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

我在这里找不到能够查询的内容: SELECT * from TABLE WHERE url =“http://*.htm”?

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

非常感谢任何方向!

1 个答案:

答案 0 :(得分:0)

阅读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 });