一,安装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 ;
}

六,图形界面管理工具

     SQLite Expert - Personal Edition ,简单入门,直接导入数据库文件即可

以上,

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入门简记的更多相关文章

  1. python sqlite3 入门 (视频讲座)

    python sqlite3 入门 (视频讲座) an SQLite mini-series! - Simple Databases with Python 播放列表: YouTube https:/ ...

  2. sqlite3 入门

    SQLite3 C语言API入门下载SQLite3 我们下载sqlite源码包,只需要其中的sqlite3.c.sqlite.h即可.最简单的一个创建表操作#include <stdio.h&g ...

  3. sqlite3入门之sqlite3_get_table,sqlite3_free_table

    sqlite3_get_table sqlite3_get_table函数原型: int sqlite3_get_table( sqlite3 *db, /* An open database */ ...

  4. sqlite3入门之sqlite3_open,sqlite3_exec,slite3_close

    sqlite3_open sqlite3_open函数原型: int sqlite3_open( const char *filename, /* Database filename (UTF-8) ...

  5. Docker入门简记

    Docker的容器环境实际上是借助类Linux命名空间,将各种系统资源按照容器不同划分了不同的命名空间进行隔离,为各个进程提供独立的运行环境关键概念:容器,镜像两个概念一起看,镜像好比平常系统中的各个 ...

  6. sqlite3入门之sqlite3_mprintf

    sqlite3_mprintf sqlite3_mprintf()函数原型: char *sqlite3_mprintf(const char*,...); sqlite3_mprintf()的作用是 ...

  7. sqlite3使用入门

    sqlite的安装 1. 首先是下载sqlite,可以该页面下载:http://www.sqlite.org/download.html 当前的最新版本为:sqlite-shell-win32-x86 ...

  8. SQLite3简单入门及C++ API

    转载请注明出处:http://www.cnblogs.com/StartoverX/p/4660487.html 项目用到SQLite3,简单记录一下. MySQL不同,SQLite3的数据库基于文件 ...

  9. python3基础入门-知识点简记

    1.基础语法 编码.标识符.保留字.注释.行与缩进... 2.变量类型 (1)Python3有6个标准的数据类型: Numbers(数字)  数字数据类型用于存储数值  不可改变的数据类型 可细分为  ...

随机推荐

  1. MVC4 发布到II7或者IIS7.5遇到NO Find问题

    1.出现的错误页面

  2. 使用Type.MakeGenericType,反射构造泛型类型

    有时我们会有通过反射来动态构造泛型类型的需求,该如何实现呢?举个栗子,比如我们常常定义的泛型委托Func<in T, out TResult>,当T或TResult的类型需要根据程序上下文 ...

  3. Servlet(九):web.xml文件和server.xml文件

    Web.xml 文件使用总结:作用: 存储项目相关的配置信息,保护 Servlet.解耦一些数据对程序的依赖.使用位置: 每个 Web 项目中Tomcat 服务器中(在服务器目录 conf 目录中)区 ...

  4. POJ 1515 Street Directions (边双连通)

    <题目链接> 题目大意: 有m条无向边,现在把一些边改成有向边,使得所有的点还可以互相到达.输出改变后的图的所有边(无向边当成双向的有向边输出). 解题分析: 因为修改边后,所有点仍然需要 ...

  5. 重启部署在阿里云上的huginn

    背景,因为重新编译安装了gcc,不知怎么服务器上的huginn就停了, 因为之前是安装在docker上的,服务器重启之后需要:1.启动dockerservice docker start2.命令创建h ...

  6. 网页布局之flex

    Flex是Flexible Box的缩写,意为“弹性布局”,用来为盒状模型提供最大的灵活性.设为Flex布局以后,子元素的float.clear和vertical-align属性将失效.使用flex ...

  7. JAVA基础复习与总结<二>构造方法_static关键字_final关键字

    构造方法详解 构造器也叫做构造方法(constructor),用于对象的初始化. class Person2 { String name; int age; public Person2(String ...

  8. java 解析富文本处理 img 标签

    很多项目都需要到富文本来添加内容,就好比新闻啊,旅游景点之类的,都需要使用富文本去添加数据,然而怎么我这边就发现了两个问题 1)怎样将富文本的图片的 src 获取出来? 2)后台上传的时候用的是相对路 ...

  9. BZOJ 4644

    可以把修改当成删除再插入一个新的, 线性基不容易删除,就用线段树分治 好像手写的bitset在这里很慢 #include<bits/stdc++.h> using namespace st ...

  10. (68)Wangdao.com第十一天_JavaScript 数组的常用方法

    数组的常用方法: 向数组末尾添加一个或多个元素,返回新长度 var arr = new Array(); arr.push("唐僧"); // 返回 1 删除数组最后一个元素,返回 ...