当前位置: 首页 > news >正文

对网站开发与管理的分析中国万网域名注册官网

对网站开发与管理的分析,中国万网域名注册官网,dw网站建设流程,wordpress 数据库端口文章目录 SQLite常用接口 使用示例测试 SQLite SQLite是一个本地化的数据库,不需要客户端服务端什么的配置,主打就是轻量化方便化 他也不是一个独立的进程,而是可以根据应用程序的需求,可以进行静态或者动态的连接 而且他是直接存储在磁盘文件的,提供了简单易用的API接口 需…

文章目录

    • SQLite
      • 常用接口
    • 使用示例
    • 测试

SQLite

SQLite是一个本地化的数据库,不需要客户端服务端什么的配置,主打就是轻量化方便化

他也不是一个独立的进程,而是可以根据应用程序的需求,可以进行静态或者动态的连接

而且他是直接存储在磁盘文件的,提供了简单易用的API接口

需要注意的是 在SQLite中一个数据库对应了一个数据库文件

常用接口

int sqlite3_threadsafe(); 
// 查看是否启用线程安全 0-未启用 1-启用

sqlite有三种安全模式

  1. 非线程安全模式
  2. 线程安全模式(不同的连接在不同的线程是安全的,或者说进程间是安全的,一个句柄不能用于多线程之间)
  3. 串行化模式(可以在不同的线程或者进程之间使用同一个句柄)
int sqlite3_open(const char* filename, sqlite3 **ppDb);
int sqlite3_open_v2(const char* filename, sqlite3 **ppDb, int flags, const char* *zVfs);

这里是创建或者打开数据库的两种操作

第一个参数是文件名,第二个参数是传入一个句柄指针的地址

第三个参数是flag是可以设置文件的打开方式,提供下面的宏可以选择

  • SQLITE_OPEN_READWRITE: 读写方式打开数据库文件
  • SQLITE_OPEN_CREATE: 不存在数据库文件则创建
  • SQLITE_OPEN_NOMUTEX: 多线程模式,只要不同线程使用不同的连接即可保证线程安全
  • SQLITE_OPEN_FULLMUTEX: 串行化模式,即打开所有的锁

当返回值为SQLITE_OK (0)表示数据库成功打开 操作成功

如果是其他值的话就代表着有问题,需要查找对应的宏来看到

int sqlite_exec(sqlite3, char* sql, int(*callback)(void*, int, char**, char**), void* arg, char ** err);

这是一个执行语句的操作函数

这里面需要传入一个回调函数,对查询到的结果进行处理

返回值含义和上一个是一样的

int (*callback) (void*, int, char**, char**);
  • void* 是用来设置回调时传入的arg参数,一般来说是用于将数据存于某个地址
  • int 一行中的列数
  • char** 存储一行数据的字符指针数组
  • char** 每一列的字段名
  • int返回值,成功处理需要返回一个0,如果返回非0程序会直接中断退出

使用示例

/*封装SqliteHelper类提供简单的sqlite数据库操作接口1. 创建/打开数据库2. 针对打开的数据库执行操作1. 表操作2. 数据操作3. 关闭数据库
*/
#include <iostream>
#include <string>
#include <vector>
#include <sqlite3.h>
#include <functional>
#include "../logs/Xulog.h"class SqliteHelper
{
public:typedef int (*SqliteCallback)(void *, int, char **, char **);SqliteHelper(const std::string &dbfile): _dbfile(dbfile), _handler(nullptr){}bool open(int safe_level = SQLITE_OPEN_FULLMUTEX){int ret = sqlite3_open_v2(_dbfile.c_str(), &_handler, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | safe_level, nullptr);if (ret != SQLITE_OK){ERROR("打开SQLite数据库失败: %s", sqlite3_errmsg(_handler));return false;}return true;}bool exec(const std::string &sql, SqliteCallback cb, void *arg){int ret = sqlite3_exec(_handler, sql.c_str(), cb, arg, nullptr);if (ret != SQLITE_OK){ERROR("%s--执行语句失败: %s", sql.c_str(), sqlite3_errmsg(_handler));return false;}return true;}void close(){sqlite3_close_v2(_handler);}private:std::string _dbfile;sqlite3 *_handler;
};

测试

#include "Sqlite3.hpp"
#include <cassert>int select_stu_callback(void *arg, int col_count, char **result, char **fields_name)
{std::vector<std::string> *array = (std::vector<std::string> *)arg;array->push_back(result[0]);return 0;
}
int main()
{SqliteHelper helper("./test.db");// 创建或打开数据库文件assert(helper.open());// 创建表const char *ct = "CREATE TABLE IF NOT EXISTS stu (sn INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(32), age INT);";assert(helper.exec(ct, nullptr, nullptr));// 数据操作语句// const char *insert_sql = "INSERT INTO stu (sn, name, age) VALUES (1, 'Morty', 16), (2, 'Summer', 18), (3, 'Rick', 58);";// assert(helper.exec(insert_sql, nullptr, nullptr));// const char *update_sql = "UPDATE stu SET name='S.Morty' WHERE sn=1;";// assert(helper.exec(update_sql, nullptr, nullptr));// const char *delete_sql = "DELETE FROM stu WHERE sn=2;";// assert(helper.exec(delete_sql, nullptr, nullptr));const char *select_sql = "SELECT name FROM stu;";std::vector<std::string> arr;assert(helper.exec(select_sql, &select_stu_callback, &arr));for (auto &name : arr){std::cout << name << " ";}std::cout << std::endl;// 关闭数据库helper.close();return 0;
}
http://www.15wanjia.com/news/174906.html

相关文章:

  • asp新闻发布网站模板低价网站建设公司
  • 国外设计网站pinterest极速版安阳县陈佳
  • 商城网站建设基础设计宁夏建设监理协会网站
  • 中山建站公司学做美食交流网站
  • 做网站运营需要具备什么能力修改wordpress 2m
  • jsp网站架构网站广告策划
  • 网站开发准备工作餐厅网站建设什么
  • 怎么样免费建设网站wordpress flytag
  • 企业电子商务网站建设的重要性wordpress表单微信
  • 高端网站改版顾问公司网络组建工作方案
  • 横岗做网站中国教育培训网
  • 网站开发女生网页网站建设的ppt模板下载
  • 做推送实用网站网站自助建站
  • 猪八戒网站建设公司南宁百度seo放心选择
  • 比价网站开发卡片式设计 网站
  • 心悦俱乐部官方网站怎么做任务竞价托管魏大帅
  • 网站首页模版上海招聘信息最新招聘2021
  • 网站默认图片龙岗网站设计资讯
  • 网站优化连云港哪家强?网址缩短
  • 局域网怎么做网站网络营销的工具和方法有哪些
  • 免费做拍卖网站网络销售技巧
  • 做个网站得花多少钱专门做塑胶原料副牌网站
  • 免费个人网站建站源码百度站长平台网站验证
  • 短视频素材下载网站个人做网站需要注意什么
  • 网站建设的参考文献农家乐网站设计
  • soho在哪里做网站怎么查看什么公司做的网站
  • 中原彼得堡航空学院网站的建设搜狐快站建设pc网站
  • 百度多久收录网站wordpress嵌入优酷视频
  • 网站开发可以学吗教育机构代理平台
  • 藁城网站建设哪家好wordpress建立网站实例