linux sqlite3 数据库的安装与使用

简介: linux sqlite3 数据库的安装与使用

1, 本地安装,官网下载

sudo dpkg -i *.deb

2, 在线安装

sudo apt-get install sqlite3
sudo apt-get install libsqlite3-dev

安装完成后通过命令操作:
创建数据库
sqlite3 stu.db

在该数据库中创建表 stu
create table stu(id integer, name char, score integer);

查看有数据库表的结构图
.schema

查看
.table

插入数据
insert into stu values(1001, "zhangsan", 80);

查询
select * from stu

插入部分数据
insert into stu (name, score)values(1003, "wangwu");

删除数据
delete from stu

更新一个数据
update stu set name='wangwu' where id=1001;

查看打开的数据库
.databases

更改表, 插入一列
alter table stu add column address char;

删除一列,需要新建表,将原有表数据导入
create table stul as select id, name, score from stu;

删除表
drop table stu;

更改表的名字
alter table stu1 rename to stu;

通过c语言代码操作:
先通过命令创建表
create table usr (date text, chat text, from1 int, to1 int, state int);

插入数据
sprintf 通过拼接字符串发数据库命令
get_date(date);
sprintf(buf, "insert into usr values('%s', %d, %d, %d)", date, client_in.buf, client_in.host,client_in.dst, state);
if (sqlite3_exec(db, buf, NULL, NULL, &errmsg) != SQLITE_OK)
{

printf("%s", errmsg);
return -1;

}

简单的例子:

#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>

#define DATABASE  "stu.db"

int do_insert(sqlite3 *db)
{
    int id;
    char name[32] = {};
    int score;
    char *errmsg;
    char sql[128] = {};

    printf("input id:");
    scanf("%d", &id);

    printf("input name");
    scanf("%s", name);

    printf("input score");
    scanf("%d", &score);
    
    sprintf(sql, "insert into stu values(%d, %s, %d);", id, name, score);
    
    if (sqlite3_exec(db, sql, NULL, NULL, &errmsg) != SQLITE_OK)
    {
        printf("errmsg: %s\n", errmsg);
        return -1;
    }
    printf("insert success\n");
    return 0;
}


int do_delect(sqlite3 *db)
{
    int id;
    char *errmsg;
    char sql[128] = {};

    printf("input id:");
    scanf("%d", &id);
    
    sprintf(sql, "delete from stu where id = %d;", id);
    
    if (sqlite3_exec(db, sql, NULL, NULL, &errmsg) != SQLITE_OK)
    {
        printf("errmsg: %s\n", errmsg);
        return -1;
    }
    printf("delect done\n");
    return 0;
}


int do_update(sqlite3 *db)
{
    int id;
    int score;
    char *errmsg;
    char sql[128] = {};

    printf("update id:");
    scanf("%d", &id);

    printf("update score");
    scanf("%d", &score);
    
    sprintf(sql, "update stu set score = %d where id = %d;", score, id);
    
    if (sqlite3_exec(db, sql, NULL, NULL, &errmsg) != SQLITE_OK)
    {
        printf("errmsg: %s\n", errmsg);
        return -1;
    }
    printf("update done\n");
    return 0;
}

int callback(void *para, int f_num, char **f_value, char **f_name)
{
    int i = 0;

    for (i = 0; i < f_num; i++)
    {
        printf("%-11s", f_value[i]);
    }
    putchar(10);

    return 0;
}

int do_query(sqlite3 *db)
{
    char sql[128] = {};
    char *errmsg;
    
    sprintf(sql, "select * from stu;");

    if (sqlite3_exec(db, sql, callback, NULL, &errmsg) != SQLITE_OK)
    {
        printf("%s\n", errmsg);
    }
    else
    {
        printf("query done\n");
    }
}

int do_quit(sqlite3 *db)
{
    sqlite3_close(db);
}

int do_query1(sqlite3 *db)
{
    int i, j;
    char sql[128] = {};
    char **pazResult;
    int pnRow;       /* Number of result rows written here */
     int pnColumn; 
    char *errmsg;
    int index = 0;

    sprintf(sql, "select * from stu;");

    if (sqlite3_get_table(db, sql, &pazResult, &pnRow, &pnColumn, &errmsg)!= SQLITE_OK)
    {
        printf("%s\n", errmsg);
    }
    
    for (i = 0; i < pnRow; i++)
    {
        for(j = 0; j < pnColumn; j++)
            printf("%-11s ", pazResult[index++]);
        putchar(10);
    }
    return 0;
}

int main(int arge, char *argv[])
{
    sqlite3 *db;
    char *errmsg;
    int cmd;

    if ((sqlite3_open(DATABASE, &db)) != SQLITE_OK)
    {
        printf("%s\n", sqlite3_errmsg(db));
        return -1;
    }

    if (sqlite3_exec(db, "create table stu (id integer, name char, score integer);", NULL, NULL, &errmsg) != SQLITE_OK)
    {
        printf("%s\n", errmsg);
    }

    printf("creaete table or open success\n");
    printf("%d\n", SQLITE_OK);
    while(1)
    {
        printf("*******************\n");
        printf("1:insert 2:delect 3:query 4:update 5:quit\n");
        scanf("%d", &cmd);

        switch(cmd)
        {
            case 1:
                do_insert(db);
                break;
            case 2:
                do_delect(db);
                break;
            case 3:
                do_query(db);
                //do_query1(db);
                break;
            case 4:
                do_update(db);
                break;
            case 5:
                do_quit(db);
                return 0;
            default:
                printf("ERROR cmd \n");
        }
    }
    return 0;
}
相关文章
|
6月前
|
Ubuntu Linux
计算机基础知识:linux系统怎么安装?
在虚拟机软件中创建一个新的虚拟机,并选择相应操作系统类型和硬盘空间大小等参数。将下载的 ISO 镜像文件加载到虚拟机中。启动虚拟机,进入安装界面,并按照步骤进行安装。安装完成后,可以在虚拟机中使用 Linux 系统。
|
4月前
|
安全 Linux iOS开发
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
320 6
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
|
4月前
|
消息中间件 Kafka Linux
Linux下安装Kafka 3.9.1
本文介绍Kafka 3.9.1版本的安装与配置,包括通过ZooKeeper或KRaft模式启动Kafka。涵盖环境变量设置、日志路径修改、集群UUID生成、存储格式化及服务启停操作,适用于Linux环境下的部署实践。
546 0
|
6月前
|
网络协议 关系型数据库 Linux
【App Service Linux】在Linux App Service中安装 tcpdump 并抓取网络包
在App Service for Linux环境中,无法像Windows一样直接使用网络排查工具抓包。本文介绍了如何通过TCPDUMP在Linux环境下抓取网络包,包括SSH进入容器、安装tcpdump、执行抓包命令及下载分析文件的完整操作步骤。
317 5
|
6月前
|
弹性计算 安全 Linux
阿里云服务器ECS安装宝塔Linux面板、安装网站(新手图文教程)
本教程详解如何在阿里云服务器上安装宝塔Linux面板,涵盖ECS服务器手动安装步骤,包括系统准备、远程连接、安装命令执行、端口开放及LNMP环境部署,手把手引导用户快速搭建网站环境。
|
6月前
|
Ubuntu 安全 Linux
Linux这5款微型发行版,体积小+精简,比win7运行还快,值得安装
以上5款微型发行版体积小且精简,如果你有台旧电脑,不妨试试?
|
5月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
444 158
|
5月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
5月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1040 152