sqlite3编程

前言

        SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等。       

                                                                                                                                                                                                                                    --------摘自百度百科

本篇文章主要讲述如何在终端和C程序里中使用sqlite3


一:在终端上使用sqlite3


1:首先检测当前环境下有没有安装

在终端上输入    sqlite3

结果:


第一行是你的版本信息;光标在等待你输入命令

终端上的一些基础命令

1: .help     打开帮助菜单  可以查看sqlite3的所有命令和用法

2: .exit      退出sqlite3

3 : .table  显示当前所有表

4:  .schema  <table_name> 查看表的结构   //不加括号

5:  .database 显示当前打开的数据库文件

系统命令一般以点开头;功能命令以分号结尾;

2:建立一张表

   create table student(         //student为表名
    ID         INTEGER,           //相当与字符型
    name    TEXT,                 //整形
    sex        TEXT,
    age        INTEGER,
    primary key(ID)             //ID值不可重复
    );


3:给表添加成员

    insert into student values(1, 'Zhang', 'M', 18);


第二个语句提示ID为1的重复了;

4:查看成员

select ID, Name from student where NOT(Sex = 'f');    //查看成员中SEX的值不为f的成员ID和名字


当要查看成员所有参数的时候ID,Name可以用*号代替

select * from student where NOT(Sex = 'f');  

where是个比较表达式,以下列举一些通用的表达式


NOT是逻辑操作符除了,NOT 以外还可以使用AND 、OR;

5:删除成员

delete from student where ID = 2;

删除student表里id为2的成员

6:删除表

drop tablestudent;

删除名字为student的表

二:在C程序上使用SQLITE3

1:先包含数据库头文件 sqlite3.h

2:定义一个数据库文件指针

     sqlite3 *database

2:打开表函数 

     int sqlite3_open( 文件名,sqlite3 ** );

    第一个参数为数据库名称,第二个是文件指针

    如果数据库不存在,则新建一个

3:关闭数据库

      intsqlite3_close(sqlite3 *);

     第一个参数为文件指针

4:使用数据库的函数

      int sqlite3_exec(sqlite3*, constchar *sql,sqlite3_callback, void *,  char**errmsg );

      第一个参数为文件指针;第二个参数为sql语句

      第三个参数为回调函数;第四个参数为为回调

      第5个参数char** errmsg是错误信息

5:例子

#include <stdio.h>
#include <sqlite3.h>   // 数据库的头文件

// 每查到一条记录,该函数被调用一次
int msg(void* v, int num, char** value, char** name)
{
        int i;
        for (i = 0; i < num; i++)
        {
                printf ("%s : %-8s", name[i], value[i]);
        }

        printf ("\n");

        return 0;  // 函数内部一定要返回一个0
}

int main()
{
        sqlite3 * database;

        // 打开数据库
        int ret = sqlite3_open("student.db", &database);
        if (ret != SQLITE_OK)
        {
                printf ("打开数据库失败\n");
                return -1;
        }

        printf ("打开数据库成功\n");

        char *errmsg = NULL;
        char *sql = "create table if not exists student(ID INTEGER,name TEXT,sex TEXT,age INTEGER,primary  key(ID))";
        ret = sqlite3_exec(database, sql, NULL, NULL, &errmsg);
        if (ret != SQLITE_OK)
        {
                printf ("数据库操作失败:%s\n", errmsg);
                return -1;
        }

        int id;
        char name[20];
        char sex[2];
        int age;
        printf ("请输入ID:\n");
        scanf ("%d", &id);

        printf ("请输入用户名:\n");
        scanf ("%s", name);

        printf ("请输入性别:\n");
        scanf ("%s", sex);

        printf ("请输入年龄:\n");
        scanf ("%d", &age);

        // insert into student values(id, name, sex, age);
        char buf[100];
        sprintf (buf, "insert into student values(%d, '%s', '%s', %d)", id, name, sex, age);
        ret = sqlite3_exec(database, buf, NULL, NULL, &errmsg);
        if (ret != SQLITE_OK)
        {
                printf ("数据库操作失败:%s\n", errmsg);
                return -1;
        }
        char *sql1 = "select * from student";
        ret = sqlite3_exec(database, sql1, msg, NULL, &errmsg);
        if (ret != SQLITE_OK)
        {
                printf ("数据库操作失败:%s\n", errmsg);
                return -1;
        }
        // 关闭数据库
        sqlite3_close(database);
        return 0;
}
TIP:如果用GCC编译的话,要加-lsqlite3
















猜你喜欢

转载自blog.csdn.net/wjb123sw99/article/details/77369581