Sqlite3入门简记
一,安装Sqlite3
1.入门时看http://www.runoob.com/sqlite/sqlite-intro.html,说的简单,但是适合入门
2.在终端输入sqlite3,没有返回信息,表示系统没有安装sqlite3,否则系统已安装(系统一般附带有安装)

3.需要自己安装时,到http://www.sqlite.org/sqlite-autoconf-3070500.tar.gz下载,
然后:(1) tar -zxvf sqlite-autoconf-3070500.tar.gz
(2) cd sqlite-autoconf-3070500
(3) ./configure --prefix=/xx/xxxx(/xx/xxxx表示文件生成目录)
(4) make & make install (成功后在/xx/xxxx目录下生成(bin include lib share 4个目录))
其中bin放置可执行文件sqlite3,./sqlite3 可进入sqlite命令行界面
include放置头文件
lib放置库文件
二,用的较多的命令
(1)获取点命令清单:.help
(2)退出提示符:.quit .exit
(3)输出到屏幕:output stdout
(4)列出数据库名称:.databases
(5)以SQL文本格式转存数据库:.dump
三,用的较多的存储类
NULL、INTEGER、REAL、TEXT
四,很有用的语法
(1)创建数据库:sqlite3 xxx.db
(2)创建表

(3)删除表

(4)INSERT INTO语法

(5)SELECT语法

(6)WHERE语法

(7)UPDATE语法

(8)DELETE语法

五,Sqlite3 API 使用
(1)最重要的三个函数:
int sqlite3_open(const char*, sqlite3**);
int sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void*, char**);
int sqlite3_close(sqlite3*);
还有2个:
const char *sqlite3_errmsg(sqlite3*);
void sqlite3_free(void*);
查看更多函数,下载sqlite源码包,只需要其中的sqlite3.c、sqlite.h即可。
(2)sqlite3_open 返回一个整数错误代码,=0 表示成功码,> 0都是错误码,详情看Sqlite3手册说明
函数用于打开/创建一个函数库
const char* 指定文件名,sqlite3** 指定数据库句柄,用户通过数据库句柄操作数据库

(2)sqlite3_exec返回0表示sql指令执行完毕,否则说明这次执行没有成功
函数用于执行一条或多条SQL语句,SQL语句之间用“;”隔开
sqlite3*指定已打开的数据库句柄,const char *sql 指定SQL指令,sqlite_callback 在回调函数中可以获得SQL执行的结果
void* 指定传给回调函数的数据 , char** 指定命令执行失败的详细错误信息
(3)回调函数

(4) sqlite3_close 关闭数据库文件,参数是数据库句柄
(5)sqlite3_errmsg 返回错误码所对应的文字说明,参数是数据库句柄
(6)sqlite3_free 释放存放错误信息的内存空间,sqlite3_errmsg 返回的errmsg必须用此函数释放
(7)简单测试代码
#include <stdio.h>
#include <sqlite3.h> int callback(void *pv,int argc,char **argv,char **col)
{
int cnt_i = ;
for(cnt_i =;cnt_i < argc;cnt_i++)
{
printf("%s\t%s\n",col[cnt_i],argv[cnt_i]);
}
printf("\n");
return ;
} int main(void)
{
sqlite3 *db;
int result = ;
char *rerrmsg = NULL;
char *sql = NULL;
char *data = "callback"; result = sqlite3_open("sample.db",&db);
if(result > )
{
printf("open database err:%s\n",sqlite3_errmsg(db));
return -;
} else
{
printf("open database successfully!\n"); sql = "CREATE TABLE STUDENT(" \
"NUM INT PRIMARY KEY NOT NULL," \
"NAME TEXT NOT NULL," \
"AGE INT NOT NULL," \
"SORCE REAL);"; result = sqlite3_exec(db,sql,callback,NULL,&rerrmsg);
if(result != )
{
printf("creat table err:%s\n",rerrmsg);
sqlite3_free(rerrmsg);
return -;
} else
{
printf("create table successfully!\n"); sql = "INSERT INTO STUDENT(NUM,NAME,AGE,SORCE)" \
"VALUES(1,'Paul',13,99.1);" \
"INSERT INTO STUDENT(NUM,NAME,AGE,SORCE)" \
"VALUES(2,'Kate',15,94.1);" \
"INSERT INTO STUDENT(NUM,NAME,AGE,SORCE)" \
"VALUES(3,'Jim',12,95.1);" \
"INSERT INTO STUDENT(NUM,NAME,AGE,SORCE)" \
"VALUES(4,'Tom',13,99.4);" \
"INSERT INTO STUDENT(NUM,NAME,AGE,SORCE)" \
"VALUES(5,'Jack',13,89.1);"; result = sqlite3_exec(db,sql,callback,NULL,&rerrmsg);
if(result != )
{
printf("insert data err:%s\n",rerrmsg);
sqlite3_free(rerrmsg);
return -;
} else
{
printf("insert data successfully!\n"); sql = "SELECT * FROM STUDENT";
result = sqlite3_exec(db,sql,callback,(void *)data,&rerrmsg);
if(result != )
{
printf("select data err:%s\n",rerrmsg);
sqlite3_free(rerrmsg);
return -;
} else
{
printf("select data successfully!\n");
}
}
}
} sqlite3_close(db); return ;
}
六,图形界面管理工具
以上,
2017/03/30
Sqlite3支持的数据类型
NULL,INTEGER,REAL,TEXT,BLOB
以及:
smallint 16 位元的整数。
interger 32 位元的整数。
decimal(p,s) p 精确值和 s 大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数点後有几位数。如果没有特别指定,则系统会设为 p=5; s=0 。
float 32位元的实数。
double 64位元的实数。
char(n) n 长度的字串,n不能超过 254。
varchar(n) 长度不固定且其最大长度为 n 的字串,n不能超过 4000。
graphic(n) 和 char(n) 一样,不过其单位是两个字元 double-bytes, n不能超过127。这个形态是为了支援两个字元长度的字体,例如中文字。
vargraphic(n) 可变长度且其最大长度为 n 的双字元字串,n不能超过 2000
date 包含了 年份、月份、日期。
time 包含了 小时、分钟、秒。
timestamp 包含了 年、月、日、时、分、秒、千分之一秒。
参考:
| type | description |
|---|---|
| TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB, BYTEA | String types of unlimited length. Binary data must be safely encoded, see text. |
| CHAR(), VARCHAR(), TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT | String types of unlimited length. There is no chopping or padding performed by the database engine. |
| ENUM | String type of unlimited length. In contrast to MySQL, choosing ENUM over VARCHAR does not save any storage space. |
| SET | String type of unlimited length. In contrast to MySQL, the input is not checked against the list of allowed values. |
| YEAR | String type of unlimited length. MySQL stores 2 or 4 digit years as a 1 byte value, whereas the SQLite drivers stores the string as provided. |
| TINYINT, INT1, CHAR | A 1 byte type used to store one character, a signed integer between -128 and 127, or an unsigned integer between 0 and 255. |
| SMALLINT, INT2 | 2 byte (short) integer type used to store a signed integer between -32768 and 32767 or an unsigned integer between 0 and 65535. |
| MEDIUMINT | 3 byte integer type used to store a signed integer between -8388608 and 8388607 or an unsigned integer between 0 and 16777215. |
| INT, INTEGER, INT4 | 4 byte (long) integer type used to store a signed integer between -2147483648 and 2147483647 or an unsigned integer between 0 and 4294967295. |
| BIGINT, INT8, INTEGER PRIMARY KEY | 8 byte (long long) integer type used to store a signed integer between -9223372036854775808 and 9223372036854775807 or an unsigned integer between 0 and 18446744073709551615. See below for a discussion of INTEGER PRIMARY KEY. |
| DECIMAL, NUMERIC | A string type of unlimited length used to store floating-point numbers of arbitrary precision. |
| TIMESTAMP, DATETIME | A string type of unlimited length used to store date/time combinations. The required format is 'YYYY-MM-DD HH:MM:SS', anything following this pattern is ignored. |
| DATE | A string type of unlimited length used to store a date. The required format is 'YYYY-MM-DD', anything following this pattern is ignored. |
| TIME | A string type of unlimited length used to store a time. The required format is 'HH:MM:SS', anything following this pattern is ignored. |
| FLOAT, FLOAT4, REAL | A 4 byte floating-point number. The range is -3.402823466E+38 to -1.175494351E-38, 0, and 1.175494351E-38 to 3.402823466E+38. Please note that MySQL treats REAL as an 8 byte instead of a 4 byte float like PostgreSQL. |
| DOUBLE, DOUBLE PRECISION, FLOAT8 | An 8 byte floating-point number. The range is -1.7976931348623157E+308 to -2.2250738585072014E-308, 0, and 2.2250738585072014E-308 to 1.7976931348623157E+308. |
Sqlite3入门简记的更多相关文章
- python sqlite3 入门 (视频讲座)
python sqlite3 入门 (视频讲座) an SQLite mini-series! - Simple Databases with Python 播放列表: YouTube https:/ ...
- sqlite3 入门
SQLite3 C语言API入门下载SQLite3 我们下载sqlite源码包,只需要其中的sqlite3.c.sqlite.h即可.最简单的一个创建表操作#include <stdio.h&g ...
- sqlite3入门之sqlite3_get_table,sqlite3_free_table
sqlite3_get_table sqlite3_get_table函数原型: int sqlite3_get_table( sqlite3 *db, /* An open database */ ...
- sqlite3入门之sqlite3_open,sqlite3_exec,slite3_close
sqlite3_open sqlite3_open函数原型: int sqlite3_open( const char *filename, /* Database filename (UTF-8) ...
- Docker入门简记
Docker的容器环境实际上是借助类Linux命名空间,将各种系统资源按照容器不同划分了不同的命名空间进行隔离,为各个进程提供独立的运行环境关键概念:容器,镜像两个概念一起看,镜像好比平常系统中的各个 ...
- sqlite3入门之sqlite3_mprintf
sqlite3_mprintf sqlite3_mprintf()函数原型: char *sqlite3_mprintf(const char*,...); sqlite3_mprintf()的作用是 ...
- sqlite3使用入门
sqlite的安装 1. 首先是下载sqlite,可以该页面下载:http://www.sqlite.org/download.html 当前的最新版本为:sqlite-shell-win32-x86 ...
- SQLite3简单入门及C++ API
转载请注明出处:http://www.cnblogs.com/StartoverX/p/4660487.html 项目用到SQLite3,简单记录一下. MySQL不同,SQLite3的数据库基于文件 ...
- python3基础入门-知识点简记
1.基础语法 编码.标识符.保留字.注释.行与缩进... 2.变量类型 (1)Python3有6个标准的数据类型: Numbers(数字) 数字数据类型用于存储数值 不可改变的数据类型 可细分为 ...
随机推荐
- MVC4 发布到II7或者IIS7.5遇到NO Find问题
1.出现的错误页面
- 使用Type.MakeGenericType,反射构造泛型类型
有时我们会有通过反射来动态构造泛型类型的需求,该如何实现呢?举个栗子,比如我们常常定义的泛型委托Func<in T, out TResult>,当T或TResult的类型需要根据程序上下文 ...
- Servlet(九):web.xml文件和server.xml文件
Web.xml 文件使用总结:作用: 存储项目相关的配置信息,保护 Servlet.解耦一些数据对程序的依赖.使用位置: 每个 Web 项目中Tomcat 服务器中(在服务器目录 conf 目录中)区 ...
- POJ 1515 Street Directions (边双连通)
<题目链接> 题目大意: 有m条无向边,现在把一些边改成有向边,使得所有的点还可以互相到达.输出改变后的图的所有边(无向边当成双向的有向边输出). 解题分析: 因为修改边后,所有点仍然需要 ...
- 重启部署在阿里云上的huginn
背景,因为重新编译安装了gcc,不知怎么服务器上的huginn就停了, 因为之前是安装在docker上的,服务器重启之后需要:1.启动dockerservice docker start2.命令创建h ...
- 网页布局之flex
Flex是Flexible Box的缩写,意为“弹性布局”,用来为盒状模型提供最大的灵活性.设为Flex布局以后,子元素的float.clear和vertical-align属性将失效.使用flex ...
- JAVA基础复习与总结<二>构造方法_static关键字_final关键字
构造方法详解 构造器也叫做构造方法(constructor),用于对象的初始化. class Person2 { String name; int age; public Person2(String ...
- java 解析富文本处理 img 标签
很多项目都需要到富文本来添加内容,就好比新闻啊,旅游景点之类的,都需要使用富文本去添加数据,然而怎么我这边就发现了两个问题 1)怎样将富文本的图片的 src 获取出来? 2)后台上传的时候用的是相对路 ...
- BZOJ 4644
可以把修改当成删除再插入一个新的, 线性基不容易删除,就用线段树分治 好像手写的bitset在这里很慢 #include<bits/stdc++.h> using namespace st ...
- (68)Wangdao.com第十一天_JavaScript 数组的常用方法
数组的常用方法: 向数组末尾添加一个或多个元素,返回新长度 var arr = new Array(); arr.push("唐僧"); // 返回 1 删除数组最后一个元素,返回 ...