聊天服务器——sqlite3
创始人
2025-01-11 15:08:02
0

数据库Sqlite3

特点

1、体积小

2、支持window和Linux(包括Android),跨平台性很好

3、采用的一种库函数的形式来提供数据库的服务

4、文件性的数据库

5、缺点:不能使用网络,单纯就是本地数据库。加密性能不是很好,安全性不足

语法

插入:

INSERT INTO 表名(列名1,...)

VALUES(列1值,...)

修改:

UPDATE 表名

SET 列名1=列1值,...

WHERE[条件表达式]

删除:

DELETE FROM 表名

WHERE[条件表达式]

查询

SELECT 列名1,...FROM表名

WHERE[条件表达式];

`“ ’用来处理空格

创建

CREATE TABLE 库名.表名(

列1名 类型 特征(主键、唯一、非空、自增、注释),

...

);

删除表

DROP TABLE 表名;

接口函数

如果文件存在,则尝试打开

如果文件不存在,则创建

这个文件就是一个库

不支持多线程访问,不支持多实例访问

所以sqlite3没有create,因为open就是create

open完之后一定要记得close

SQLITE_API int sqlite3_open(    const char* filename,               //Database filename(UTF-8)    sqlite3** ppDb                      //SQLite db handle ); ​ SQLITE_API int sqlite3_open16(    const void* filename;                //Database filename(UTF-16)    sqlite3** ppDb                       //SQLite db handle ) ​ SQLITE_API int sqlite3_close(sqlite3*); ​ SQLITE_API int sqlite3_exec(    sqlite3*,                                  //An open database    const char* sql,                           //SQL to be evaluated    int (*callback)(void*,int,char**,char**),  //callback function    void*,                                     //1st argument to callback    char** errmsg                              //Error msg written here ) ​ SQLITE_API int sqlite3_prepare(     sqlite3* db,     const char* zSql,     int nByte,     sqlite3_stmt** ppStmt,     const char** pzTail ) ​ SQLITE_API int sqlite3_bind_blod SQLITE_API int sqlite3_bind_double SQLITE_API int sqlite3_bind_int SQLITE_API int sqlite3_bind_int64 SQLITE_API int sqlite3_bind_null SQLITE_API int sqlite3_bind_text SQLITE_API int sqlite3_bind_text16 SQLITE_API int sqlite3_bind_value SQLITE_API int sqlite3_bind_zeroblod ​ SQLITE_API int sqlite3_step SQLITE_API int sqlite3_finalize ​ ​

使用sqlite3_prepare函数可以将SQL语句编译成可执行的字节码,进而执行各种操作,例如查询数据、插入数据、更新数据、删除数据等。同时,由于SQLite是一种嵌入式数据库,所以可以在应用程序中直接使用sqlite3_prepare函数编译SQL语句,无需启动一个独立的数据库服务器进程。

数据库接口示例

sqlite3官网下载地址:

[]: SQLite Download Page

先去官网上下载sqlite3源码。

然后在vs上创建新项目,导入源码里的头文件和源文件

项目配置里,不使用预编译头

使用多字节字符集

创建库的示例

#include "sqlite3.h" #include  ​ int main() {     sqlite3* pdb = NULL;     char* errMsg = NULL;     int ret = sqlite3_open("edyun.db", &pdb);     if (ret)     {         std::cout << sqlite3_errmsg(pdb) << std::endl;         return -1;     }     else     {         std::cout << "open edoyun.db success!\r\n";     } ​     const char* sql =         "CREATE TABLE EDoYun (" \         "ID     INT PRIMARY KEY NOT NULL, "\         "NAME   TEXT            NOT NULL);";     do     {         int ret = sqlite3_exec(pdb, sql, NULL, NULL, &errMsg);         if (ret != SQLITE_OK)         {             std::cout << errMsg << std::endl;             sqlite3_free(errMsg);         }         else         {             std::cout << "open edoyun.db success!\r\n";         }         break;     } while (false);          sqlite3_close(pdb);  //有open,那么必须要有close }

插入和查询

#include "sqlite3.h" #include  ​ int callback(void*, int argc, char* argv[], char* name[]) {     for (int i = 0; i < argc; i++)     {         std::cout << name[i] << " = " << argv[i] << std::endl;     }     return 0; } ​ int main() {     sqlite3* pdb = NULL;     char* errMsg = NULL;     int ret = sqlite3_open("edyun.db", &pdb);     if (ret)     {         std::cout << sqlite3_errmsg(pdb) << std::endl;         return -1;     }     else     {         std::cout << "open edoyun.db success!\r\n";     } ​     const char* sql =         "CREATE TABLE EDoYun (" \         "ID     INT PRIMARY KEY NOT NULL, "\         "NAME   TEXT            NOT NULL);";     do     {         //创建表         int ret = sqlite3_exec(pdb, sql, NULL, NULL, &errMsg);         if (ret != SQLITE_OK)         {             std::cout << errMsg << std::endl;             sqlite3_free(errMsg);             break;         }         else         {             std::cout << "open edoyun.db success!\r\n";         } ​         //插入         sql = "INSERT INTO EDoYun (ID,NAME)VALUES(1,\"jueding\");";         ret = sqlite3_exec(pdb, sql, NULL, NULL, &errMsg);         if (ret != SQLITE_OK)         {             std::cout << errMsg << std::endl;             sqlite3_free(errMsg);             break;         }         else         {             std::cout << "insert success!\r\n";         } ​         sql = " SELECT * FROM EDoYun;";         ret = sqlite3_exec(pdb, sql, callback, NULL, &errMsg);         if (ret != SQLITE_OK)         {             std::cout << errMsg << std::endl;             sqlite3_free(errMsg);             break;         }         else         {             std::cout << "query success!\r\n";         }     } while (false);          sqlite3_close(pdb);  //有open,那么必须要有close }

相关内容

热门资讯

教你了解!仙神互娱辅助(辅助)... 教你了解!仙神互娱辅助(辅助)唯思竞技麻将确实真的是有辅助修改器(哔哩哔哩)亲,关键说明,仙神互娱辅...
解迷了解!八闽辅助(辅助)渝都... 解迷了解!八闽辅助(辅助)渝都麻将原来存在有辅助插件(哔哩哔哩)八闽辅助透视方法中分为三种模型:八闽...
推荐了解!微友辅助器免费下载(... 推荐了解!微友辅助器免费下载(辅助)新贝壳大厅确实有挂辅助软件(哔哩哔哩)1、打开软件启动之后找到中...
专业了解!佛手在线13道辅助(... 专业了解!佛手在线13道辅助(辅助)方片比鸡都是有挂辅助器(哔哩哔哩)佛手在线13道辅助是不是有人用...
解迷了解!如何判断广东雀神插件... 解迷了解!如何判断广东雀神插件真伪(辅助)河北竞技果然是真的辅助挂(哔哩哔哩)1)如何判断广东雀神插...
了解了解!佛手在线大菠萝技巧(... 了解了解!佛手在线大菠萝技巧(辅助)慕星棋牌果然真的有辅助修改器(哔哩哔哩)1、佛手在线大菠萝技巧破...
详细了解!长乐茶馆免费辅助器(... 详细了解!长乐茶馆免费辅助器(辅助)喜扣跑胡子切实是有辅助修改器(哔哩哔哩)1、下载好长乐茶馆免费辅...
推荐了解!上饶窝龙辅助(辅助)... 推荐了解!上饶窝龙辅助(辅助)云水谣本来真的有辅助器(哔哩哔哩)1、推荐了解!上饶窝龙辅助(辅助)云...
解迷了解!哈糖大菠萝怎么让系统... 解迷了解!哈糖大菠萝怎么让系统发好牌(辅助)闲云真是是有辅助app(哔哩哔哩)小薇(辅助器软件下载)...
普及了解!花花生活圈挂怎么开(... 普及了解!花花生活圈挂怎么开(辅助)皮皮湖南麻将真是有挂辅助下载(哔哩哔哩)1、任何花花生活圈挂怎么...