gpt4 book ai didi

java - Cordova s​​qlite插件android正则表达式功能

转载 作者:行者123 更新时间:2023-12-01 11:04:31 25 4
gpt4 key购买 nike

首先,感谢您阅读和/或回答我!

所以,实际上我在使用来自 Brody 的 sqlite 插件的 REGEXP 时遇到了一些麻烦(这个: https://github.com/litehelpers/Cordova-sqlite-storage )

我知道通常 REGEXP 不会嵌入 sqlite 作为默认可用函数,但我看到它在这个插件中实现,并且它可以在 ios 上运行,但不能在 Android 上运行...(好像该函数甚至没有根本存在)

所以我的问题是“你能帮我理解为什么它不起作用吗?我怎样才能让它与这个插件一起工作?”

谢谢大家! :D

我的请求:“从 Assets 中选择 *,其中 id REGEXP '32'”

以两种不同的方式使用来测试它是否是我调用 sqlite 插件的方式生成的错误:

这个:

SQLite.exec( db, request, [], function(results) {
var assets = [];
for (var i = 0, rows = results.length; i < rows && assets.length < 100; i++) {
assets.push(results.item(i));
}
return callback(assets);
});

还有这个:

var db = sqlitePlugin.openDatabase({name: db_name});

db.transaction(function(tx) {
tx.executeSql(request, [], function(tx, result) {
success(result);
} function(tx, error) {
error(error);
}
});

错误:“准备语句失败,错误 1”

实际上尝试了带有工作请求的 regexp sqlite 函数,但它在 Android 上不起作用。

在cordova插件中sqlite的C库上,我发现了一个正则表达式函数,试图使其工作,但目前不起作用,也许我做错了什么。

这是我在构建应用程序之前在 sqlite c 库中添加的内容:

#include <regex.h>

void sqlite_regexp(sqlite3_context* context, int argc, sqlite3_value** values)
{
int ret;
regex_t regex;
char* reg = (char*)sqlite3_value_text(values[0]);
char* text = (char*)sqlite3_value_text(values[1]);

if ( argc != 2 || reg == 0 || text == 0) {
sqlite3_result_error(context, "SQL function regexp() called with invalid arguments.\n", -1);
return;
}

ret = regcomp(&regex, reg, REG_EXTENDED | REG_NOSUB);
if ( ret != 0 ) {
sqlite3_result_error(context, "error compiling regular expression", -1);
return;
}

ret = regexec(&regex, text , 0, NULL, 0);
regfree(&regex);

sqlite3_result_int(context, (ret != REG_NOMATCH));
}

sqlite3_create_function(*db, "regexp", 2, SQLITE_ANY,0, &sqlite_regexp,0,0)

来源:http://question.ikende.com/question/2D31373237343132383834

PS:告诉我是否需要再次添加一些精度。谢谢。

最佳答案

编辑sqlite插件中的C代码不会对Android版本产生任何影响。 Android 版本是从 Java 构建的,并使用从 https://github.com/liteglue/Android-sqlite-native-driver 构建的 native sqlite 库。 。可以将 sqlite_regexp 函数添加到 https://github.com/liteglue/Android-sqlite-native-driver 中的 C 代码中。 ,重建库,并将它们与 sqlite 插件一起使用,但到目前为止尚未经过测试。

关于java - Cordova s​​qlite插件android正则表达式功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33081086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com