1

当我尝试使用特殊字符(如 ñ、é 等)执行查询时遇到问题。

奇怪的是,我正在尝试使用来自数据库的相同数据来获取数据。

例如,我有一个表“类别”。在该表中,字段 category_name 的返回值之一是“Música”。使用这些数据,我用控制器中的值填充一个 NSArray,该控制器用这些值填充表视图。该表显示在数据右侧。

然后,当用户在我的表格视图中点击“Música”行时,我需要与 category_name 为“Música”的类别相关的所有子类别。我得到点击的值 (NSString *)[self.data objectAtIndex:[indexPath row]] 并使用这个值我尝试执行如下查询:

NSString *query = [NSString stringWithFormat:@"select subcategory_name from categories where category_name = '%@'", (NSString *)[self.data objectAtIndex:[indexPath row]]];

当 category_name 没有任何特殊字符时它可以正常工作,但如果 category_name 有特殊字符,它不会获取任何数据。

否则,如果我记录查询并使用 SQLite Studio 中记录的相同查询,它会获取行。

有没有人知道我的查询没有获取数据会发生什么?

4

2 回答 2

2

使用它从数据库中获取数据 -

[NSString stringWithUTF8String:(const char*)sqlite3_column_text(statement, 4)];

希望,这就是你要找的。任何问题都可以回复我。:)

于 2014-09-25T06:17:06.797 回答
1

很可能是编码问题。数据库中的任何编码都不是您在查询中传递的编码。

要检查,您需要记录提供给 SQLite 的确切查询并检查查询的实际字节。

(Core Data 可以很好地处理这类事情——现在编写原始 SQL 通常是在浪费时间。至少使用 FMDB,但我不知道它是否能更好地处理编码。)

于 2012-04-08T16:24:10.457 回答