gpt4 book ai didi

objective-c - 带字符的 FMDB 查询

转载 作者:搜寻专家 更新时间:2023-10-30 20:21:45 26 4
gpt4 key购买 nike

我目前正在尝试对单词数据库执行查询。数据库的组织方式使我可以通过单词的首字母和单词的长度进行访问。但是,当我使用字母和长度进行搜索时遇到了问题:

//random letter sends an NSString with just a single letter from the English alphabet
NSString * randomLetter = [self randomLetter];
int characterCodeInASCII = [randomLetter characterAtIndex:0];

FMResultSet *rs = [db executeQuery:@"SELECT * FROM WORDS WHERE INDEXER=? AND LENGTH=?",characterCodeInASCII,length];

不幸的是,查询没有返回任何值。我尝试过使用 char 作为输入、字符串和 int。

我很困惑,因为我可以使用 ruby​​ 执行相同的查询:

list=db1.execute("SELECT * FROM WORDS WHERE INDEXER=110 AND LENGTH=7")

并得到 453 个结果....

sqlite 表有以下列:

>> db1.execute("SELECT * FROM sqlite_master")
=> [["table", "words", "words", 2, "CREATE TABLE words(word VARCHAR(15) PRIMARY KEY, indexer VARCHAR(1), length INTEGER)"], ["index", "sqlite_autoindex_words_1", "words", 3, nil]]

关于我可能遗漏的任何想法?

非常感谢!

最佳答案

FMDB 期望 executeQuery: 方法的所有参数都是对象,而 int 不是对象。

您可以采用以下几种方法:

  1. int 装在 NSNumber 中。看起来像这样:

    NSString *randomLetter = ...;
    NSNumber *characterCode = [NSNumber numberWithInt:[randomLetter characterAtIndex:0]];

    NSNumber *length = [NSNumber numberWithInt:lengthAsInt];
    FMResultSet *rs = [db executeQuery:@"SELECT * FROM WORDS WHERE INDEXER=? AND LENGTH=?", characterCode, length];
  2. 使用不同的方法,例如 executeQueryWithFormat: 方法:

    FMResultSet *rs = [db executeQueryWithFormat:@"SELECT * FROM WORDS WHERE INDEXER = %d AND LENGTH + %d", characterCodeInASCII, length];

关于objective-c - 带字符的 FMDB 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9082045/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com