Skip to content

escpp/es_sqlite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

es_sqlite数据库操作接口

include/
└── es_sqlite
    ├── es_sqlite.h             -- 包含所有其他头文件
    ├── SqliteConnection.h      -- 连接管理 SqliteConnection("database.db")
    └── SqliteValue.h           -- 值管理 {name, value, type}
    ├── SqliteRow.h             -- 行数据 SqliteValue[name]
    ├── SqliteResult.h          -- 查询结果 SqliteRow[]
    ├── SqliteField.h           -- 字段创建语句构造类
    ├── SqliteTable.h     -- CREATE TABLE 语句构造类
    ├── SqliteInsert.h          -- INSERT 语句构造类
    ├── SqliteFilter.h          -- 过滤条件语句构造类
    ├── SqliteDelete.h          -- DELETE 语句构造类
    ├── SqliteSelect.h          -- SELECT 语句构造类
    ├── SqliteUpdate.h          -- UPDATE 语句构造类

SqliteTable 使用

#include "es_sqlite/es_sqlite.h"
#include <iostream>

int main(int argc, char *argv[])
{
    SqliteConnection conn("database.db");
    if (!conn.is_connected())
    {
        std::cout << "open database failed" << std::endl;
        return 0;
    }

    // 创建表
    SqliteTable table("test");

    // 构造表字段
    table
        .add_field("id", SqliteField::INT, SqliteField::IS_PRIMARY | SqliteField::IS_NOT_NULL)
        .add_field("name", SqliteField::TEXT)
        .add_field("age", SqliteField::INT)
        .add_field("phone", SqliteField::TEXT)
        .add_field("email", SqliteField::TEXT);

    // 执行创建表
    bool ret = table.create(conn);
    if (ret)
    {
        std::cout << "create table success" << std::endl;
    }
    else
    {
        std::cout << "create table failed" << std::endl;
    }

    return 0;
}

SqliteSelect、SqliteResult、SqliteRow、SqliteValue 使用

#include "es_sqlite/es_sqlite.h"
#include <iostream>

int main(int argc, char *argv[])
{
    SqliteConnection conn("database.db");
    if (!conn.is_connected())
    {
        std::cout << "open database failed" << std::endl;
        return 0;
    }

    // 查询
    SqliteSelect select("test");
    SqliteResult result;

    select.get("*");
    
    bool ret = select.query(conn, result);
    for (int i = 0; i < result.get_total(); i++)
    {
        const SqliteRow &row = result[i];
        std::cout 
            << row["id"].get_int()          << " " 
            << row["name"].get_string()     << " " 
            << row["age"].get_int()         << " " 
            << std::endl;
    }

    return 0;
}

SqliteInsert使用

#include "es_sqlite/es_sqlite.h"
#include <iostream>

int main(int argc, char *argv[])
{
    SqliteConnection conn("database.db");
    if (!conn.is_connected())
    {
        std::cout << "open database failed" << std::endl;
        return 0;
    }

    struct { 
        std::string name; 
        int age; 
    } data[] = {
        {"张三", 18},
        {"王五", 20},
        {"赵六", 25},
        {"钱七", 30},
        {"孙八", 35},
        {"周九", 40},
        {"吴十", 45}
    };

    SqliteTable table("test");
    SqliteInsert insert("test");
    for (auto &d : data)
    {
        insert["name"] = d.name;
        insert["age"] = d.age;
        insert.execute(conn);
    };
    
    return 0;
}

SqliteUpdate使用

#include "es_sqlite/es_sqlite.h"
#include <iostream>

int main(int argc, char *argv[])
{
    SqliteConnection conn("database.db");
    if (!conn.is_connected())
    {
        std::cout << "open database failed" << std::endl;
        return 0;
    }

    // 更新
    SqliteUpdate update("test");

    // 构造更新语句
    update["age"] = 20;
    update["phone"] = "1234567890";
    update["email"] = "1234567890@qq.com";
    update.and_where("name", "=", "张三");

    // 等效构造更新语句
    update
        .set("age", 20)
        .set("phone", "1234567890")
        .set("email", "1234567890@qq.com")
        .and_where("name", "=", "张三");

    // 执行更新语句
    bool ret = update.execute(conn);
    if (ret) {
        std::cout << "update success" << std::endl;
    }
    else
    {
        std::cout << "update failed" << std::endl;
    }

    return 0;
}

SqliteDelete使用

#include <iostream>
#include "es_sqlite/es_sqlite.h"

int main(int argc, char *argv[])
{
    SqliteConnection conn("database.db");
    if (!conn.is_connected())
    {
        std::cout << "open database failed" << std::endl;
        return 0;
    }

    // 删除
    SqliteDelete delete_("test");
    delete_.and_where(SqliteFilter("age", "=", "18"));

    bool ret = delete_.execute(conn);
    if (ret) {
        std::cout << "delete success" << std::endl;
    } else {
        std::cout << "delete failed" << std::endl;
    }
    
    return 0;
}

About

c++封装sqlite.h的部分功能field、table、value、row、result、filter、insert、select、update、delete

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors