Android数据库存储指南:轻松保存数据到你的应用程序中 (android 保存到数据库中)
在开发Android应用程序时,我们经常需要将数据进行存储并在需要时读取。存储数据的方式有多种,其中比较常见的是使用数据库。本文将介绍如何在Android应用程序中使用数据库存储数据。
1. SQLite数据库简介
SQLite是一种轻量级的数据库引擎,可以嵌入到应用程序中,非常适合移动设备应用程序的本地数据存储。SQLite支持的语法和MySQL相似,可以通过Java的API操作SQLite数据库。
2. 创建数据库
在Android应用程序中创建数据库需要继承Android提供的SQLiteOpenHelper类。SQLiteOpenHelper类提供了两个回调函数,分别是onCreate()和onUpgrade()。onCreate()函数在之一次创建数据库时调用,onUpgrade()函数在数据库版本更新时调用。实际上,在SQLiteOpenHelper的构造函数中会检查数据库版本,如果检测到数据库版本不一致,就会调用onUpgrade()函数。
下面是一个简单的创建数据库的示例:
“`java
public class SQLiteDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = “mydatabase.db”;
private static final int DATABASE_VERSION = 1;
private static final String CREATE_TABLE_SQL = “CREATE TABLE ” +
“mytable (_id INTEGER PRIMARY KEY, name TEXT)”;
public SQLiteDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_SQL);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//数据库版本更新时执行的操作
}
}
“`
在这个示例中,我们创建了一个名为”mydatabase.db”的数据库,并且指定了版本号为1。CREATE_TABLE_SQL定义了要创建的表的结构。在onCreate()函数中执行创建表的操作,当之一次创建数据库时调用。
3. 数据存储
在创建好数据库之后,就可以往数据库中存储数据了。Android提供了一个类似于JDBC的API,可以执行SQL语句,插入或删除数据。下面是一个插入数据的示例:
“`java
SQLiteDatabaseHelper helper = new SQLiteDatabaseHelper(context);
SQLiteDatabase db = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(“name”, “John Doe”);
long id = db.insert(“mytable”, null, values);
“`
在这个示例中,我们首先创建了一个SQLiteDatabaseHelper实例,然后调用getWritableDatabase()函数获取可写的数据库对象。接着,我们创建了一个ContentValues对象,设置要插入的数据,最后调用insert()函数将数据插入到表中,并返回插入的行的id。
读取数据也是非常简单的,可以使用rawQuery()函数执行SQL语句并返回一个Cursor对象,通过遍历Cursor对象获取结果集。下面是一个读取数据的示例:
“`java
SQLiteDatabaseHelper helper = new SQLiteDatabaseHelper(context);
SQLiteDatabase db = helper.getReadableDatabase();
String[] projection = {“_id”, “name”};
String selection = “name = ?”;
String[] selectionArgs = {“John Doe”};
String sortOrder = “_id DESC”;
Cursor cursor = db.query(“mytable”, projection,
selection, selectionArgs, null, null, sortOrder);
if (cursor.moveToFirst()) {
do {
long id = cursor.getLong(cursor.getColumnIndex(“_id”));
String name = cursor.getString(cursor.getColumnIndex(“name”));
//处理数据…
} while (cursor.moveToNext());
}
“`
在这个示例中,我们首先创建了一个SQLiteDatabaseHelper实例,然后调用getReadableDatabase()函数获取只读的数据库对象。接着,我们指定了要查询的列和查询条件,指定了结果排序,最后调用query()函数执行查询并返回结果集。通过遍历Cursor对象获取结果集。需要注意的是,Cursor对象需要在使用完毕之后关闭,否则会导致内存泄漏。
4. 数据库版本升级
在应用程序中增加或删除表或者修改表结构时,需要更新数据库版本。数据库版本更新时会调用SQLiteOpenHelper的onUpgrade()函数。下面是一个数据库版本升级的示例:
“`java
public class SQLiteDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = “mydatabase.db”;
private static final int OLD_DATABASE_VERSION = 1;
private static final int NEW_DATABASE_VERSION = 2;
private static final String CREATE_TABLE_SQL = “CREATE TABLE ” +
“mytable (_id INTEGER PRIMARY KEY, name TEXT, age INTEGER)”;
public SQLiteDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, NEW_DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_SQL);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion == OLD_DATABASE_VERSION) {
db.execSQL(“ALTER TABLE mytable ADD COLUMN age INTEGER”);
}
}
}
“`
在这个示例中,我们修改了数据库版本号为2,并且在onUpgrade()函数中添加了一个age列。在应用程序升级时,如果数据版本从1升级到2,就会调用这个函数。onUpgrade()函数中调用了ALTER TABLE语句来修改表结构。
5.
本文介绍了在Android应用程序中使用SQLite数据库的方法,包括数据库创建、数据存储、数据读取和数据库版本升级。SQLite是一种轻量级的数据库引擎,非常适合移动设备应用程序的本地数据存储。在实际应用程序中,还可以使用ORM框架来简化数据库操作。