当前位置:   article > 正文

SQLite API函数_sqlite3 api

sqlite3 api

SQLite 是一种嵌入式 SQL 数据库引擎,其库文件大小小、速度快,常被用于轻量级的数据库应用开发,也广泛支持不同的编程语言,如 C、C++、Python 等。

在 C 语言中,SQLite 提供了一系列的 API 函数,用于与 SQLite 数据库交互,主要包括以下几类函数:

1.打开关闭数据库:

  1. int sqlite3_open(const char *filename, sqlite3 **ppDb);
  2. int sqlite3_close(sqlite3* db);

·filename:要打开的数据库文件名

·ppDb:指向sqlite3指针的指针,用于存储向打开的数据库连接的地址

sqlite3_open()函数用于打开一个SQLite数据库,返回一个sqlite3的指针,用于后续操作数据库。

sqlite3_close()函数用于关闭一个已打开的数据库。

 

2.执行SQL语句:

int sqlite3_exec(sqlite3* db, const char *sql, int (*callback)(void*, int, char**, char**), void* data, char **errmsg);

db:一个已经打开的数据库连接

sql:要执行的SQL语句

callback:回调函数,用于处理查询结果集

data:传递给回调函数的用户数据指针

errmsg:用于存储错误信息的指针

sqlite3_exec函数用于执行SQL语句,包括查询、修改、删除等操作。在执行SQL语句时,用户可以通过回调函数处理查询结果或错误消息。

 

3.获取执行错误信息

const char *sqlite3_errmsg(sqlite3*);

sqlite3_errmsg()函数用于获取最后一次执行的SQL语句的错误信息

 

4.获取查询结果

  1. int sqlite3_get_table(
  2. sqlite3* db, // 打开数据库的连接对象
  3. const char *sql, // 要执行的SQL查询语句
  4. char ***resultp, // 用于存储结果的二维数组
  5. int *nrow, // 存储结果行数的指针
  6. int *ncolumn, // 存储结果列数的指针
  7. char **errmsg // 用于存储错误信息的指针
  8. );
  9. void sqlite3_free_table(char **result);

db:一个已经打开的数据库连接对象

sql:要执行的SQL查询语句

resultp:一个指针用于存储结果集的行数

nrow:一个指针,用于存储结果集的行数

ncolumn:一个指针,用于存储结果集的列数

errmsg:用于存储错误信息的指针。如果函数执行成功,该指针将为NULL;如果执行失败,它将指向一个错误信息字符串

sqlite3_get_table()函数用于查询结果,并将结果以二维数据的形式返回。

sqlite3_free_table()函数用于释放查询结果所占用的内存。

 

下面是一份使用 SQLite3 API 函数的示例代码,用于创建一个简单的数据库,创建表格,并插入一条数据:

  1. #include <stdio.h>
  2. #include <sqlite3.h>
  3. int main(int argc, char* argv[])
  4. {
  5. sqlite3* db;
  6. char *err_msg = 0;
  7. int rc = sqlite3_open("test.db", &db);
  8. if (rc != SQLITE_OK)
  9. {
  10. fprintf(stderr, "Cannot open database: %s\n", sqlite3_errmsg(db));
  11. sqlite3_close(db);
  12. return 1;
  13. }
  14. char* sql = "CREATE TABLE Persons("
  15. "PersonID INT PRIMARY KEY,"
  16. "LastName TEXT NOT NULL,"
  17. "FirstName TEXT,"
  18. "Age INT);";
  19. rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
  20. if (rc != SQLITE_OK)
  21. {
  22. fprintf(stderr, "SQL error: %s\n", err_msg);
  23. sqlite3_free(err_msg);
  24. }
  25. sql = "INSERT INTO Persons VALUES(1, 'Smith', 'John', 25);";
  26. rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
  27. if (rc != SQLITE_OK)
  28. {
  29. fprintf(stderr, "SQL error: %s\n", err_msg);
  30. sqlite3_free(err_msg);
  31. }
  32. sqlite3_close(db);
  33. return 0;
  34. }

 

  1. int sqlite3_prepare_v2(
  2. sqlite3 *db, /* 数据库句柄 */
  3. const char *zSql, /* SQL 查询语句 */
  4. int nByte, /* 将要使用的字节数 */
  5. sqlite3_stmt **ppStmt, /* 编译后生成的 SQL 程序句柄 */
  6. const char **pzTail /* 未编译部分的 SQL 查询语句 */
  7. );

sqlite_prepare_v2函数用于将SQL查询语句编译成SQLite程序,各参数含义如下:

db:数据库句柄

zaql:SQL查询语句

nByte:zSql查询语句中将要使用的字节数,如果设置为-1,则SQLite将自动计算zSql的长度

ppStmt:是一个指向指针的指针,用于存储编译后生成的SQL程序句柄

pzTail:是一个指向指针的指针,用于存储未编译的部分SQL查询语句

示例:

  1. #include <sqlite3.h>
  2. #include <stdio.h>
  3. int main(int argc, char **argv)
  4. {
  5. sqlite3 *db;
  6. sqlite3_stmt *stmt;
  7. const char *tail;
  8. char *sql = "SELECT * FROM my_table WHERE id = ?";
  9. if (sqlite3_open("my_database.db", &db) == SQLITE_OK)
  10. {
  11. if (sqlite3_prepare_v2(db, sql, -1, &stmt, &tail) == SQLITE_OK)
  12. {
  13. sqlite3_bind_int(stmt, 1, 1); // 绑定参数
  14. while (sqlite3_step(stmt) == SQLITE_ROW)
  15. {
  16. // 处理结果
  17. int id = sqlite3_column_int(stmt, 0);
  18. const unsigned char *name = sqlite3_column_text(stmt, 1);
  19. printf("id = %d, name = %s\n", id, name);
  20. }
  21. }
  22. sqlite3_finalize(stmt);
  23. }
  24. sqlite3_close(db);
  25. return 0;
  26. }

 

 

在 SQLite API 中还包括其他的一些函数,如开启事务、回滚事务、提交事务等,这里不再一一列举。

总之,SQLite 是一种轻量级的数据库引擎,并提供了丰富的 API 函数用于与其交互,用户可以通过这些函数实现 SQL 语句的执行、错误信息的获取,查询结果的处理等操作。

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/490856
推荐阅读
相关标签
  

闽ICP备14008679号