关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » 安卓开发 »Android SQLite快速入门教程

    Android SQLite快速入门教程

    2015-03-15 00:00:00 出处:codeceo
    分享

    SQLite是Android平台软件开发中会经常用到的数据库产品,作为一款轻型数据库,SQLite的设计目标就是是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够。下面我们一起来看看针对Android平台的SQlite 3的使用。

    以下概念都是在Android平台的SQlite限制下的理解:

    数据库基础概念

    SQlite 通过文件来保存数据库,一个文件就是一个数据库。 数据库里又包含数个表格; 每个表格里面包含了多个记录; 每个记录由多个字段组成; 每个字段都有其对应的值; 每个值都可以指定类型。

    数据库名称即文件名;表格有自己的名称;记录没有名称;每个字段都有名称。在SQlite中,记录没有顺序的概念,不存在第一、第二此类的概念;只能通过查询来获取满足条件的记录。我们通过执行SQL指令来操作数据库。

    Android平台下数据库相关类

    SQLiteOpenHelper 抽象类:通过从此类继承实现用户类,来提供数据库打开、关闭等操作函数。 SQLiteDatabase 数据库访问类:执行对数据库的插入记录、查询记录等操作。 SQLiteCursor 查询结构操作类:用来访问查询结果中的记录。

    创建数据库

    假设使用一个数据库存储一个表格,表格中保存了多条记录,每个记录包含3个字段,分别是: ID、name、age。 从SQLiteOpenHelper继承实现一个类,所有对数据库的操作都封装在此类中。

    构造函数:

    public DbHelper(Context context, String name, CursorFactory factory, int version) {  
            super(context, name, factory, version);  
        }

    此函数中的参数name就是数据库名称,也就是数据库文件名; version则从1开始,当将来数据库的表格以及字段发生变化时,用户可以提高此version,从而触发onUpgrade()达到旧数据升级的效果。

    在onCreate函数中创建表格:

    public void onCreate(SQLiteDatabase db) {  
        StringBuilder sql = new StringBuilder();  
        sql.append("CREATE TABLE ");  
        sql.append(TBL_NAME);  
        sql.append(" (");  
        sql.append(FIELD_ID + " TEXT PRIMARY KEY NOT NULL, ");  
        sql.append(FIELD_NAME + " TEXT, ");  
        sql.append(FIELD_AGE + " INTEGER");  
        sql.append(");");  
        db.execSQL(sql.toString());  
    }

    onCreate函数只会在数据库第一次创建时调用,所以此处适合做一些数据库初始化操作。

    上面的函数最终实际上效果是执行了SQL语句:

    CREATE TABLE mytable (id TEXT PRIMARY KEY NOT NULL, name TEXT, age INTEGER);

    向表格中添加数据

    有两种方式可以向表格中添加数据,一种是通过SQLiteDatabase提供的execSQL函数直接执行SQL指令; 一种是通过SQLiteDatabase提供的insert函数,此函数把SQL语句进行了封装方便用户使用。

    通过execSQL(“INSERT INTO mytable VALUES(‘idStr’, ’nameStr’, 20);”);可以插入一条记录,当插入记录出错时会抛出异常需要处理。 通过insert函数:insert函数需要一个ContentValues类型的值,此类型类似于hashmap,一个key,一个值配成一对。key就是字段名。
    ContentValues v = new ContentValues();
     v.put("id", "101");
     v.put("name", "user 101");
     v.put("age", 44);
     mDb.insert("mytable", "null", v);

    假如v中的key没有完全的指定所有字段,比如少name或者少id,那么记录能否被成功插入要根据表格创建时的字段限制来决定, 比如少name,那么此记录会插入,只是name字段的值为NULL;假如少id,那么记录不会被插入,因为创建时指定了NOT NULL.

    可以通过以下指令来查看结果:

    adb shell执行后进入shell;

    cd /data/data/cn.demo.sql

    sqlite3 database.db 进入了sqlite操作界面。

    .help可以看到命令帮助。

    .dump 可以看到数据库中的数据。

    为了方便使用,可以自定义一个insert函数,将值通过参数传入,而ContentValues设置则在函数内部实现。

    public void insert(String id, String name, int age) {  
    if( mDb == null ) mDb = getWritableDatabase();  
    ContentValues v = new ContentValues();  
    v.put("id", id);  
    v.put("name", name);  
    if(age > 0) v.put("age", age);  
    mDb.insert(TBL_NAME, "null", v);

    从表格中查询记录

    SQL语句:SELECT column list FROM table WHERE expr ORDER BY column list; 通过SQLiteDatabase类的query()函数:

    Cursor SQLiteDatabase.query(String table, 
    String[] columns, String selection, String[] selectionArgs, 
    String groupBy, String having, String orderBy);

    Parameters:
    table 要更新的记录所在的表名。
    values 要更新的字段值。
    whereClause Where子句。更新哪些记录。
    whereArgs Where子句中的’ '替换串。
    执行update操作时,假如只给部分字段赋值,那么update后,没有赋值的字段仍然保持原来的值不变。

    从表格中删除记录:

    int SQLiteDatabase.delete(String table, String whereClause, String[] whereArgs);

    从SQLite的整个创建和查询过程我们可以看出,在Android平台,由于SQLite的特性,一切以文件为主,没有顺序的概念。我们可以通过查询来得到满足条件的记录,通过SQL指令来操作数据库。此外,我们应该熟记Android平台操作SQLite的几个类:SQLiteOpenHelper抽象类、SQLiteDatabase数据库访问类以及SQLiteCursor 查询结构操作类。

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    正版 Windows 11产品密钥怎么查找/查看?

    还有3个月,微软将停止 Windows 10 的更新

    Windows 10 终止支持后,企业为何要立即升级?

    Windows 10 将于 2025年10 月终止技术支持,建议迁移到 Windows 11

    Windows 12 发布推迟,微软正全力筹备Windows 11 25H2更新

    Linux 退出 mail的命令是什么

    Linux 提醒 No space left on device,但我的空间看起来还有不少空余呢

    hiberfil.sys文件可以删除吗?了解该文件并手把手教你删除C盘的hiberfil.sys文件

    Window 10和 Windows 11哪个好?答案是:看你自己的需求

    盗版软件成公司里的“隐形炸弹”?老板们的“法务噩梦” 有救了!

    IT头条

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    液冷服务器概念股走强,博汇、润泽等液冷概念股票大涨

    01:17

    亚太地区的 AI 驱动型医疗保健:2025 年及以后的下一步是什么?

    16:30

    智能手机市场风云:iPhone领跑销量榜,华为缺席引争议

    15:43

    大数据算法和“老师傅”经验叠加 智慧化收储粮食尽显“科技范”

    15:17

    技术热点

    SQL汉字转换为拼音的函数

    windows 7系统无法运行Photoshop CS3的解决方法

    巧用MySQL加密函数对Web网站敏感数据进行保护

    MySQL基础知识简介

    Windows7和WinXP下如何实现不输密码自动登录系统的设置方法介绍

    windows 7系统ip地址冲突怎么办?windows 7系统IP地址冲突问题的

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。