SQLite——exec操作

举报
小糖饼最甜呀 发表于 2022/04/13 21:20:21 2022/04/13
【摘要】 本文使用C++开发语言,对SQLite数据库进行基本操作。SQLite数据库基本操作如下:打开数据库调用sqlite3_exec()函数,执行SQL语句关闭数据库; 打开数据库sqlite3_open函数函数作用: 用于打开指定数据库文件名的数据库。如果数据库文件不存在,则会在指定路径下创建。函数原型:////// \brief sqlite3_open/// \param filename...

本文使用C++开发语言,对SQLite数据库进行基本操作。
SQLite数据库基本操作如下:

  • 打开数据库
  • 调用sqlite3_exec()函数,执行SQL语句
  • 关闭数据库;

打开数据库

sqlite3_open函数
函数作用: 用于打开指定数据库文件名的数据库。如果数据库文件不存在,则会在指定路径下创建。
函数原型:

///
/// \brief sqlite3_open
/// \param filename 数据库文件名称
/// \param ppDb OUT:SQLite数据库句柄
/// \return 
///
int sqlite3_open(const char *filename, sqlite3 **ppDb);

注:如果文件名(参数filename)是":memory:",则为该连接创建一个私有的临时内存数据库

返回值:返回值为int,具体参照“Result Codes”集合。
成功:SQLITE_OK,即0;
失败:不等于SQLITE_OK,即非零;

执行SQL语句

sqlite3_exec函数
函数作用: 用于执行SQL语句
函数原型:

///
/// \brief sqlite3_exec
/// \param db 数据库连接
/// \param sql SQL语句
/// \param callback 回调函数
/// \param arg 回调函数的第一个参数
/// \param errmsg 错误信息
/// \return 
///
int sqlite3_exec(sqlite3* db, const char *sql, int (*callback)(void*,int,char**,char**) , void *arg, char **errmsg);

其他说明:

  • sql语句可以是一条或者多条。
  • 当执行多条sql语句时,发生错误,则后续语句都会被跳过,不执行。
  • 回调函数参数不是必须的,可以传null,因为不是所有的操作都需要调用回调函数。对于不关心SQL语句结果的操作,回调函数直接设置null即可。

回调函数说明:

int callback(void *data, int n_columns, char **col_values, char **col_names)

参数1:sqlite3_exec()函数指定的参数
参数2:结果列数
参数3:字符串指针数组,列数据
参数4:字符串指针数组,列名称

关闭数据库

sqlite3_close函数
函数作用: 关闭数据库,释放资源。
函数原型:

int sqlite3_close(sqlite3*);

其他说明:

  • 无论是否成功打开数据库连接,数据库操作结束时,都应该通过sqlite3_close()函数来释放数据库相关资源,避免程序内存泄漏。

示例

数据库操作流程:
创建数据库–》设置SQL语句–》打开数据库–》执行SQL语句–》操作结束,关闭数据库。
数据库操作代码示例:

// 创建数据库
sqlite3 * database;
// 操作失败原因
char *err_msg = NULL;
// SQL语句,查询表demotable中的name字段
char sql[] =SELECT name FROM demotable”;
// 打开数据库,内存中的临时数据库
int result = sqlite3_open(":memory:", &database);
if(SQLITE_OK != result)
{
    // error
}
else
{
    // 执行数据库
    sqlite3_exec(database, sql, 0, 0, &err_msg);
}
// 关闭数据库
sqlite3_close(database);
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。