Mus*_*ven 35 sqlite android user-defined-functions
我在android中开发一个应用程序,我需要在sqlite中创建一个udf.是否可以在sqlite中创建它?如果是的话怎么做?
tid*_*all 72
SQLite不像Oracle或MS SQL Server那样支持用户定义的函数.对于SQLite,您必须在C/C++中创建一个回调函数,并使用sqlite3_create_function调用挂起该函数.
不幸的是,Android的SQLite API不允许sqlite3_create_function直接通过Java 进行调用.为了使它工作,您需要使用NDK编译SQLite C库.
如果您仍然感兴趣,请阅读2.3用户定义的函数 ...
以下是如何创建一个查找字符串第一个字节的函数.
static void firstchar(sqlite3_context *context, int argc, sqlite3_value **argv)
{
if (argc == 1) {
char *text = sqlite3_value_text(argv[0]);
if (text && text[0]) {
char result[2];
result[0] = text[0]; result[1] = '\0';
sqlite3_result_text(context, result, -1, SQLITE_TRANSIENT);
return;
}
}
sqlite3_result_null(context);
}
Run Code Online (Sandbox Code Playgroud)
然后将该函数附加到数据库.
sqlite3_create_function(db, "firstchar", 1, SQLITE_UTF8, NULL, &firstchar, NULL, NULL)
Run Code Online (Sandbox Code Playgroud)
最后,在sql语句中使用该函数.
SELECT firstchar(textfield) from table
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38501 次 |
| 最近记录: |