如何在sqlite&中使用LIKE查询苹果手机

时间:2009-12-25 00:54:00

标签: iphone objective-c cocoa-touch sqlite

我正在使用以下内容进行LIKE查询。这种技术对于LIKE是否正确?

selectstmtSearch = nil;

if(selectstmtSearch == nil){
  const char *sql = "SELECT col1, col2 FROM table1 t1 JOIN table2 t2 ON t1.cityid = t2.cityid where t1.cityname like ?001 order by t1.cityname";

  if(sqlite3_prepare_v2(databaseSearch, sql, -1, &selectstmtSearch, NULL) == SQLITE_OK) 
  {
     sqlite3_bind_text(selectstmtSearch, 1, [[NSString stringWithFormat:@"%%%@%%", searchText] UTF8String], -1, SQLITE_TRANSIENT);
  }
}

我遇到的问题是经过几次使用后,我在sqlite3_open()上收到错误14,无法打开数据库。如果我用以下内容替换LIKE:

SELECT col1, col2 
  FROM table1 t1  
  JOIN table2 t2 ON t1.cityid = t2.cityid 
 where t1.cityname = ? 
order by t1.cityname

工作正常。我在上面的代码之前打开/关闭数据库。有没有办法解决无法打开数据库的原因以及它与我的LIKE语法的关系是什么?

1 个答案:

答案 0 :(得分:1)

在关闭数据库连接之前,您必须sqlite3_resetsqlite3_finalize(selectstmtSearch)