1-SI--安卓SQLite基础使用指南

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 零、前言[1]熟悉MySQL的学这个就像会西瓜的人去学吃哈密瓜一样简单。[2]如果对MySQL不太熟悉的童鞋,可以看一下我的这篇:SpringBoot-14-MyBatis预热篇,MySQL小结 [3]SQLite:安卓内置轻量级的关系型数据库[4]强烈建议语句什么的提前写好,在MySQL上测试一下,不然少个分号,多个逗号什么的就呵呵了[5]安卓有API支持数据库操作,但感觉不怎么灵活,感兴趣的可以自己了解一下[6]本篇介绍基础使用,下篇会封装一下。

零、前言

[1]熟悉MySQL的学这个就像会西瓜的人去学吃哈密瓜一样简单。
[2]如果对MySQL不太熟悉的童鞋,可以看一下我的这篇:SpringBoot-14-MyBatis预热篇,MySQL小结
[3]SQLite:安卓内置轻量级的关系型数据库
[4]强烈建议语句什么的提前写好,在MySQL上测试一下,不然少个分号,多个逗号什么的就呵呵了
[5]安卓有API支持数据库操作,但感觉不怎么灵活,感兴趣的可以自己了解一下
[6]本篇介绍基础使用,下篇会封装一下。

坑点

[1]:SQLite 不支持 DEFAULT 关键字
[2]:INSERT INTO 的 INTO 要加上 (MySQL养成的坏毛病,得该)


一、创建数据库

1.SQL常量类:SQLCon.java
/**
 * 作者:张风捷特烈<br/>
 * 时间:2018/8/26 0026:14:48<br/>
 * 邮箱:1981462002@qq.com<br/>
 * 说明:SQL常量类
 */
public class SQLCon {
    /**
     * 数据库名
     */
    public static String DB_NAME = "weapon";

    /**
     * 数据库版本
     */
    public static int DB_VERSION = 1;

    /**
     * 建表语句
     */
    public static final String CREATE_TABLE = "CREATE TABLE sword (\n" +
            "id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,\n" +
            "name VARCHAR(32) NOT NULL,\n" +
            "atk SMALLINT UNSIGNED NOT NULL,\n" +
            "hit SMALLINT UNSIGNED NOT NULL DEFAULT 20,\n" +
            "crit SMALLINT UNSIGNED NOT NULL DEFAULT 10\n" +
            ");";
    
}

AI 代码解读
2.SQLiteOpenHelper使用:我的数据库辅助类
/**
 * 作者:张风捷特烈<br/>
 * 时间:2018/8/26 0026:14:26<br/>
 * 邮箱:1981462002@qq.com<br/>
 * 说明:我的数据库辅助类
 */
public class MySQLHelper extends SQLiteOpenHelper {

    private Context mContext;

    /**
     * 构造函数
     *
     * @param context 上下文
     */
    public MySQLHelper(Context context) {
        super(context, SQLCon.DB_NAME, null, SQLCon.DB_VERSION);
        mContext = context;
    }

    /**
     * 创建数据库,数据库存在就不会执行
     *
     * @param db SQLite数据库对象
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(SQLCon.CREATE_TABLE);//创建表
    }

    /**
     * 数据库进行升级
     *
     * @param db         SQLite数据库对象
     * @param oldVersion 旧版本
     * @param newVersion 新版本
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        
    }
}
AI 代码解读
3.在需要的地方使用:
MySQLHelper mySQLHelper = new MySQLHelper(this);//创建辅助对象
mySQLHelper.getWritableDatabase();//获取可写数据库对象

//getReadableDatabase()和getWritableDatabase()
//这两个方法都可以创建或打开一个现有的数据库,并返回一个可对数据库进行读写操作的对象。
//磁盘空间已满时getWritableDatabase()异常
AI 代码解读

创建数据库.png

二、升级数据库时删除表

1.SQL常量类,将数据库版本改到2:SQLCon.java
    /**
     * 数据库版本
     */
    public static int DB_VERSION = 2;
    
    /**
     * 删除表语句
     */
    public static final String DROP_TABLE = "DROP TABLE sword";
AI 代码解读
2.com.toly1994.si_sqlite.MySQLHelper#onUpgrade
db.execSQL(SQLCon.DROP_TABLE);
L.d(oldVersion+":"+newVersion+L.l());//1:2
AI 代码解读
3.在需要的地方使用
MySQLHelper mySQLHelper2 = new MySQLHelper(this);//创建辅助对象
mySQLHelper2.getWritableDatabase();//获取可写数据库对象
AI 代码解读

三、插入数据

1.SQL常量类
    /**
     * 插入语句
     */
    public static final String INSERT = "INSERT INTO sword(id,name,atk,hit,crit) VALUES" +
            "(1,'痕兮',7000,800,999)," +
            "(2,'逐暮',100,1000,10000)," +
            "(3,'风跃',9000,10,255);";
AI 代码解读
2..在需要的地方使用
mDb = new MySQLHelper(this).getWritableDatabase();
mDb.execSQL(SQLCon.INSERT);
AI 代码解读
插入数据.png

四、删除数据

1.SQL常量类
    /**
     * 删除数据
     */
    public static final String DELETE = "DELETE FROM sword WHERE id=1;";
AI 代码解读
2.在需要的地方使用
mDb = new MySQLHelper(this).getWritableDatabase();
mDb.execSQL(SQLCon.DELETE);
AI 代码解读
删除数据.png

五、修改数据

1.SQL常量类
    /**
     * 修改数据
     */
    public static final String UPDATE = "UPDATE sword SET hit=hit+1;";
AI 代码解读
2.在需要的地方使用
mDb = new MySQLHelper(this).getWritableDatabase();
mDb.execSQL(SQLCon.UPDATE);
AI 代码解读
修改数据.png

五、查询数据

1.查询所有
Cursor cursor = mDb.rawQuery("SELECT * FROM sword", null);
while (cursor.moveToNext()) {
    String id = cursor.getString(cursor.getColumnIndex("id"));
    String name = cursor.getString(cursor.getColumnIndex("name"));
    String atk = cursor.getString(cursor.getColumnIndex("atk"));
    String hit = cursor.getString(cursor.getColumnIndex("hit"));
    String crit = cursor.getString(cursor.getColumnIndex("crit"));
    System.out.println(id + "---" + name + "---" + atk + "---" + hit + "---" + crit);
}
    //2---逐暮---100---1001---10000
    //3---风跃---9000---11---255
cursor.close();//关闭游标
AI 代码解读
2.查询一个:?为占位符,后面String数组对应站位符位置,占位符可多个。
 Cursor cursor2 = mDb.rawQuery("SELECT * FROM sword WHERE id = ?", new String[]{"2"});
while (cursor2.moveToNext()) {
    String id = cursor2.getString(cursor2.getColumnIndex("id"));
    String name = cursor2.getString(cursor2.getColumnIndex("name"));
    String atk = cursor2.getString(cursor2.getColumnIndex("atk"));
    String hit = cursor2.getString(cursor2.getColumnIndex("hit"));
    String crit = cursor2.getString(cursor2.getColumnIndex("crit"));
    System.out.println(id + "---" + name + "---" + atk + "---" + hit + "---" + crit);
}
//2---逐暮---100---1001---10000
cursor2.close();//关闭游标
AI 代码解读

后记、

1.声明:

[1]本文由张风捷特烈原创,转载请注明
[2]欢迎广大编程爱好者共同交流
[3]个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正
[4]你的喜欢与支持将是我最大的动力

2.连接传送门:

更多安卓技术欢迎访问:安卓技术栈
我的github地址:欢迎star
简书首发,腾讯云+社区同步更新
张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com

3.联系我

QQ:1981462002
邮箱:1981462002@qq.com
微信:zdl1994328

4.欢迎关注我的微信公众号,最新精彩文章,及时送达:
公众号.jpg
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
1
分享
相关文章
Android数据存储:解释SQLite数据库在Android中的使用。
Android数据存储:解释SQLite数据库在Android中的使用。
110 0
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
316 2
48. 【Android教程】数据库:SQLite 的使用
48. 【Android教程】数据库:SQLite 的使用
161 1
Android之SQLite数据库使用详解
Android之SQLite数据库使用详解
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
260 0
Android 中SQLite数据库的使用详解
Android 中SQLite数据库的使用详解
130 0
Android使用Room操作SQLite数据库让其变得无比高效和简洁(进一步完善用RecyclerView显示数据库中的数据)
Android使用Room操作SQLite数据库让其变得无比高效和简洁(进一步完善用RecyclerView显示数据库中的数据)
99 0
Android App规范处理中版本设置、发布模式、给数据集SQLite加密的讲解及使用(附源码 超详细必看)
Android App规范处理中版本设置、发布模式、给数据集SQLite加密的讲解及使用(附源码 超详细必看)
97 0
Android Studio App开发中数据库SQLite的解析及实战使用(包括创建数据库,增删改查,记住密码等 附源码必看)
Android Studio App开发中数据库SQLite的解析及实战使用(包括创建数据库,增删改查,记住密码等 附源码必看)
692 0
(超详细)android中SqLite数据库的使用(一文包懂包会)
(超详细)android中SqLite数据库的使用(一文包懂包会)
366 0

热门文章

最新文章

  • 1
    Android历史版本与APK文件结构
    12
  • 2
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    26
  • 3
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
    2
  • 4
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    13
  • 5
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    4
  • 6
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    2
  • 7
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    2
  • 8
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
    3
  • 9
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    6
  • 10
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    2