为什么不推荐SQLite C接口中的sqlite3_get_table接口
Why the interface sqlite3_get_table in SQLite C Interface is not recommended
sqlite3_get_table
定义如下:
int sqlite3_get_table(
sqlite3 *db, /* An open database */
const char *zSql, /* SQL to be evaluated */
char ***pazResult, /* Results of the query */
int *pnRow, /* Number of result rows written here */
int *pnColumn, /* Number of result columns written here */
char **pzErrmsg /* Error msg written here */
);
正如文档中所说,它可以方便地获得结果表,并作为sqlite3_exec()的包装实现。
但现在不推荐:
这是为了向后兼容而保留的遗留接口。不建议使用此接口。
但是如果我使用sqlite3_exec
,我需要写一个额外的回调函数。它更复杂。
所以我的问题是这个接口的主要问题是什么?为什么需要弃用它?
详细信息见http://www.sqlite.org/c3ref/free_table.html
sqlite3_get_table
的问题是所有值都转换为字符串,并且必须为所有结果记录分配内存。
您应该使用sqlite3_prepare_v2/sqlite3_step/sqlite3_column_xxx/sqlite3_finalize函数
相关文章:
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- Visual C++GC接口如何启用它以及要包含哪个库
- Windows.h与GLFW.h的接口
- 无法在windows上使用mingw将sqlite3与c连接
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 提供与TMP和SFINAE的通用接口
- 为重写std::exception的库生成swig接口时出错
- 内联如何影响模块接口中的成员函数
- COM 接口 c# 封送数组数组
- 如何在 SCIP C++ 接口中获取 MILP 约束矩阵中的系数值
- 重载 -> shared_ptr 个实例中的箭头运算符<interface>,接口中没有纯虚拟析构函数
- sqlite3 和生成文件中的链接出现问题
- 如何在 sqlite3 中的表中添加整数列表
- 如何绑定 C++ gRPC 客户端的网络接口
- 模板化接口 - 创建一个泛型模板类以返回任何容器
- 如何从实现接口的模板化类实例访问结构
- SQLite3 在 c++ 中输出 SELECT 上的空列表
- 带有进度表的 curl 多接口程序
- 设计帮助 - 为不同类型的消息处理通用接口的设计模式
- SQLite3 C 接口:如何确定表的存在