美文网首页
自定义SQlite函数

自定义SQlite函数

作者: 张智智智智智智 | 来源:发表于2018-01-16 20:20 被阅读0次

在android源码下开发过数据库的同学应该都看到这样的代码:

http://androidxref.com/8.0.0_r4/xref/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator2.java#1028
这里面的PHONE_NUMBERS_EQUAL(dataA." + Phone.NUMBER + ", " + "dataB." + Phone.NUMBER + ",?)"不知道是什么意思,在SQLite语句中根本就没有见过这样的函数,看不到在哪里有对它的描述,只能通过字面意思猜测是判断号码是否相等的函数,但是不知道具体在哪实现的,搞得是一头雾水。
其实,这个函数是在源码目录下/external/sqlite/android/sqlite3_android.cpp http://androidxref.com/8.0.0_r4/xref/external/sqlite/android/sqlite3_android.cpp 中实现的,在这里就能看到PHONE_NUMBERS_EQUAL这个函数的具体实现了,那么好奇的同学就会想了:“我想定义一个这样的函数,该如何操作呢?”,其实android已经帮我们把架构搭好了,我们只需要按照它给我们搭好的框架书写就可以了,当然是要在源码下面开发(其实Java也有一套自定义SQLite语句的方法后面再说)。
如果我们想要自定义一个匹配子串的函数,命名为match_string, SQL 语句中的函数名称我们定义为 "MATCH_STRING",具体步骤如下:
第一步:
我们先实现match_string这个函数,这个函数需要在sqlite3_android.cpp 中实现

第二步:
上面这个具体方法实现已经写好了,我们需要去sqlite3_android.cpp中register_android_functions方法里面注册一下这个函数

第三步:
我们的函数基本上就写完了,我们需要编译一下 external/sqlite,退回到根目录,执行make libsqlite,把编译出来的 libsqlite.so push到手机 /system/lib/ 路径下,重启手机。

这样就可以在Java中使用这个“MATCH_STRING”自定义函数了,例如:
Cursor result = query("SELECT * FROM audio WHERE MATCH_STRING(_data, "abc")");

相关文章

  • python3 数据库编程

    数据库的通用API 操作流程 sqlite3 curd executemany 创建自定义函数 自定义聚集函数 自...

  • 自定义SQlite函数

    在android源码下开发过数据库的同学应该都看到这样的代码: 这样就可以在Java中使用这个“MATCH_STR...

  • iOS开发-SQLite函数以及SQLite语句分享

    SQLite函数 SQLite语句

  • SQLite 常用函数

    SQLite 常用函数 SQLite 有许多内置函数用于处理字符串或数字数据。下面列出了一些有用的 SQLite ...

  • SQLite常用函数

    SQLite 内置函数,所有函数不区分大小写1,SQLite COUNT函数聚集函数是用来计算一个数据库表中的行数...

  • sqlite 函数

    sql 中也有函数,函数可以作用在 SELECT 的任何部分。 以下的函数只在 sqlite 中验证过,别的 DB...

  • SQLite 常用函数

    SQLite 有许多内置函数用于处理字符串或数字数据。下面列出了一些有用的 SQLite 内置函数,且所有函数都是...

  • 「SQLite学习笔记」常用函数

    SQLite 有许多内置函数用于处理字符串或数字数据。下面列出了一些有用的 SQLite 内置函数,且所有函数都是...

  • mysql-自定义函数

    创建自定义无参数函数 调用自定义函数 创建有参数的自定义函数 调用有参数的自定义函数 创建具有复合结构的自定义函数...

  • SQLite 日期 & 时间

    SQLite 日期 & 时间 SQLite 支持以下五个日期和时间函数: 上述五个日期和时间函数把时间字符串作为参...

网友评论

      本文标题:自定义SQlite函数

      本文链接:https://www.haomeiwen.com/subject/vkreoxtx.html