FMDB SQLite包装器和用户定义/自定义功能

时间:2010-11-21 12:59:42

标签: iphone objective-c sqlite wrapper fmdb

我现在正在将FMDB用于iPhone应用程序而且我找到了......好吧。这确实是一个很棒的SQLite包装器。

FMDB GitHub: https://github.com/ccgus/fmdb

唯一的问题是我需要使用自定义功能。在SQLite中,我可以使用以下语法轻松完成此操作:

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

除了使用FMDB我不认为有办法使用自定义功能吗?

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

3 个答案:

答案 0 :(得分:8)

答案 1 :(得分:1)

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

也许你可以将你的补充贡献给社区?

答案 2 :(得分:1)

我知道这是一个老问题,但以下情况应该有效:

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"];

显然,您可以使用customcustomFunc(或其他)代替distancedistanceFunc,但您明白了。