[英]FMDB SQLite wrapper and user defined/custom functions
我現在正在將FMDB用於iPhone應用程序,我發現它......好吧。 這確實是一個很棒的SQLite包裝器。
FMDB GitHub: https : //github.com/ccgus/fmdb
唯一的問題是我需要使用自定義功能。 在SQLite中,我可以使用以下語法輕松完成此操作:
sqlite3_create_function(database, "custom", 4, SQLITE_UTF8, NULL, &customFunc, NULL, NULL);
除了FMDB我不認為有辦法使用自定義功能嗎?
如果我錯了糾正我。 任何幫助將不勝感激。
你想要FMDatabase的makeFunctionNamed:maximumArguments:withBlock:方法:
https://github.com/ccgus/fmdb#making-custom-sqlite-functions-based-on-blocks https://github.com/ccgus/fmdb/blob/master/src/fmdb.m#L1033
我知道這是一個老問題,但以下應該有效:
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
但是您可以理解。
FMDB是開源的,你可以添加一個包裝器方法來包裝創建一個新的SQLite函數。 應該不難。 您可以使用其他包裝器方法作為模板來完成此操作。
也許你可以將你的補充貢獻給社區?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.