网站建设的意义和作用,可做笔记的阅读网站,wordpress 代码文章,安徽营销型网站建设sqllite简介 SQLite是一个无服务器的数据库#xff0c;是自包含的#xff0c;也称为嵌入式数据库#xff0c;这意味着数据库引擎作为应用程序的一部分运行。它是轻量化#xff0c;用于设备端的数据管理#xff0c;可以理解成单点的数据库。传统服务器型数据库用于管理多端…sqllite简介 SQLite是一个无服务器的数据库是自包含的也称为嵌入式数据库这意味着数据库引擎作为应用程序的一部分运行。它是轻量化用于设备端的数据管理可以理解成单点的数据库。传统服务器型数据库用于管理多端设备更加复杂。 基于嵌入式的数据库主要有SQLiteFirebirdBerkeley DBeXtremeDB。 Firebird:关系型数据库功能强大支持存储过程SQL兼容等SQLite关系型数据库 体积小支持ACID事务 BerkeleyDB:并没有数据库服务器的概念他的程序直接链接到应用程序中 eXtremeDB:内存数据库运行效率高
sqlite与msql对比 sqlite优点sqlite缺点mysql优点mysql 1.基于文件易于设和使用 2.适合基础开发和测试 3.轻松携带 4.使用标准SQL语法进行微小更改使用方便 1.缺乏用户管理和安全功能 2.不容易扩展 3.不适合大数据库 4.无法定制 1.包含许多数据库相关的功能 2.良好的安全功能 3.易于扩展适用于大型数据库 提供良好的速度和性能 4.提供良好的用户管理和 5.多种访问控制 1.需要技术专业知识来设置 2.传统SQL 相比语法略有不同
sqllite的C接口
int sqlite3_open(const char *filename, sqlite3 **ppDb); 功能:打开创建数据库 参数: filename打开(创建)的数据库文件名 ppDbsqlite3数据库句柄的指针 返回值: #defineSQLITE_OK 0 成功结果 错误开始码 #defineSQLITE_ERROR 1 SQL错误或缺少数据库 #defineSQLite 内部逻辑错误 #defineSQLITE_PERM 3 拒绝访问权限 #defineSQLITE_ABORT 4 回调例程请求中止 #define SQLITE_BUSY 5 数据库文件被锁定 # SQLITE_LOCKED 6 数据库中的表被锁定 #define SQLITE_NOMEM 7 A malloc() failed #define SQLITE_READONLY 8 尝试写一个只读数据库 #defineSQLITE_INTERRUPT 9 被sqlite3_interrupt()终止的操作 # SQLITE_IOERR 10 磁盘I/O出错 #define SQLITE_CORRUPT 11 数据库磁盘镜像不正常 #defineSQLITE_NOTFOUND 12 sqlite3_file_control()中未知的操作码 #define SQLITE_FULL 13 插入失败因为数据库已满 # SQLITE_CANTOPEN 14 无法打开数据库文件 #defineSQLITE_PROTOCOL 15 数据库锁定协议错误 #define SQLITE_EMPTY 16 数据库为空 #defineSQLITE_SCHEMA 17 数据库模式改变 #defineSQLITE_TOOBIG 18 字符串或BLOB超过大小限制 #defineSQLITE_CONSTRAINT 19 由于约束违反而终止 #defineSQLITE_MISMATCH 20 数据类型不匹配 #define SQLITE_MISUSE 21 错误使用的库 #define SQLITE_NOLFS 22 使用主机不支持的操作系统特性 #defineSQLITE_AUTH 23 拒绝授权 #defineSQLITE_FORMAT 24 辅助数据库格式错误 #defineSQLITE_RANGE 25 第二个参数为sqlite3_bind out of range #defineSQLITE_NOTADB 26 打开的文件不是数据库文件 #defineSQLITE_ROW 100 sqlite3_step()有另一行 #define SQLITE_DONE 101 sqlite3_step()已经完成执行
int sqlite3_close(sqlite3 *db); 功能:关闭数据库 参数: db:数据库的句柄 返回值同上
const char* sqlite3_errmg(sqlite3 *db); 功能:收集错误信息 参数: db:数据库的句柄 返回值: 成功返回错误说明的字符串指针错误返回空指针
int sqlite3_exec(sqlite3 *db,const char *sql,int callback,void *arg,char **errmsg); 功能:执行sql 参数: db:数据库句柄 sql:执行的sql callback:回调函数 arg:参数 errmsg:错误信息 返回值同上
int callback(void*arg,intcolumn_size,char*column_value[],char*column_name[]); 功能:回调函数 参数: arg参数 column_size数据库的字段数 column_value[]列的值 column_name[]字段名字
demo: 1.编写数据库接口及操作函数 2.可使用.open,create,insert,select,update,delete,drop等SQL
代码示例:
#include stdio.h
#include stdlib.h
#include sqlite3.h
#include string.hstatic int callback(void *args,int column_size,char *column_name[],char *column_value[])
{int i;printf(%s\n,(char *)args);printf(\n);for(i 0;i column_size;i){printf(%s %s\n,column_name[i],column_value[i]);}printf(\n);return 0;
}void result(char data_bin[])
{sqlite3 *db;int ret;int ret_exec;char input[128] {\0};char *err_msg NULL;ret sqlite3_open(data_bin,db);if(ret ! 0){printf(create/open db faili,why : %s\n,sqlite3_errmsg(db));exit(-1);}while(1){printf(input your sql:\n);printf();memset(input,\0,128);fgets(input,128,stdin);ret_exec sqlite3_exec(db,input,callback,context of sql:,err_msg);if(ret_exec ! 0){printf(error:%s\n,err_msg);}}sqlite3_close(db);
}int main(int argc,char **argv)
{if(argc ! 2){printf(param is error\n);exit(-1);}result(argv[1]);return 0;
}
结果示例: