2

我试图在 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 中做同样的事情?

4

1 回答 1

0

在下面的示例中,我创建了名为 MySqliteAdd的自定义 sqlite 函数,它有两个参数作为输入,结果是它们的总和

[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));
于 2020-09-15T13:25:50.253 回答