代码之家  ›  专栏  ›  技术社区  ›  gotnull mzelina

FMDB SQLite包装器和用户定义/自定义函数

  •  2
  • gotnull mzelina  · 技术社区  · 14 年前

    我正在用FMDB开发一个iPhone应用程序,我发现它。。。可以。它确实是一个很棒的小SQLite包装器。

    联邦数据库GitHub: https://github.com/ccgus/fmdb

    唯一的问题是我需要使用一个自定义函数。在SQLite中,我可以使用以下语法轻松地做到这一点:

    sqlite3_create_function(database, "custom", 4, SQLITE_UTF8, NULL, &customFunc, NULL, NULL);
    

    除了FMDB,我不认为有办法使用自定义函数?

    如果我错了就纠正我。任何帮助都将不胜感激。

    3 回复  |  直到 14 年前
        2
  •  1
  •   Jasarien    14 年前

    FMDB是开源的,您可以添加一个包装方法来包装创建一个新的SQLite函数。应该不难。您可以使用其他包装器方法作为模板来完成此任务。

    也许你可以把你的新成员贡献给社区?

        3
  •  1
  •   Musket    11 年前

    我知道这是个老问题,但下面的问题应该管用:

    FMDatabase *database = [FMDatabase databaseWithPath:dbPath];
    
    [database open];
    
    sqlite3_create_function([database sqliteHandle], "distance", 4, SQLITE_UTF8, NULL, &distanceFunc, NULL, NULL);
    
    FMResultSet *results = [database executeQuery:@"SELECT * from stores WHERE distance(latitude, longitude, -37.77023, 148.089688) < 1"];
    

    显然,你会用 custom customFunc (或其他)代替 distance distanceFunc 但你明白了。