我在我的第一个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搜索)?
非常感谢任何方向!
答案 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 });