Android如何操作SQLite数据库文件 (android访问sqlite数据库文件)
SQLite是一款嵌入式关系数据库,可以在无需配置或支持服务器的情况下在移动设备和桌面应用中使用。在Android开发中,SQLite是最常用的数据库,由于其占用空间较小、性能稳定,备受开发者青睐。本文将介绍在Android中如何操作SQLite数据库文件,并将详细说明基本的CRUD(Create, Read, Update, Delete)操作。
1.创建SQLite数据库
在Android中创建SQLite数据库通常需要三个步骤:
a.定义数据库的结构
b.创建SQLiteOpenHelper的子类
c.通过SQLiteOpenHelper的getWritableDatabase()或getReadableDatabase()方法创建或打开数据库
a.定义数据库的结构
在定义数据库的结构之前,需要先创建一个Java类用于封装数据库结构的模型,例如Student类。
public class Student {
private int id;
private String name;
private int age;
private String address;
public Student() {
}
public Student(int id, String name, int age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
//getters and setters
}
接下来,需要创建一个继承自SQLiteOpenHelper的子类,该类在创建和更新数据库时都将被调用。
public class DatabaseHelper extends SQLiteOpenHelper {
// 定义数据库名
private static String DATABASE_NAME = “student.db”;
// 定义数据库版本号
private static int DATABASE_VERSION = 1;
// 定义表名
private static String TABLE_NAME = “student”;
// 定义表中字段名
private static String ID = “id”;
private static String NAME = “name”;
private static String AGE = “age”;
private static String ADDRESS = “address”;
private static String CREATE_TABLE = “create table “
+ TABLE_NAME + “(” + ID
+ ” integer primary key autoincrement, ” + NAME
+ ” text, ” + AGE + ” integer, ” + ADDRESS
+ ” text)”;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(“DROP TABLE IF EXISTS ” + TABLE_NAME);
onCreate(db);
}
}
在onCreate()方法内,需要执行SQL语句创建数据库表。本例中,我们创建了一个名为student的表,其中包含四个字段:id、name、age、address。
b.创建SQLiteOpenHelper的子类
创建好DatabaseHelper的子类后,在Activity中使用该类创建或打开数据库。
DatabaseHelper mDatabaseHelper = new DatabaseHelper(this);
SQLiteDatabase db = mDatabaseHelper.getWritableDatabase();
通过调用getWritableDatabase()方法,可以获取到一个可用的SQLiteDatabase对象,以便后续数据库操作。如果想只读数据库内容,也可以调用getReadableDatabase()方法获取到一个只读的SQLiteDatabase对象。
2.插入数据
插入数据是CRUD操作中最基本的操作之一。在SQLite中,插入一条数据需要使用insert()方法。
SQLiteDatabase db = mDatabaseHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(“name”, “张三”);
values.put(“age”, 20);
values.put(“address”, “北京市”);
long result = db.insert(“student”, null, values);
if (result == -1) {
Log.d(TAG, “插入数据失败!”);
} else {
Log.d(TAG, “插入数据成功!”);
}
在insert()方法中,之一个参数表示表名,第二个参数表示如果为空时的默认值,第三个参数是与表中字段对应的ContentValues对象,该对象存储要插入的数据。如果插入数据失败,返回值为-1,插入数据成功,返回值为插入的数据的行号。
3.查询数据
在SQLite中,查询操作需要使用query()方法。
SQLiteDatabase db = mDatabaseHelper.getReadableDatabase();
String[] columns = { “id”, “name”, “age”, “address” };
Cursor cursor = db.query(“student”, columns, null, null, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
do {
int id = cursor.getInt(cursor.getColumnIndex(“id”));
String name = cursor.getString(cursor.getColumnIndex(“name”));
int age = cursor.getInt(cursor.getColumnIndex(“age”));
String address = cursor.getString(cursor.getColumnIndex(“address”));
Student student = new Student(id, name, age, address);
Log.d(TAG, student.toString());
} while (cursor.moveToNext());
cursor.close();
}
在query()方法中,之一个参数是表名,第二个参数是要查询的字段名,第三个参数是WHERE子句,第四个参数是WHERE子句对应的参数,第五个参数是GROUP BY子句,第六个参数是HAVING子句,第七个参数是ORDER BY子句。如果没有条件,可以将其中的参数设置为null。查询数据后,需要将Cursor对象逐行读取,用getInt()、getString()等方法获取每一行数据,最后将Cursor对象关闭以释放资源。
4.更新数据
在SQLite中,更新操作需要使用update()方法。
SQLiteDatabase db = mDatabaseHelper.getWritableDatabase();
String whereClause = “id=?”;
String[] whereArgs = { String.valueOf(1) };
ContentValues values = new ContentValues();
values.put(“name”, “李四”);
values.put(“age”, 21);
values.put(“address”, “上海市”);
long result = db.update(“student”, values, whereClause, whereArgs);
if (res == -1) {
Log.d(TAG, “更新数据失败!”);
} else {
Log.d(TAG, “更新数据成功!”);
}
在update()方法中,之一个参数是表名,第二个参数是与表中字段对应的ContentValues对象,用于传递要更新的数据,第三个参数是WHERE子句,因此需要设置更新哪些数据,第四个参数是WHERE子句对应的参数,用于指定哪些数据需要更新。
5.删除数据
在SQLite中,删除数据需要使用delete()方法。
SQLiteDatabase db = mDatabaseHelper.getWritableDatabase();
int result = db.delete(“student”, “id=?”, new String[] { String.valueOf(1) });
if (res == -1) {
Log.d(TAG, “删除数据失败!”);
} else {
Log.d(TAG, “删除数据成功!”);
}
在delete()方法中,之一个参数是表名,第二个参数是WHERE子句,因为需要删除哪些数据,第三个参数是WHERE子句对应的参数,用于指定需要删除的数据。如果删除成功,返回值表示成功删除的行数,如果删除失败,返回-1。
SQLite在Android开发中扮演着非常重要的角色,掌握SQLite的基本操作可以帮助开发者更好地处理数据。本文介绍了在Android中创建SQLite数据库,以及CRUD操作的基本方法,包括插入、查询、更新和删除数据等。通过这些方法的学习和实践,开发者可以更熟练地使用SQLite,更好地管理应用中的数据,进一步提升开发效率。