sqlite基本操作

简介

文章目录

  • 简介
      • 1.数据库的安装
      • 2.数据库命令:
      • API,创建表单
      • 代码
  • c
      • sprintf()
      • getchar和scanf()

1.数据库的安装

   sudo dpkg -i  *.deb

image.png
这个报错表明出现依赖问题
用这个命令后再试试sudo apt --fix-broken install

2.数据库命令:

  1)系统命令 , 都以'.'开头.exit .quit.table   查看表.schema  查看表的结构 

sql语句, 都以‘;’结尾

    1-- 创建一张表create table stuinfo(id integer, name text, age integer, score float);2-- 插入一条记录insert into stuinfo values(1001, 'zhangsan', 18, 80);insert into stuinfo (id, name, score) values(1002, 'lisi', 90);3-- 查看数据库记录select * from stuinfo;select * from stuinfo where score = 80;select * from stuinfo where score = 80 and name= 'zhangsan';select * from stuinfo where score = 80 or name='wangwu';select name,score from stuinfo;  查询指定的字段select * from stuinfo where score >= 85 and score < 90;4-- 删除一条记录delete from stuinfo where id=1003 and name='zhangsan';5-- 更新一条记录update stuinfo set age=20 where id=1003;update stuinfo set age=30, score = 82 where id=1003;6-- 删除一张表drop table stuinfo;7-- 增加一列alter table stuinfo add column sex char;8-- 删除一列create table stu as select id, name, score from stuinfo;drop table stuinfo;alter table stu rename to stuinfo;

API,创建表单

代码

用c来调用sqlite
功能指令明细
image.png

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sqlite3.h>#define  DATABASE  "student.db"
#define  N  128//1、2、3、4、5具体操作的实现
int do_insert(sqlite3 *db)
{int id;char name[32] = {};char sex;int score;char sql[N] = {};char *errmsg;printf("Input id:");scanf("%d", &id);printf("Input name:");scanf("%s", name);getchar();printf("Input sex:");scanf("%c", &sex);printf("Input score:");scanf("%d", &score);sprintf(sql, "insert into stu values(%d, '%s', '%c', %d)", id, name, sex, score);if(sqlite3_exec(db, sql, NULL, NULL, &errmsg) != SQLITE_OK){printf("%s\n", errmsg);}else{printf("Insert done.\n");}return 0;
}
int do_delete(sqlite3 *db)
{int id;char sql[N] = {};char *errmsg;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("%s\n", errmsg);}else{printf("Delete done.\n");}return 0;
}
int do_update(sqlite3 *db)
{int id;char sql[N] = {};char name[32] = "zhangsan";char *errmsg;printf("Input id:");scanf("%d", &id);sprintf(sql, "update stu set name='%s' where id=%d", name,id);if(sqlite3_exec(db, sql, NULL, NULL, &errmsg) != SQLITE_OK){printf("%s\n", errmsg);}else{printf("update done.\n");}return 0;
}int callback(void *arg, int f_num, char ** f_value, char ** f_name)
{int i = 0;for(i = 0; i < f_num; i++){//  printf("%-8s %s", f_value[i], f_name[i]);printf("%-8s", f_value[i]);}printf("++++++++++++++++++++++");putchar(10);return 0;
}int do_query(sqlite3 *db)
{char *errmsg;char sql[N] = "select count(*) from stu where name='zhangsan';";if(sqlite3_exec(db, sql, callback,NULL , &errmsg) != SQLITE_OK){printf("%s", errmsg);}else{printf("select done.\n");}
}int do_query1(sqlite3 *db)
{char *errmsg;char ** resultp;int nrow;int ncolumn;if(sqlite3_get_table(db, "select * from stu", &resultp, &nrow, &ncolumn, &errmsg) != SQLITE_OK){printf("%s\n", errmsg);return -1;}else{printf("query done.\n");}int i = 0;int j = 0;int index = ncolumn;for(j = 0; j < ncolumn; j++){printf("%-10s ", resultp[j]);}putchar(10);for(i = 0; i < nrow; i++){for(j = 0; j < ncolumn; j++){printf("%-10s ", resultp[index++]);}putchar(10);}return 0;
}int main(int argc, const char *argv[])
{//创建库sqlite3 *db;char *errmsg;int n;
//打开数据库if(sqlite3_open(DATABASE, &db) != SQLITE_OK){printf("%s\n", sqlite3_errmsg(db));return -1;}else{printf("open DATABASE success.\n");}
//创建表单if(sqlite3_exec(db, "create table if not exists stu(id int, name char , sex char , score int);",NULL, NULL, &errmsg) != SQLITE_OK){printf("%s\n", errmsg);}else{printf("Create or open table success.\n");}//1、2、3、4、5功能的目录,while保持每次执行完再选择相应操作while(1){printf("********************************************\n");printf("1: insert  2:query  3:delete 4:update 5:quit\n");printf("********************************************\n");printf("Please select:");scanf("%d", &n);switch(n){case 1:do_insert(db);break;case 2:do_query(db);//  do_query1(db);break;case 3:do_delete(db);break;case 4:do_update(db);break;case 5:printf("main exit.\n");sqlite3_close(db);exit(0);break;default :printf("Invalid data n.\n");}}return 0;
}

运行
gcc student.c -lsqlite
./a.out

c

sprintf()

image.png

getchar和scanf()

用户回车\n
输入的字符会暂时存在缓冲区,等待getchar和scanf拿走

scanf()遇到 \n退出,不拿走\n
getchar()遇到\n退出,会拿走\n
image.png
getchar()和scanf()
image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/21213.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机组成原理----浮点数的表示和运算

目录 一.浮点数的表示 1.浮点数的作用和基本原理 2.浮点数的规格化 3.浮点数的表示范围 二.IEEE 754标准 三.浮点数的加减运算 1.加减运算 2.强制类型转换 一.浮点数的表示 1.浮点数的作用和基本原理 定点数在字节数固定的情况下&#xff0c;能表示的数字是很有限的&…

输入15个整数,计算并输出15个整数的和,并输出其中最大值和最小值;

输入15个整数&#xff0c;计算并输出15个整数的和&#xff0c;并输出其中最大值和最小值&#xff1b; #include<stdio.h> int main() {int i0,s0,max,min,jg0,jp0,og0,omax; int a[15]{12,13,14,16,17,18,19,10,1,2,3,4,5,6,7}; maxa[0],mina[0]; for(i0,s0;i<15;i) …

BIT 2024 编译原理 Lab. 4 四代编译器实验说明和要求

实验四&#xff1a;四代编译器实验 一、实验要求 详细实验要求请参考文件《Lab4实验说明和要求.pdf》。 二、实验思路 1、与 lab3 的对比 如果你在 lab3 就已经像我一样单独写了个函数处理表达式&#xff0c;那么理论上&#xff0c;lab4 相比于 lab3&#xff0c;不过就是多…

ComfyUi安装OOTDiffusion插件的diffusers版本问题

OOTDiffusion换装 在github上有近5K的star了&#xff08;https://github.com/levihsu/OOTDiffusion&#xff09;。 diffusers版本问题 最新版是0.27.2&#xff0c;不能低于0.25&#xff0c;但是OOT换装需要0.24&#xff0c;否则会报错&#xff1a; ComfyUI\custom_nodes\Comf…

系统架构设计师【第14章】: 云原生架构设计理论与实践 (核心总结)

文章目录 14.1 云原生架构产生背景14.2 云原生架构内涵14.2.1 云原生架构定义14.2.2 云原生架构原则14.2.3 主要架构模式14.2.4 典型的云原生架构反模式 14.3 云原生架构相关技术14.3.1 容器技术14.3.2 云原生微服务14.3.3 无服务器技术14.3.4 服务网格 14.4 云原生…

HTML+CSS 文本动画卡片

效果演示 实现了一个图片叠加文本动画效果的卡片&#xff08;Card&#xff09;布局。当鼠标悬停在卡片上时&#xff0c;卡片上的图片会变为半透明&#xff0c;同时显示隐藏在图片上的文本内容&#xff0c;并且文本内容有一个从左到右的渐显动画效果&#xff0c;伴随着一个白色渐…

YOLOV10训练自己的数据集

*************************************************** 码字不易&#xff0c;收藏之余&#xff0c;别忘了给我点个赞吧&#xff01; *************************************************** Start YOLOV10训练自己的数据集 官方论文&#xff1a;https://arxiv.org/abs/2405…

使用busybox快速创建rootfs系统(硬件:atk-dl6y2c)

目录 概述 1 编译busybox 1.1 配置Makefile 1.2 需改参数 1.3 配置busybox 1.4 编译busybox 2 完善 rootfs下文件 2.1 rootfs 的“/lib”目录添加库文件 2.2 rootfs 的“usr/lib”目录添加库文件 2.3 创建其他目录 3 完善其他文件 3.1 完善etc/init.d/rcS 3.2 完善…

Golang | Leetcode Golang题解之第128题最长连续序列

题目&#xff1a; 题解&#xff1a; func longestConsecutive(nums []int) int {numSet : map[int]bool{}for _, num : range nums {numSet[num] true}longestStreak : 0for num : range numSet {if !numSet[num-1] {currentNum : numcurrentStreak : 1for numSet[currentNum…

【CMake】CMake入门(五)打包安装程序 使用CMake管理库 打包调试版和发行版

本篇文章不是新手入门教学文章&#xff0c;主要是记录笔者个人的学习笔记 CMake入门&#xff08;五&#xff09; 一、打包二、使用CMake管理库三、打包调试版和发行版 一、打包 发布程序可以有多种形式&#xff0c;比如安装包、压缩包、源文件等。CMake也提供了打包程序cpack可…

金钱的认知,你如何理解呢?

金钱的认知 建立在金钱之上的爱情是纯真的爱&#xff0c;朋友关系也才够纯粹&#xff0c;才是单纯的世界&#xff0c;反之没了钱的条件爱情和友情的美好关系极易破碎&#xff0c;也极易反目成仇。 心若美好钱就美好&#xff0c;心有欲望狰狞钱就是只咬人的老虎&#xff0c;钱…

Linux 僵尸进程和孤儿进程

一.Z(zombie)-僵尸进程 1.僵死状态&#xff08;Zombies&#xff09;是一个比较特殊的状态。当进程退出并且父进程&#xff08;使用wait()系统调用后&#xff09;没有读取到子进程退出的返回代码时就会产生僵死(尸)进程 2.僵死进程会以终止状态保持在进程表中&#xff0c;并且会…

Java17 --- SpringCloud之seate

目录 一、创建seata需要的mysql数据库表 二、修改seata的配置文件 三、启动nacos及seata 四、创建需要的数据库及表 一、创建seata需要的mysql数据库表 CREATE DATABASE seata;CREATE TABLE IF NOT EXISTS global_table(xid VARCHAR(128) NOT NULL,…

C++ | Leetcode C++题解之第128题最长连续序列

题目&#xff1a; 题解&#xff1a; class Solution { public:int longestConsecutive(vector<int>& nums) {unordered_set<int> num_set;for (const int& num : nums) {num_set.insert(num);}int longestStreak 0;for (const int& num : num_set) {…

隐马尔可夫链

1 马尔可夫链 马尔科夫链&#xff08;Markov Chain&#xff09;是一种数学模型&#xff0c;它描述了一系列可能事件的概率&#xff0c;其中每个事件的发生仅依赖于前一个事件的状态。这一特性称为“无记忆性”或“马尔可夫性质”。我将用一个简单的天气预测模型作为例子来解释马…

T-Pot多功能蜜罐实践@debian12@FreeBSD

T-Pot介绍 T-Pot是一个集所有功能于一身的、可选择分布式的多构架&#xff08;amd64&#xff0c;arm64&#xff09;蜜罐平台&#xff0c;支持20多个蜜罐和很多可视化选项&#xff0c;使用弹性堆栈、动画实时攻击地图和许多安全工具来进一步改善欺骗体验。GitHub - telekom-sec…

SpringBootWeb登录认证

JWT令牌 JSON Web Token JSON Web Tokens - jwt.ioJSON Web Token (JWT) is a compact URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is digitally signed using JSON Web Signatur…

文件系统和日志分析

文件系统 概述 文件是存储在硬盘上的。硬盘上的最小存储单位是扇区&#xff0c;每个扇区的大小是512字节。 inode号&#xff1a;又叫索引号&#xff0c;保存的是元信息&#xff08;主要有文件的属性 &#xff1a;包括权限&#xff0c;创建者&#xff0c;创建日期等&#xff…

Renesas MCU之使用e² studio搭建开发环境

目录 概述 1 e studio介绍 2 搭建Renesas MUC开发环境 2.1 软件版本信息 2.2 安装软件 3 创建工程 3.1 板卡硬件接口 3.2 FSP配置IO 4 Generate Project 4.1 项目目录介绍 4.2 LED接口相关驱动 5 调试 5.1 测试代码 5.2 J-Link调试代码 5.3 硬件结构 概述 本文主…

ES6-01-简介

一、什么是ES6&#xff1f; 每年一个版本o(╥﹏╥)o。 二、javaScript新特性的特点 1、语法简洁&#xff0c;功能丰富&#xff1b; 2、框架开发应用。 3、岗位需求&#xff01; 三、let关键字 3-1、声明变量 let a;let a,b;let e100;let f521, gmilk-love, h[]; 3-2、声明的…