2009-12-25 31 views
2

我對LIKE查詢使用以下代碼。這種LIKE技術是否正確?如何在sqlite和iPhone中使用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

是?001整數文字應該如何傳遞,即前導零? – Tim 2011-07-12 13:56:21

回答

1

您必須在關閉數據庫連接之前sqlite3_resetsqlite3_finalize(selectstmtSearch)

+0

即將完成。 – 4thSpace 2009-12-25 04:22:31