如何在xamarin中的SQLite中创建用户定义的函数?

时间:2016-08-15 12:08:26

标签: c# xamarin sqlite.net

我尝试在xamarin

中执行此查询
SELECT * FROM GPSPoint WHERE SQRT( POW({0}-lat,2) + POW({1}-lng,2) ) < 5*5

但它给了我错误信息

SQLite.SQLiteException: no such function: SQRT

搜索后我发现 Android 开发人员可以使用sqlite3_create_function方法在SQLite中创建新功能。

我怎样才能在xamarin中做同样的事情?

1 个答案:

答案 0 :(得分:0)

在下面的示例中,我将自定义sqlite函数称为 MySqliteAdd ,其中有两个参数作为输入,它们的和为结果

[SqliteFunction(FuncType = FunctionType.Scalar, Arguments = 2, Name = "MySqliteAdd")]
public class MySqliteAdd : SqliteFunction
{
   public override object Invoke(object[] args){
        return System.Convert.ToInt32(args[0]) + System.Convert.ToInt32(args[1]);
   }
}

您可以在如下所示的sqlite查询中使用它

Select MySqliteAdd(25,35)

这将给您60的结果

最后,您必须在初始化连接之前注册该功能

SqliteFunction.RegisterFunction(typeof(MySqliteAdd));