Android-sqlite的命令,保证数据库只有最新的若干条

2023-12-23 05:38

本文主要是介绍Android-sqlite的命令,保证数据库只有最新的若干条,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

创建表

//创建表create table student(sid integer primary key autoincrement not null,
gender varchar(20)  not null,
score  integer  not null);

insert into student(sname,gender,score) values('Li','male',88);CREATE TABLE Cars(Id integer PRIMARY KEY, Name text, Cost integer);
INSERT INTO Cars VALUES(1,'Audi',52642);

delete from student where sid=3;

update student set score=100,gender='male' where sname='Mike';

select * from student;
select * from student where gender='female';
//模糊查询
select * from student where sname like '%a%';
select * from student where sname like 'a%';
//排序查询
select * from student order by score desc;    降序
select * from student order by score;         默认升序
select * from student order by score asc;    升序

报错:

android.database.sqlite.SQLiteException: no such column: (Sqlite code 1)


AndroidRuntime: FATAL EXCEPTION: mainProcess: com.xq.mygreendao, PID: 1742android.database.sqlite.SQLiteException: no such column: 许强 (Sqlite code 1): , while compiling: insert into user(name,age,sex,salary) values(许强,18,男,160000), (OS error - 2:No such file or directory)at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:925)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:536)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:603)at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:63)at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1965)at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1890)at com.xq.mygreendao.db.helper.UserSqlUtils.insertSQL(UserSqlUtils.java:52)at com.xq.mygreendao.MainActivity.insertSql(MainActivity.java:256)at com.xq.mygreendao.MainActivity.onClick(MainActivity.java:125)at android.view.View.performClick(View.java:5647)at android.view.View$PerformClick.run(View.java:22479)at android.os.Handler.handleCallback(Handler.java:761)at android.os.Handler.dispatchMessage(Handler.java:98)at android.os.Looper.loop(Looper.java:156)at android.app.ActivityThread.main(ActivityThread.java:6623)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)

检查建表字段的类型,然后打印输出的语句是否符合:

这里写图片描述

字段都为字符串。

 public void insertSQL(String name, String age, String sex, String salary) {SQLiteDatabase db = DBHelper.getInstance(context).getReadableDatabase();//String stu_sql="insert into user(name,age,sex,salary) values('许强','18','男','12700')";String strSql = "insert into " + UserTableUtil.TABLE_NAME +"(" + UserTableUtil.NAME + "," + UserTableUtil.AGE + "," + UserTableUtil.SEX + "," + UserTableUtil.SALARY + ")" +" values('" + name + "','" + age + "','" + sex + "','" + salary + ")";Log.e("UserSqlUtils", "插入数据====" + strSql);db.execSQL(strSql);}

打印log:

insert into user(name,age,sex,salary) values('许强','18','男','500000)

发现最后少了一个单引号

修改后:

 public void insertSQL(String name, String age, String sex, String salary) {SQLiteDatabase db = DBHelper.getInstance(context).getReadableDatabase();//String stu_sql="insert into user(name,age,sex,salary) values('许强','18','男','12700')";String strSql = "insert into " + UserTableUtil.TABLE_NAME +"(" + UserTableUtil.NAME + "," + UserTableUtil.AGE + "," + UserTableUtil.SEX + "," + UserTableUtil.SALARY + ")" +" values('" + name + "','" + age + "','" + sex + "','" + salary + "')";Log.e("UserSqlUtils", "插入数据====" + strSql);db.execSQL(strSql);}

再次运行打印log:

insert into user(name,age,sex,salary) values('许强','18','男','500000')

保证数据库只有最新的5条数据

drop table if exists student;create table student
(sid    integer primary key autoincrement not null,sname  varchar(20)                       not null,gender varchar(20)                       not null,score  integer                           not null
);insert into student(sname, gender, score)
values ('Li1', 'male', 88);
insert into student(sname, gender, score)
values ('Li2', 'male', 88);
insert into student(sname, gender, score)
values ('Li3', 'male', 88);
insert into student(sname, gender, score)
values ('Li4', 'male', 88);
insert into student(sname, gender, score)
values ('Li5', 'male', 88);select count(*)
from student;insert into student(sname, gender, score)
values ('Li6', 'male', 88);
insert into student(sname, gender, score)
values ('Li7', 'male', 88);-- 查询表中总共多少条数据
select count(*)
from student;-- 按sid倒叙查询第六条数据的sid
select sid
from student
order by sid desc
limit 1 offset 5;-- 删除表中sid小于等于第六条sid的数据( 核心 )
delete
from student
where sid <= (select sidfrom studentorder by sid desclimit 1 offset 5);

其他

SELECT * FROM COMPANY LIMIT 3 OFFSET 2;
//offset 2:偏移两条数据,从第三个开始
//limit 3 :取出三条数据

这篇关于Android-sqlite的命令,保证数据库只有最新的若干条的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/526904

相关文章

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据