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;
}
相关文章
|
缓存 Linux 调度
【YashanDB数据库】VMware虚拟机使用默认安装,在掉电之后数据库无法启动
VMware虚拟机使用默认安装,在掉电之后数据库无法启动
|
8月前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
966 7
|
8月前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
722 0
|
Ubuntu 关系型数据库 Linux
Linux数据库安装
本文介绍了在CentOS 8.0和Ubuntu 22.04系统上安装、配置和启动MariaDB数据库服务器的详细步骤。包括通过`yum`和`apt`包管理器安装MariaDB服务,启动并检查服务运行状态,设置root用户密码以及连接数据库的基本操作。此外,还展示了如何在Ubuntu上更新软件包列表、安装依赖项,并验证MariaDB的版本和运行状态。通过这些步骤,用户可以成功部署并初始化MariaDB环境,为后续数据库管理与应用开发奠定基础。
807 61
|
SQL 关系型数据库 MySQL
MySQL下载安装全攻略!小白也能轻松上手,从此数据库不再难搞!
这是一份详细的MySQL安装与配置教程,适合初学者快速上手。内容涵盖从下载到安装的每一步操作,包括选择版本、设置路径、配置端口及密码等。同时提供基础操作指南,如数据库管理、数据表增删改查、用户权限设置等。还介绍了备份恢复、图形化工具使用和性能优化技巧,帮助用户全面掌握MySQL的使用方法。附带常见问题解决方法,保姆级教学让你无忧入门!
1348 21
MySQL下载安装全攻略!小白也能轻松上手,从此数据库不再难搞!
|
自然语言处理 数据库 iOS开发
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
956 12
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
|
SQL 数据库连接 数据库
在C++的QT框架中实现SQLite数据库的连接与操作
以上就是在C++的QT框架中实现SQLite数据库的连接与操作的基本步骤。这些步骤包括创建数据库连接、执行SQL命令、处理查询结果和关闭数据库连接。在实际使用中,你可能需要根据具体的需求来修改这些代码。
836 14
|
监控 Java Shell
【YashanDB 知识库】ycm 托管数据库时,数据库非 OM 安装无法托管
本文主要介绍了因数据库未按规范使用 yasboot 安装导致的问题及解决方法。问题表现为无 yasom 和 yasagent 进程,且目录结构缺失,致使 ycm 无法托管与监控。分析发现可能是数据库版本旧或安装不规范引起。解决方法为先生成配置文件,安装 yasom 和 yasagent,再生成并修改托管配置模板,最终通过命令完成托管至 yasom 和 ycm。总结强调了按规范安装数据库的重要性以避免类似问题。
|
监控 数据库
【YashanDB知识库】ycm托管数据库时,数据库非OM安装无法托管
### 简介 在检查数据库安装时,发现未使用yasboot安装,导致无yasom和yasagent进程及缺少相关目录,无法通过ycm托管和监控。为解决此问题,需先将数据库托管到yasom中,再托管到ycm中。具体步骤包括生成配置文件、安装yasom和yasagent、修改并执行托管配置。最终确保数据库能被正常托管和监控。经验总结:应按规范使用yasboot安装数据库,避免后续问题。 (239字符)
|
Linux 数据库管理
LINUX下载并编译sqlite
LINUX下载并编译sqlite
209 0