SQLite SQLite是一种超轻量级的嵌入式数据库,大小只有几百KB,但是其语法支持标准SQL语法,同时还遵循了数据库的ACID事务,所以学过其他数据库的开发人员都很容易掌握其使用。 sql语法就不介绍了,直接看在android中的使用 SQLiteOpenHelper——封装好的数据库操作辅助类,需重写 重写方法 onCreate:初始化数据库,创建表,添加初始数据 onUpgrade:数据库版本升级时的数据库操作,如备份删除数据库等 常用方法 getReadableDatabase() 获取SQLiteDatabase对象,操作数据库 getWritableDatabase() 在Android开发中,SQLite数据库是应用中存储结构化数据的标准方式。SQLite是一个轻量级、嵌入式的数据库引擎,它的大小只有几百KB,但功能强大,支持标准SQL语法,并且符合ACID(原子性、一致性、隔离性、持久性)事务原则。这使得SQLite成为移动设备上理想的数据库解决方案,尤其是对于Android这样的资源受限环境。 SQLiteOpenHelper是Android提供的一个抽象类,它是SQLite数据库操作的封装助手,主要用来管理数据库的创建和版本升级。开发人员需要继承SQLiteOpenHelper并重写两个关键方法: 1. `onCreate(SQLiteDatabase db)`:当数据库首次创建时,系统会调用此方法。在这里,你可以执行SQL语句来创建表、设置初始数据等。例如,创建一个名为`student`的表,包含`_id`(主键,自动递增)、`name`、`phone`和`gender`四列。 ```java @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE student (_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20), phone VARCHAR(11), gender VARCHAR(2)"); // 添加一条测试数据 db.execSQL("INSERT INTO student VALUES (NULL, ?, ?, ?)", new Object[]{"小黑", "12345678901", "男"}); } ``` 2. `onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)`:当数据库版本升级时,系统会调用此方法。你可以在此处执行必要的数据库修改,如修改表结构、删除旧表、备份数据等。例如,从版本1升级到版本2,可能需要添加新的列或删除不再需要的表。 ```java @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (oldVersion < 2) { // 这里处理版本升级操作 } } ``` 在Android中,可以通过SQLiteOpenHelper的子类实例来获取SQLiteDatabase对象,用于执行数据库操作: - `getWritableDatabase()`:返回一个可读写的SQLiteDatabase对象。在正常情况下,这将创建或打开数据库。如果磁盘空间不足或无法写入,此方法会抛出异常。 - `getReadableDatabase()`:返回一个只读的SQLiteDatabase对象。如果磁盘空间不足或无法写入,它将尝试打开一个只读的数据库,而不是抛出异常。 在实际应用中,Android开发者通常会根据需求选择合适的方法来操作数据库。例如: ```java // 创建数据库对象 DBHelper dbHelper = new DBHelper(this); // 获取可写数据库 SQLiteDatabase dbWrite = dbHelper.getWritableDatabase(); // 获取只读数据库 SQLiteDatabase dbRead = dbHelper.getReadableDatabase(); // 操作数据:插入、更新、查询、删除 ContentValues values = new ContentValues(); values.put("name", "张三"); values.put("phone", "12345678901"); values.put("gender", "男"); // 插入数据 long newRowId = dbWrite.insert("student", null, values); // 查询数据 Cursor cursor = dbRead.query("student", null, null, null, null, null, null); // 遍历结果 while (cursor.moveToNext()) { String name = cursor.getString(cursor.getColumnIndex("name")); // ... } // 更新数据 values.put("phone", "98765432101"); int rowsAffected = dbWrite.update("student", values, "_id=?", new String[]{String.valueOf(newRowId)}); // 删除数据 int deletedRows = dbWrite.delete("student", "_id=?", new String[]{String.valueOf(newRowId)}); ``` 这些基本操作涵盖了大部分数据库交互的需求。不过,更复杂的查询可能需要使用`rawQuery()`方法,执行自定义的SQL语句。同时,为了提高性能和减少内存消耗,通常会使用`CursorLoader`与`LoaderManager`来异步加载和刷新数据。 SQLite在Android开发中扮演着至关重要的角色,为应用提供了高效、可靠的本地数据存储方案。通过SQLiteOpenHelper的使用,可以方便地管理数据库的生命周期,以及在不同版本间进行平滑升级。理解并熟练运用这些知识,对于构建健壮的Android应用程序至关重要。




























- 粉丝: 3
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 大数据最短路径算法在预警工作中的应用研究.docx
- 人工智能这样增进社会公益.docx
- plc全自动洗衣机的控制设计.doc
- 蒙赛尔服饰有限公司项目管理招标书.doc
- 大数据时代信息与计算科学专业数据分析人才培养探析高.docx
- 华科电气大四matlab大作业w.docx
- 科学与工程计算软件项目可行性报告.docx
- 计算机技术在电子商务发展中的地位.docx
- 届信息管理电子商务.doc
- 软件工程—复试总结分析.doc
- 学生学籍管理系统(数据库系统)(SQL)52295.doc
- MS-C51系列单片机的各种资料.doc
- 答题系统的题库编辑工具-WPF-电脑桌面程序-项目源码
- 学习《统计学习方法》与《机器学习》的笔记及代码实现
- 步步为营的项目管理DOC.doc
- Ku-Ka双频段微波网络设计方案.doc



评论0