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;
}
相关文章
|
4天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
51 15
|
9天前
|
关系型数据库 MySQL Linux
MySQL数据库下载安装教程(Windows&Linux)
本文档详细介绍了MySQL的安装步骤,包括安装前的准备工作、下载安装包、Windows和Linux系统下的具体安装流程,以及如何配置MySQL服务、设置环境变量、启动服务和连接数据库等关键操作。
|
20天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第16天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括配置系统源、安装 SQL Server 2019 软件包以及数据库初始化,确保 SQL Server 正常运行。
|
22天前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
49 4
|
28天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
|
15天前
|
网络安全 数据库
gbase 8a 数据库 安装8ampp 常见ssh报错问题
gbase 8a 数据库 安装8ampp 常见ssh报错问题
|
25天前
|
运维 关系型数据库 MySQL
安装MySQL8数据库
本文介绍了MySQL的不同版本及其特点,并详细描述了如何通过Yum源安装MySQL 8.4社区版,包括配置Yum源、安装MySQL、启动服务、设置开机自启动、修改root用户密码以及设置远程登录等步骤。最后还提供了测试连接的方法。适用于初学者和运维人员。
148 0
|
26天前
|
存储 缓存 Linux
【Linux】另一种基于rpm安装yum的方式
通过本文的方法,您可以在离线环境中使用RPM包安装YUM并进行必要的配置。这种方法适用于无法直接访问互联网的服务器或需要严格控制软件源的环境。通过配置本地YUM仓库,确保了软件包的安装和更新可以顺利进行。希望本文能够为您在特定环境中部署YUM提供实用的指导。
131 0
|
5天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
9天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。