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,失败返回错误码

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-08-04 14:43:20

sqlite3数据库归纳的相关文章

插入数据-电脑创建的sqlite3数据库为什么android读不了

问题描述 电脑创建的sqlite3数据库为什么android读不了 但是andoird创建好的数据库移动到电脑上做插入数据再放到andoird上却可以运行 解决方案 电脑上与 Android 上SQLite 的版本一致吗?如果不一致,最好是使用一致的问题:如果一致,则说明 Android 上的 SQLite 可能兼容不了电脑上的版本.或者,再查查创建数据库时有没有其它一些设置项,可能在 Android 或电脑上的默认设置不一致. 解决方案二: 有没有错误信息,读不了什么意思? 解决方案三: ht

unbutu下Qt4支持sqlite3数据库的设置

qt4如果要支持sqlite3数据库,则必须修改qmke -project和qmake之后生成的Makefile文件中的INCPATH和LIBS目录: INCPATH问Qt支持的头文件路径,LIBS为Qt支持的库文件的路径,针对sqlite3分别为sqlite3.h和libsqlite3.so.0.8.6(注意此文件是libsqlite3.so.0这儿符号链接文件所连接到的真实文件) 1 INCPATH = -I/sqlite3.h文件的绝对路径的上一级目录(-I为大写的i) 例如我的sqlit

sqlite3-C#读取SQLite3数据库中以科学计数法存的数据,精度损失

问题描述 C#读取SQLite3数据库中以科学计数法存的数据,精度损失 我使用的是C#语言,.net 2.0,SQLite3中有一条数为 9.13253416969279E-29 读取方式为: SQLiteCommand command = new SQLiteCommand(strSql, m_Connection); return command.ExecuteScalar(); 返回一个object对象, 值为 0.0000000000000000000000000001M 我想取到数据库

界面设计-关于sqlite3数据库查询

问题描述 关于sqlite3数据库查询 界面设计是这样,怎么根据下拉菜单的选择与文本框的输入进行查询 解决方案 sqlite3 数据库使用数据库sqlite3的查询导入导出等基本操作在vc中使用sqlite3数据库 解决方案二: 这两个选择都是条件,构建到sql语句的where条件判断中 你只要拼接SQL字符串就可以,然后再进行数据库查询

thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)_php实例

本文实例讲述了thinkPHP连接sqlite3数据库的简单实现方法.分享给大家供大家参考,具体如下: 首先检查Thinkphp目录下\Lib\Driver\Db目录里有没有DbPdo.class.php 这个文件. 如果没有就去这里下吧:http://www.thinkphp.cn/extend/205.html 然后再确认打开了PHP对sqlite的扩展支持,extension=php_sqlite.dll 连接sqlite3数据库: 在config.php 文件中添加如下配置: 'DB_T

数据库迁移-sqlite3数据库两个数据库文件表之间的复制

问题描述 sqlite3数据库两个数据库文件表之间的复制 sqlite3怎样将A数据库中Table1的数据复制到B数据库的Table1中 数据量很大 用C++实现 解决方案 程序取出数据,然后插入sql

Cocos移植到Android的一些问题-SQLite3数据库移植问题

首选我们讨论一下SQLite3数据库移植问题.我们在第14章节介绍了在Win32平台使用SQLite3数据库我们介绍了两种配置环境的方法一种是使用Cocos2d-x提供的SQLite3库配置另一种是从SQLite官网下载源代码拷贝的工程中.第一种方法配置起来比较麻烦关键是Cocos2d-x提供的SQLite3库只是Win32没有其它平台的目录结构如下所示.<游戏工程目录>\cocos2d\external\sqlite3│  Android.mk│├─include│      sqlite3

SQLite3数据库中的文件锁和同步机制

SQLite3 提供了一个新的锁和同步机制来提高并发,减少死锁. SQLite3的锁和同步有PagerModule(pager.c)负责处理.PagerModue负责SQLite事务的ACID,也提供缓存功能.PagerModue不需要知道BTree,字符编码, 索引的结构, Pager Module用来管理Page, 一个Page对应一个DiskBlock, 大小一般是1024Byte. 1. SQLite3 数据库的锁状态 UNLOCKED SHARED RESERVED 保留锁, 表示数据

Python SQLite3数据库操作类分享_python

接触Python时间也不是很长的,最近有个项目需要分析数据,于是选用Python为编程语言,除了语言特性外主要还是看重Python对于SQLite3数据库良好的支持能力了,因为需要灵活处理大量的中间数据. 刚开始一些模块我还乐此不疲的写SQL语句,后来渐渐厌倦了,回想到以前捣鼓C#的时候利用反射初步构建了个SQL查询构造器,直到发现linq,于是放弃了这个计划,当然微软后来又推出了Entity Framework,这些都是后话了,而且现在我对微软的东西兴趣不是很大的,好了,扯多了,下面继续正文.