我正在使用sqlite C API “Everything”在主函数中运行(变量,打开,执行查询,关闭数据库等) 另外,我现在想要创建单独的用户定义函数,例如,对数据库进行排序。
将db对象和变量从main传递给这个新函数的最佳方法是什么?将它们全部创建为全局变量?通过参考传递?这是Sqlite3_create_function的用途吗?
如果需要,请告诉我如何澄清这个问题。
感谢。
答案 0 :(得分:1)
sqlite3_create_function
需要void *pApp
个参数。目的是指向您的函数使用的数据。指针存储在SQLite托管函数上下文中。您可以使用sqlite3_user_data
从用户函数中返回此指针。由于您分配了内存,因此可以在应用程序和函数之间共享它。
这种机制并不比使用全局变量困难,并且如果您决定稍后再这样做,则支持多线程应用程序。
答案 1 :(得分:1)
将sqlite3 * db指针作为参数传递给函数。
或者使用quickstart guide
中的回调