/********************************************************************************************
* author:conowen@大钟
* E-mail:conowen@hotmail.com
* http://blog.csdn.net/conowen
* 注:本文为原创,仅作为学习交流使用,转载请标明作者及出处。
********************************************************************************************/
1、SQLiteOpenHelper介绍
通过上篇博文,http://blog.csdn.net/conowen/article/details/7276417,了解了SQLite数据库的相关操作方法,但是一般在实际开发中,为了更加方便地管理、维护、升级数据库,需要通过继承SQLiteOpenHelper类来管理SQLite数据库。
关于SQLiteOpenHelper的官方说明如下:
A helper class to manage database creation and version management.
You create a subclass implementing onCreate(SQLiteDatabase)
,onUpgrade(SQLiteDatabase,
int, int)
and optionallyonOpen(SQLiteDatabase)
, and this class takes care of opening
the database if it exists, creating it if it does not, and upgrading it as necessary. Transactions are used to make sure the database is always in a sensible state.
This class makes it easy for ContentProvider
implementations to defer opening and upgrading the database until first use, to avoid blocking application
startup with long-running database upgrades.
For an example, see the NotePadProvider class in the NotePad sample application, in thesamples/ directory of the SDK.
简单翻译:SQLiteOpenHelper可以创建数据库,和管理数据库的版本。
在继承SQLiteOpenHelper的类(extends
SQLiteOpenHelper
)里面,通过
复写onCreate(SQLiteDatabase)
,onUpgrade(SQLiteDatabase,
int, int)
和onOpen(SQLiteDatabase)
(可选)来操作数据库。
2、SQLiteOpenHelper()的具体用法
创建一个新的class如下所示,onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)方法会被自动添加。
方法详解
Create a helper object to create, open, and/or manage a database. This method always returns very quickly. The database is not actually created or opened until one ofgetWritableDatabase()
orgetReadableDatabase()
is called.
Parameters
context
to use to open or create the database |
name
of the database file, or null for an in-memory database |
factory
to use for creating cursor objects, or null for the default |
version
number of the database (starting at 1); if the database is older, onUpgrade(SQLiteDatabase, int, int)
will be used to upgrade the database; if the database is newer, onDowngrade(SQLiteDatabase, int, int)
will be used to downgrade the database |
参数简述:
name————表示数据库文件名(不包括文件路径),SQLiteOpenHelper类会根据这个文件名来创建数据库文件。
version————表示数据库的版本号。如果当前传入的数据库版本号比上一次创建的版本高,SQLiteOpenHelper就会调用onUpgrade()方法。
以上是SQLiteOpenHelper 的构造函数,当数据库不存在时,
就会创建数据库,然后打开数据库(过程已经被封装起来了),再调用onCreate (SQLiteDatabase db)方法来执行创建表之类的操作。当数据库存在时,SQLiteOpenHelper 就不会调用onCreate (SQLiteDatabase db)方法了,它会检测版本号,若传入的版本号高于当前的,就会执行onUpgrade()方法来更新数据库和版本号。
3、SQLiteOpenHelper的两个主要方法
3.1、onCreate方法
Called when the database is created for the first time. This is where the creation of tables and the initial population of the tables should happen.
Parameters
3.2、onUpgrade方法
Called when the database needs to be upgraded. The implementation should use this method to drop tables, add tables, or do anything else it needs to upgrade to the new schema version.
The SQLite ALTER TABLE documentation can be found
here. If you add new columns you can use ALTER TABLE to insert them into a live table. If you rename or remove columns you can use ALTER TABLE to rename the old table, then create the new table and then populate the new table with the contents of the old
table.
Parameters
db
The database. |
oldVersion
The old database version. |
newVersion
The new database version. |
更新数据库,包括删除表,添加表等各种操作。若版本是第一版,也就是刚刚建立数据库,onUpgrade()方法里面就不用写东西,因为第一版数据库何来更新之说,以后发布的版本,数据库更新的话,可以在onUpgrade()方法添加各种更新的操作。
4、注意事项
创建完SQLiteOpenHelper 类之后,在主activity里面就可以通过SQLiteOpenHelper.getWritableDatabase()或者getReadableDatabase()方法来获取在SQLiteOpenHelper 类里面创建的数据库实例。(也就是说只有调用这两种方法才真正地实例化数据库)
getWritableDatabase() 方法————以读写方式打开数据库,如果数据库所在磁盘空间满了,而使用的又是getWritableDatabase() 方法就会出错。
因为此时数据库就只能读而不能写,
getReadableDatabase()方法————则是先以读写方式打开数据库,如果数据库的磁盘空间满了,就会打开失败,但是当打开失败后会继续尝试以只读
方式打开数据库。而不会报错
=========================================================================================================
下面演示一个以SQLite的数据库为adapter的listview例子(也可以当做通讯录小工具)
效果图如下
main.xml
ListView的布局文件layout.xml
分享到:
相关推荐
其次,SQlite数据库是Android中用于本地数据存储的主要工具。在记事本应用中,每个笔记都可能被表示为数据库中的一个记录,包含标题和内容。开发者需要创建一个SQLite数据库,定义一个笔记表,并实现相应的增删改查...
开发者可以从中学习到如何使用`SQLiteOpenHelper`类来管理数据库版本,以及如何使用`ContentProvider`进行数据操作。 2. **ContentProvider**: ContentProvider是Android四大组件之一,负责数据的共享和交换。...
便签应用通常会用到SQLite数据库来持久化用户的笔记内容。源码中会包含对数据库操作的类,如SQLiteOpenHelper,用于创建、升级和管理数据库,以及SQL查询的执行。 5. **UI设计和布局**: Android应用的界面由XML...
3. **数据存储**:小米便签可能使用SQLite数据库来保存用户的笔记内容。源码中会有涉及ContentProvider、SQLiteOpenHelper的相关代码,这些是Android中存储结构化数据的标准方式。此外,也可能使用SharedPreferences...
4. **数据库存储**:在Android应用中,数据通常存储在SQLite数据库中。因此,源码中可能包含SQLiteOpenHelper的子类,用于数据库的创建、升级和CRUD操作。 5. **用户界面(UI)**:根据文件名中的"1_121203125018_1...
Android使用SQLite数据库管理系统,开发者需要创建数据库表并提供增删查改的接口。 4. **适配器(Adapter)**:将数据库中的记事数据绑定到UI列表,使得数据和视图之间能正确交互。 5. **通知和权限**:如果应用支持...
在Android中,我们通常通过继承`SQLiteOpenHelper`类来创建和管理数据库。这个类提供了一些关键方法,如`onCreate()`用于首次创建数据库时执行的SQL语句,`onUpgrade()`则在数据库版本升级时调用。 3. **表的创建*...
《Android NotePad便签应用详解——为毕业设计提供灵感与实践》 在IT计算机领域,尤其是在移动应用开发中,Android平台占据了重要的地位。对于学生来说,Android应用的毕业设计不仅能够展示编程技能,还能深入理解...
《Android学习笔记——Java编程基础与实战应用》 在Android开发领域,Java语言扮演着至关重要的角色。Android Studio是Google官方推荐的开发环境,而它主要支持的就是Java语言。本篇将深入探讨Java编程基础以及如何...
- 数据存储:Android提供SQLite数据库来存储笔记。`SQLiteOpenHelper`是用于创建和升级数据库的辅助类,而`SQLiteCursor`用于查询数据。 - `EditText`:用户输入文本的UI组件,用于编辑笔记内容。 - 事务处理:在...
- **SQLite数据库**:Android原生的轻量级数据库系统,用于持久化存储数据。在这个应用中,可能会用到SQLiteOpenHelper来创建和管理数据库,以及ContentProvider来封装数据库操作,使得数据共享更安全。 5. **生命...
本篇文章将深入探讨如何使用Android SDK,结合ListView、Adapter以及SQLite数据库,开发一款具备搜索、删除和添加功能的备忘录应用——"Memoire"。 一、ListView与Adapter的运用 ListView是Android中常用的一个...
在应用中,笔记数据通常会存储在SQLite数据库中。SQLite是Android内置的轻量级数据库,适用于本地数据存储。开发者需要定义SQLiteOpenHelper子类,创建和升级数据库,并使用SQL语句进行数据操作。 4. **UI设计** ...