我正在编写我的第一个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搜索)?
任何方向都非常感谢!
发布于 2013-01-11 00:26:55
阅读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 });
https://stackoverflow.com/questions/14262269
复制相似问题