zoukankan      html  css  js  c++  java
  • sqlite3数据库归纳

    sqlite3数据库是关系型数据库,体积小,支持ACID事物。

    ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库系统,必需要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。

    /********************************************/
    sqlite是一个轻量级的嵌入式数据库。
    特征:
    1.零配置,无需安装和管理配置;
    2.储存在单一磁盘文件中的一个完整的数据库;
    3.数据库文件可以在不同字节顺序的机器间自由共享;
    4.支持数据库大小至2TB;
    5.足够小,全部源代码大致3万行c代码,250KB;
    6.比以前流行的大多数数据库对数据的操作要快;

    /*******************************************/
    SQLite数据库采用模块化设计,由8个独立的模块构成,这些独立模块又构成了三个主要的子系统,模块将复杂的查询过程分解为细小的工作进行处理。



    /*******************************************/
    手工建数据库:
    linux@ubuntu:~$ sqlite3 my.db

    查看帮助:
    sqlite> .help

    文件存放位置:
    sqlite> .database

    退出:
    sqlite> .quit

    查看表:
    sqlite> .tables

    显示表的结构:
    sqlite> .schema

    1.建表:
    sqlite> create table usr(id integer primary key, name text,age integer null, gender text, salary real not null); 
    2.删除表
    sqlite> drop table usr;
    3.增:
    sqlite> insert into usr(id, name, age, salary) values(2, 'liu', 20, 6000);
    4.删
    sqlite> delete from usr where id = 2;
    5.改:
    sqlite> update usr set gender = 'man' where id = 3;
    6.查:
    sqlite> select * from usr where id = 2;
    7.在表中添加字段
    sqlite>alter table  usr  add  column   country   text;

    /******************************************/
    代码创建
    sqlite编程接口
    1.打开sqlite数据库
    int  sqlite3_open(char *path, sqlite3 **db);
    path: 数据库文件的路径
    db:     指向sqlite句柄的指针
    返回值: 成功返回0,失败返回错误码(非零值)

    2.关闭sqlite数据库
    int  sqlite3_close(sqlite3 *db);
    返回值: 成功返回0,失败返回错误码
     
    3.
    const  char  *sqlite3_errmsg(sqlite3 *db);
    返回值: 返回错误信息

    程序的编译方法:
    gcc  -o  test  test.c  -lsqlite3

    4.执行SQL操作
    typedef int (*sqlite3_callback)(void *, int, char **, char **);

    int  sqlite3_exec(sqlite3 *db, const char *sql, sqlite3_callback callback, void *, char **errmsg);
    db:     函数库句柄
    sql:     SQL语句
    callback:回调函数
    errmsg:     错误信息指针的地址
    返回值:     成功返回0,失败返回错误码

    5.每次找到一条记录自动执行一次回调函数
    typedef  int  (*sqlite3_callback)(void *para, int f_num, char **f_value, char **f_name);
    para: 传递回调函数的参数
    f_num: 记录包含的字段数目
    f_value: 包含每个字段值的指针数组
    f_name: 包含每个字段名称的指针数组
    返回值: 成功返回0,失败返回-1

    6.不使用回调函数执行SQL操作
    int  sqlite3_get_table(sqlite3 *db, const char *sql, char ***resultp, int *nrow, int *ncolumn, char **errmsg);
    db: 数据库句柄
    sql: SQL语句
    resultp: 用来指向sql执行结果的指针
    nrow: 满足条件的记录的数目
    ncolumn: 每条记录包含的字段数目
    errmsg: 错误信息指针的地址
    返回值: 成功返回0,失败返回错误码
  • 相关阅读:
    Java Servlet 中文API说明
    HIbernate主键详解
    ERP项目管理的五个要点
    java反射机制学习总结
    Spring 2.0的新特性和应用实践
    【Struts1.2总结】strutsconfig.xml配置
    数据库设计
    关于URL后面传中文方法总结
    JAVA开发者最常去的20个英文网站
    Socket 死连接详解
  • 原文地址:https://www.cnblogs.com/vonyao/p/3614308.html
Copyright © 2011-2022 走看看