【发布时间】:2017-03-31 09:35:32
【问题描述】:
我正在使用 wxSQLite3(wxWidgets 的一部分)来访问 SQLite 数据库。一切正常,但现在我需要向 SQLite 添加一个 cutsom 函数。由于代码中的所有内容都是通过 wxSQLite3 完成的,所以我想使用 wxSQLite3 接口来添加函数,而不是普通的 C SQLite API。 按照文档,我声明了一个继承 wxSQLite3ScalarFunction 的类:
class checkDateFun : public wxSQLite3ScalarFunction {
public:
void Execute(wxSQLite3FunctionContext& ctx);
};
并重写纯虚拟 wxSQLite3ScalarFunction::Execute() 方法,如下所示
void checkDateFun::Execute(wxSQLite3FunctionContext& ctx)
{
wxString date1 = ctx.GetString(0);
wxString date2 = ctx.GetString(1);
//some checks on dates
ctx.SetResult(1);
return;
}
然后,在创建数据库的过程中,我注册了正在做的函数
checkDateFun fun;
bool regOk = m_db->CreateFunction("CheckDate", 2, fun);
但是当我稍后尝试使用该函数进行查询时,我收到此错误: “抛出异常:读取访问冲突。func-> 为 0xFFFFFFFFFFFF7”。
我做错了什么? 感谢您的帮助和时间。
【问题讨论】:
-
请注意:
wxSQLite3是一个使用 wxWidgets 构建的组件,而不是 wxWidgets 的一部分。